За допомогою одного з трьох способів ви зможете передавати інформацію про температуру 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) }}"