За допомогою одного з трьох способів ви зможете передавати інформацію про температуру CPU або інші дані с сервера Proxmox в Home Assistant

Для початку рекомендую запустити команду sensors.

Якщо команда sensors не запускається спробуйте встановити пакет lm-sensors і запустити sensors-detect.
sudo apt-get install lm-sensors
sudo sensors-detect
sensors

Команди, що вказані нижче допоможуть вам знайти всі сенсори, подивитись на типи сенсорів і отримати значення сенсорів.

cat /sys/class/thermal/thermal_zone*/type
ls /sys/class/thermal/thermal_zone*/type

cat /sys/class/thermal/thermal_zone*/temp

ls  /sys/class/hwmon/hwmon*/name
cat /sys/class/hwmon/hwmon*/temp1_input

sudo apt install nvme-cli
sudo nvme smart-log /dev/nvme0

Спосіб 1. SSH

Описано в статті https://community.home-assistant.io/t/how-to-monitor-proxmox-cpu-temp/245050
За допомогою цього способу можна отримати доступ до іншого хоста на linux, керувати ним, отримувати дані з сенсорів.
Команди виконуються в терміналі Home Assistant

ssh-keygen  # генерація публічного і приватного ключа
ssh-copy-id user_proxmox@IP_address_proxmox #передати публічний ключ на інший хост

ssh user_proxmox@IP_address_proxmox #зайти за допомогою ssh на інший хост
exit  #вийти з іншого хосту

cp /root/.ssh/id_rsa /config  #скопіювати приватний ключ в каталог /config. 

Створити сенсори в Home Assistant.

sensor:
  - platform: command_line
    name: 'Proxmox CPU Temp'
    command: "ssh -i /config/id_rsa -o StrictHostKeyChecking=no root@192.168.1.90 -t 'cat /sys/class/thermal/thermal_zone1/temp'"
    unit_of_measurement: '°C'
    scan_interval: 300
    value_template: '{{ (value | multiply(0.001)) | round(0) }}'
  - platform: command_line
    name: 'Proxmox NVME Temp'
    command: "ssh -i /config/id_rsa -o StrictHostKeyChecking=no root@192.168.1.90 -t 'cat /sys/class/hwmon/hwmon1/temp'"
    unit_of_measurement: '°C'
    scan_interval: 300
    value_template: '{{ (value | multiply(0.001)) | round(0) }}'

За допогомою цієї команди можна виключати примусово сервер proxmox.

shell_command:
shutdown_server: “ssh -i /config/id_rsa -o StrictHostKeyChecking=no root@192.168.1.90 -t ‘shutdown 60′”

Спосіб 2. Python + MQTT

Спосіб описано в статті – https://community.home-assistant.io/t/intel-nuc-proxmox-cpu-temperature-monitor-with-python-mqtt/194236

Встановити python3, pip та paho-mqtt

apt install python3 python3-pip
pip install paho-mqtt

Створити файл з будь-якою назвою та розширенням .py

nano cpu_temp.py

#!/usr/bin/env python3

import paho.mqtt.client as mqtt
import subprocess
from requests import post

# Creating client
MQTT_IP = "192.168.1.47"  # Вказати ip адресу mqtt брокера
MQTT_PORT = "1883"
USER_MQ = "proxmox"   # Вказати логін для доступу до mqtt брокера
PW_MQ = "proxmox"      # Вказати пароль для доступу до mqtt брокера

# Retrieving temperatures from sensor
cpu_temp = subprocess.check_output("cat /sys/class/thermal/thermal_zone1/temp", shell=True)   # змініть номер термальної зони
nvme_temp = subprocess.check_output("cat /sys/class/hwmon/hwmon1/temp1_input", shell=True)    # якщо у вас нема nvme - видаліть

# Topics to publih for MQTT
TOPIC_TO_PUBLISH1 = "homeassistant/sensor/proxmox_system/cpu_temp"    # назву топыку можна міняти на будь-яку
TOPIC_TO_PUBLISH2 = "homeassistant/sensor/proxmox_system/nvme_temp"   # якщо у вас нема nvme - видаліть

client = mqtt.Client(client_id='VM_system')

# Connect to broker
client.username_pw_set(USER_MQ,PW_MQ)
client.connect(MQTT_IP)

# Publish a message with topic
client.publish(TOPIC_TO_PUBLISH1,cpu_temp)
client.publish(TOPIC_TO_PUBLISH2,nvme_temp)   # якщо у вас нема nvme - видаліть

# Run a loop
client.loop()

Після перевірки скрипта потрібно додати його виконання в cron.

crontab -e

* * * * * /root/cpu_temp.py >/dev/null 2>&1
* * * * * (sleep 30 ; /root/cpu_temp.py) >/dev/null 2>&1

І тепер можна створити сенсор в Home Assistant ( в configuration.yaml).

mqtt:
  sensor:
    - name: proxmox_cpu_temp
      state_topic: "homeassistant/sensor/proxmox_system/cpu_temp"
      unit_of_measurement: "°C"
      value_template: "{{ (value | multiply(0.001)) | round(0) }}"
    - name: proxmox_nvme_temp
      state_topic: "homeassistant/sensor/proxmox_system/nvme_temp"
      unit_of_measurement: "°C"
      value_template: "{{ (value | multiply(0.001)) | round(0) }}"

Спосіб 3. API Home Assistant + bash

Спосіб описано в статті – https://community.home-assistant.io/t/intel-nuc-proxmox-cpu-temperature-monitor-with-python-mqtt/194236 в самому низу.

Створити файл скрипта:

nano /root/pve_temp

Отримати в Home Assistant довгостроковий токен. Помістити текст скрипта з виправленими токенами, адресами, термальними зонами та топіками.

#!/bin/bash

ha_url="http://192.168.1.47:8123/api/services/mqtt/publish"
ha_content="Content-Type: application/json"
ha_authorization="Authorization: Bearer ПРОПИСАТИ-LONG_TERM_TOKEN"

cputemp=$( cat /sys/class/thermal/thermal_zone1/temp )
curl -X POST -s -H "${ha_content}" -H "${ha_authorization}" --url "${ha_url}" -o /dev/null \
  -d '{"payload": "'"${cputemp}"'", "topic": "pve/cpu_temp", "retain": "True"}' 
  
nvmetemp=$( cat /sys/class/hwmon/hwmon1/temp1_input )
curl -X POST -s -H "${ha_content}" -H "${ha_authorization}" --url "${ha_url}" -o /dev/null \
  -d '{"payload": "'"${nvmetemp}"'", "topic": "pve/nvme_temp", "retain": "True"}' 

ha_authorization=''

Після перевірки скрипта потрібно додати його виконання в cron.

crontab -e

* * * * * /root/pve_temp >/dev/null 2>&1
* * * * * (sleep 30 ; /root/pve_temp) >/dev/null 2>&1

І тепер можна створити сенсор в Home Assistant ( в configuration.yaml).

mqtt:
  sensor:
    - name: proxmox_cpu_temp
      state_topic: "pve/cpu_temp"
      unit_of_measurement: "°C"
      value_template: "{{ (value | multiply(0.001)) | round(0) }}"
    - name: proxmox_nvme_temp
      state_topic: "pve/nvme_temp"
      unit_of_measurement: "°C"
      value_template: "{{ (value | multiply(0.001)) | round(0) }}"
Категорії: Без категорії