Salut,
Comme je n’aime pas trop les 15 appels SSH, j’ai fais chez moi la version MQTT pour récupérer les infos.
Si ça peut intéresser des gens:
Côté Proxmox :
- Un script Python qui récupère les valeurs, les colle dans un JSON et les envoie en MQTT
- Une entrée dans la cron, pour que ça tourne toutes les minutes.
Côté HA:
- Un Sensor MQTT pour chaque valeur récupérée.
Le script python ressemble à ça:
import os
import psutil
import paho.mqtt.client as mqtt
def mqtt_pub(topic, value):
mqttc = mqtt.Client(client_id="ProxOneStats")
mqttc.username_pw_set("xxxxxx", "xxxxxx")
mqttc.connect("192.168.1.xxxx", 1883, 60)
mqttc.publish(topic,value, qos=0, retain=True)
mqttc.disconnect()
stream = os.popen('/usr/sbin/hddtemp --numeric /dev/sda')
ssd1_temp = stream.read()
stream = os.popen('/usr/sbin/hddtemp --numeric /dev/sdb')
ssd2_temp = stream.read()
stream = os.popen('/usr/sbin/hddtemp --numeric /dev/sdc')
ssd3_temp = stream.read()
stream = os.popen('/usr/sbin/hddtemp --numeric /dev/sdd')
ssd4_temp = stream.read()
temps = psutil.sensors_temperatures()
fans = psutil.sensors_fans()
myjson="{\"ssd_nvme\": " + str(temps['nvme'][0].current) + ",\"cpu_temp\": " + str(temps['coretemp'][0].current) + ",\"cpu_fan\": " + str(fans['nct6798'][1].current) + ",\"ssd1_temp\": " + ssd1_temp + ",\"ssd2_temp\": " + ssd2_temp + ",\"ssd3_temp\": " + ssd3_temp + ",\"ssd4_temp\": " + ssd4_temp + ",\"cpu_percent\": " + str(psutil.cpu_percent(2)) + ",\"memory_percent\":" + str(psutil.virtual_memory()[2]) + ",\"media_free\": " + str(psutil.disk_usage('/mnt/pve/media/')[3]) + ",\"mytank_free\": " + str(psutil.disk_usage('/mytank/')[3]) + "}"
mqtt_pub('monitoring/proxone', myjson)
Le message en MQTT ça ressemble à ça:
{
"ssd_nvme": 29.85,
"cpu_temp": 22,
"cpu_fan": 1141,
"ssd1_temp": 21,
"ssd2_temp": 19,
"ssd3_temp": 20,
"ssd4_temp": 20,
"cpu_percent": 0.2,
"memory_percent": 51.7,
"media_free": 49.8,
"mytank_free": 0
}
Un sensor MQTT dans HA ça ressemble à ça:
- name: "Serveur Ram"
state_topic: "monitoring/proxone"
unit_of_measurement: "%"
value_template: "{{ value_json.memory_percent }}"