Il y a des jours comme ça où on se réveille (trop) tôt. En passant le temps sur le PC pendant que la maison dort, on a une idée qui germe sans prévenir. Ce matin c'était de trouver le moyen pour faire remonter la température CPU de mon serveur pour la monitorer sur Domoticz. En mélangeant lm-sensors, curl et l'API Domoticz, j'ai écrit un petit script qui fonctionne plutôt bien.
Le principe est assez simple. Il suffit d'installer lm-sensors et curl sur la machine à monitorer. C'est logiciels sont bien entendu des applications linux. Il faut aussi lancer une fois la reconnaissance des sondes de températures reconnues pas lm-sensors. Je vous laisse chercher comment on fait, il y a plein de sources sur le web à ce propos.
Ensuite, on lance la commande "sensors" afin d'avoir la liste des sondes reconnues et leur valeurs actuelles. Chez moi la commande remonte ces infos:
k10temp-pci-00c3
Adapter: PCI adapter
temp1: +42.9°C (high = +70.0°C)
(crit = +90.0°C, hyst = +87.0°C)
fam15h_power-pci-00c4
Adapter: PCI adapter
power1: 125.40 W (crit = 125.19 W)
La valeur qui nous intéresse est "temp1".
Une fois que l'on sait ce que l'on veut utiliser, il ne reste plus qu'à scripter le tout de cette façon :
#! /bin/bash
#appel de la commande sensors pour capturer les valeurs dans la variable $sensors
sensors=$(sensors)
#Extraction de la température CPU avec grep et cut pour ne conserver que la valeur numérique vers la variable $CPU
CPU=$(echo "$sensors" | grep 'temp1' | cut -c16-20)
#Création d'une variable contenant url en y incluant la valeur de la température
url="http://192.168.0.57:8080/json.htm?type=command¶m=udevice&idx=40&nvalue=0&svalue="$CPU""
#Requête vers domoticz pour mise à jour de la température en mode silencieux
curl -s $url > /dev/null
Comme l'indiquent les commentaires, le fonctionnement est relativement simple :
On récupère les valeurs des sondes dans la variable \$sensors. Ensuite on extrait la partie concernant uniquement "temp1" grâce à grep. On enlève tout ce qui n'est pas la valeur de la température avec la commande cut et on met cette valeur dans la variable \$CPU.
On crée une nouvelle variable contenant l'url (\$url) permettant de mettre à jour la valeur de la température comme c'est prévu dans l'API de domoticz. Cette url contenant la variable \$CPU créée juste avant.
On termine en faisant une requête silencieuse vers la machine où est installé domoticz avec la commande curl.
Notez que pour que ça fonctionne vous devez avoir créé un capteur virtuel (dummy) sur domoticz. Ce capteur aura une ID que vous devrez entrer dans l'url juste après "&idx=". Dans mon cas l'ID est 40.
Il ne reste plus qu'à l'exploiter comme vous le souhaitez dans votre solution domotique.