Nisso não consigo ajudar, mas deixo-te aqui todos os passos para usares o script com mqtt.
Pré-requisitos:
- MQTT Broker já instalado e configurado no HA
Na consola do Proxmox (UI Shell ou Putty) executar os seguintes comandos:
apt update
apt install mosquitto-clients
cd /root
nano mqtt_config.sh
Colar o seguinte código alterando o IP, a porta, o user e a pass, pelos do vosso MQTT Broker:
#!/bin/bash
HOST=192.168.1.123
PORT=1883
USER=utilizador
PASS=palavrapasse
SENSOR='proxmox'
SERVER='Proxmox'
#TEMP
mosquitto_pub -h $HOST -p $PORT -t 'homeassistant/sensor/'$SENSOR'/Temp/config' -m "{\"name\":\"$SERVER Temperature\", \"icon\":\"mdi:thermometer\", \"unit_of_measurement\": \"ยบC\", \"state_topic\":\"home/servers/$SENSOR/state\", \"value_template\": \"{{ value_json.temp }}\"}" -u $USER -P $PASS -r
#LOAD
mosquitto_pub -h $HOST -p $PORT -t 'homeassistant/sensor/'$SENSOR'/Load/config' -m "{\"name\":\"$SERVER Load 1M\", \"icon\":\"mdi:cpu-64-bit\", \"state_topic\":\"home/servers/$SENSOR/state\", \"value_template\": \"{{ value_json.load }}\"}" -u $USER -P $PASS -r
#MEM
mosquitto_pub -h $HOST -p $PORT -t 'homeassistant/sensor/'$SENSOR'/Mem/config' -m "{\"name\":\"$SERVER Memory\", \"icon\":\"mdi:memory\", \"unit_of_measurement\": \"%\", \"state_topic\":\"home/servers/$SENSOR/state\", \"value_template\": \"{{ value_json.mem }}\" }" -u $USER -P $PASS -r
#LAST_BOOT
mosquitto_pub -h $HOST -p $PORT -t 'homeassistant/sensor/'$SENSOR'/LastBoot/config' -m "{\"name\":\"$SERVER Last Boot\", \"device_class\":\"timestamp\", \"icon\":\"mdi:clock\", \"state_topic\":\"home/servers/$SENSOR/state\", \"value_template\":\"{{ value_json.last_boot }}\" }" -u $USER -P $PASS -r
#UPDATES AVAILABLE
mosquitto_pub -h $HOST -p $PORT -t 'homeassistant/sensor/'$SENSOR'/AvailableUpdates/config' -m "{\"name\":\"$SERVER Available Updates\", \"icon\":\"mdi:package-variant\", \"state_topic\":\"home/servers/$SENSOR/state\", \"value_template\":\"{{ value_json.updates_available }}\" }" -u $USER -P $PASS -r
exit
Clicar em:
CTRL+X
Y
Enter
Já temos o nosso script que irá criar os sensores no HA, falta o script para enviar os valores para os sensores.
nano mqtt_status.sh
Colar o seguinte código, substituindo igualmente o IP, porta, user e pass:
#!/bin/bash
HOST=192.168.1.123
PORT=1883
USER=utilizador
PASS=palavrapasse
SENSOR='proxmox'
LOAD=$(uptime | awk '{print $(NF-2)}' | head -c -2)
MEMTOTAL=$(free | grep Mem | awk {'print $2'})
MEMUSED=$(free | grep Mem | awk {'print $3'})
MEM=$(awk "BEGIN {printf \"%.1f\n\", $MEMUSED*100/$MEMTOTAL}")
UPTIME=$(uptime -s)
LAST_BOOT=$(date -d"$UPTIME" +%FT%T+00:00)
NUMBER_UPDATES=$(apt-get -s upgrade | grep -Po "^[[:digit:]]+ (?=upgraded)")
#Temperatura
TEMPMIL=$(cat /sys/class/thermal/thermal_zone0/temp)
TEMP=$(awk "BEGIN {printf $TEMPMIL/1000}")
PAYLOAD="{\"load\":$LOAD, \"mem\":$MEM, \"updates_available\":$NUMBER_UPDATES, \"last_boot\":\"$LAST_BOOT\", \"temp\":\"$TEMP\"}"
echo $PAYLOAD
#STATE
mosquitto_pub -h $HOST -p $PORT -t 'home/servers/'$SENSOR'/state' -m "$PAYLOAD" -u $USER -P $PASS
exit
Clicar em:
CTRL+X
Y
Enter
Neste momento já temos os 2 scripts necessários, vamos dar permissões de execução e criar as tasks no Cron
chmod +x mqtt_config.sh
chmod +x mqtt_status.sh
crontab -e
Se aparecer para escolher um editor de texto, escolham o ‘nano’.
No final do ficheiro cron vamos colar as seguintes linhas:
0 * * * * /root/mqtt_config.sh #corre a todas as horas
* * * * * /root/mqtt_status.sh #corre de 15 em 15 segundos
* * * * * sleep 15 && /root/mqtt_status.sh
* * * * * sleep 30 && /root/mqtt_status.sh
* * * * * sleep 45 && /root/mqtt_status.sh
Clicar em:
CTRL+X
Y
Enter
E está pronto.
O script mqtt_config.sh só corre de hora em hora, então podemos ter de esperar um bocado até vermos os sensores no HA
Ou podemos correr o script manualmente
sh mqtt_config.sh && sh mqtt_status.sh
Se tudo correu bem, quando agora forem ao vosso HA devem ter 5 novos sensores que são atualizados de 15 em 15 segundos.
Como disse anteriormente, shellscript não é o meu forte e tenho noção que provavelmente isto ficaria melhor feito em python, não executando de 15 em 15 segs mas sim sempre que houvesse uma alteração nos valores.
Foi a solução que arranjei e já utilizo há bastante tempo sem problemas.
Espero que ajude.
Alguma dúvida, disponham.