Sensor de temperatura da CPU para o Home Assistant usando Proxmox!

Este tutorial foi feito porque executo a o meu Home Assistant em uma maquina virtual no Proxmox e as formas padrões de obter dados da maquina atraves do Home Assistant só obtem os dados da maquina virtual e não do Host, por isso fiz esse tutorial. Com esse metodo você vai ser capaz de obter os dados de temperatura, uso de cpu e uso de ram diretamente do servidor Proxmox.

Os comandos a seguir são executados no complemento Terminal & SSH do Home Assistant

Este comando é usado para gerar a chave SSH na maquina virtual do Home Assistant:

ssh-keygen

Este comando envia a chave ssh para o servidor Proxmox:

ssh-copy-id root@ip_do_proxmox

**após esse comando será solicitado a sua senha de root do proxmox, preencha como solicitado

Cria um diretorio com o nome .ssh na pasta config do Home Asistant:

mkdir -p /config/.ssh

Copia o arquivo id_rsa do diretorio /root do Proxmox para o diretorio que acabamos de criar na pasta config do Home Assistant.

cp /root/.ssh/id_rsa /config/.ssh/id_rsa

Comando para testar se está OK, importante usar o argumento -i para o proxmo não pedir a senha root

ssh -i /config/.ssh/id_rsa root@ip_do_proxmox

Sair da conexão

exit

O proximo passo é criar o sensor no Home Assistant para obter estes dados e mostrar no Lovelace

sensor:
#Temperatura CPU

  - platform: command_line
    name: 'Temp CPU Mini PC'
    command: "ssh -i /config/id_rsa -o StrictHostKeyChecking=no root@ip_do_proxmox -t 'cat /sys/class/thermal/thermal_zone0/temp'"
    unit_of_measurement: '°C'
    scan_interval: 5
    value_template: '{{ (value | multiply(0.001)) | round(0) }}'

#Uso CPU

 - platform: command_line
   name: 'Proxmox CPU'
   command: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa root@10.20.30.200 top -d 0.5 -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{printf ("%.0f\n",$2 + $4)}'
   unit_of_measurement: '%'

#Uso RAM

  - platform: command_line
    name: 'Proxmox RAM'
    command: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/.ssh/id_rsa user@ip free -m | grep Mem | awk '{printf ("%.0f\n",$3*100/$2)}'
    unit_of_measurement: '%'

Fonte: https://github.com/rafamerten/projetos/blob/main/temp_cpu_proxmox_home_assistant.txt

3 Likes

Parabéns pela iniciativa em compartilhar!

1 Like

Vlw pelo tutorial, mas aqui nunca funciona. :frowning: Já faz algum tempo q venho pesquisando e tentando fazer esse sensor funcionar, mas nunca dá certo…

Fiz tudo como indicado aí no tutorial, mas tive q lidar com vários erros/empecilhos, desde copiar/colar no ssh do HA (isso é o de menos kkkk), até na parte de gerar a key (q pede pra substituir, pede senha e outras coisas), e a última parte q não devia pedir senha root, mesmo usando o argumento -i.

Sinceramente eu desisto de fazer isso funcionar aqui kkkkk dor de cabeça dms!

Mas o tutorial deve ajudar outras pessoas, meu proxmox q deve estar virado no jiraya :joy:

Screenshot_2-t

Aqui uso uma abordagem um pouco diferente, incluí um script no agendamento cron do proxmox que realiza a atualização do sensor de temperatura usando a API do Home Assistant.

Instalar o xsensors:

Executar o comando apt-get install xsensors

Criar o script /usr/temp_ha_post com o código abaixo (usar o editor de preferência - nano, vi, etc):

Deve ser alterado o endereço IP do HA e o token de longa duração.


#! /bin/bash
url1=http://10.10.10.xxx:8123/api/states/sensor.proxmox_temperatura
token1=xxxxx

i=1
sensors | grep -e "°C" | while read line; do
                temp=$(echo $line | awk -F "+" '{ print $2 }' | awk -F "." '{ print $1 }');
                url1a=$url1'_'$i;
                curl -X POST -H "Authorization: Bearer $token1" -H 'Content-type: application/json' --data "{\"state\":\"$temp\",\"attributes\": {\"friendly_name\":\"Temperatura Proxmox\",\"icon\":\"mdi:cpu-64-bit\",\"state_class\":\"measurement\",\"unit_of_measurement\":\"°C\",\"device_class\":\"temperature\"}}" $url1a;
                i=$[$i+1];
        done

Conceder permissão de execução ao script:

chmod +x /usr/temp_ha_post

Testar o script e verificar se os sensores são criados no HA:

/usr/temp_ha_post

Criar uma entrada no cron para executar o script:

  • Executar o comando crontab -e

  • Adicionar na última linha (nessa configuração os sensores serão atualizados a cada minuto):
    */1 * * * * /usr/temp_ha_post

  • Reiniciar o cron:
    services cron restart

Resultado:

imagem

No meu até dar certo tive que refazer algumas vezes, oque você pode fazer é usar o Winscp e excluir aquele arquivo id_rsa da pasta root para recomeçar. Os comandos que você usou no Terminal estão corretos. Verifica tambem qual é o sensor correto no seu caso. No meu caso é o thermal_zone0.
Nesta parte aqui do codigo “cat /sys/class/thermal/thermal_zone0/temp”.

1 Like