Depuis que j'ai mis en place mes outils de supervision, j'y enregistre des informations de nature diverses.

Cet article se concentre sur l'enregistrement de la température, l'humidité et la pression atmosphérique des pièces de mon logement dans InfluxDB.

Matériel utilisé

Comme toujours, je refuse la dépendance à des services externes lorsque cela n'est pas nécessaire. Une raison évidente est celle de la dépendance technique : Il est aberrant qu'un service local s'appuyant sur des capeurs locaux puisse cesser de fonctionner si un serveur externe ou la connexion internet de la maison tombe en panne. Cependant, il y a aussi une question de maîtriser autant que possible mes données. Je déteste l'idée de ne pas décider où sont stockées mes données, et qui y a accès, ni la possibilité de les perdre si le constructeur met fin à son service. Pour surveiller les valeurs de température, humidité et pression atmosphérique de mon logement, je ne voulais donc pas d'un système complet comprenant une box d'un quelconque constructeur.

Parmi les différents protocoles disponibles, j'ai opté pour du Zigbee, qui est adapté à une utilisation domotique. J'ai donc acheté uniquement :

  • Une passerelle USB ConBee II, connectée à mon NAS.
  • Des capteurs Xiaomi Aqara, disposés dans chaque pièce du logement.

Installation

Le protocole de communication de la clé ConBee II est partiellement documenté, et je n'ai pas été convaincu par les implémentations existantes. J'ai donc opté pour l'installation du logiciel fourni par le constructeur afin de pouvoir interagir avec.

Pour cela, j'ai ajouté le dépôt deCONZ de Phoscon, puis installé le paquet deconz :

$ # Ajout de la clé GPG du dépôt deCONZ
$ curl http://phoscon.de/apt/deconz.pub.key | sudo apt-key add -
$ # Ajout du dépôt deCONZ
$ echo deb [arch=amd64] http://phoscon.de/apt/deconz bionic main | sudo tee /etc/apt/sources.list.d/deconz.list
$ sudo apt update
$ sudo apt install deconz

Note : Il n'existe pas de dépôt pour Debian, mais la version pour Ubuntu Bionic fonctionne correctement sur Debian Buster.

J'ai ensuite créé un utilisateur non privilégié spécifique pour faire tourner ce service. En effet, des services sont fournis dans le paquet, mais ils s'exécutent en root, ce qui n'est pas nécessaire. Il suffit que cet utilisateur soit membre du groupe dialout pour accéder au périphérique.

$ adduser --system --home /var/lib/deconz deconz
$ adduser deconz dialout

Les services fournis par le paquet ne me convenant pas, j'ai donc aussi créé un service systemd spécifique /usr/local/lib/systemd/system/zigbee-gateway.service :

[Unit]
Description=Start deCONZ ZigBee gateway

[Service]
ExecStart=/usr/bin/deCONZ -platform minimal -auto-connect=1 --http-port=8080
User=deconz
Group=deconz

[Install]
WantedBy=default.target

Enfin, il ne reste plus qu'à activer ce service :

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now zigbee-gateway.service

Configuration

Une fois le service lancé, il est possible de s'y connecter en se rendant à l'adresse http://serveur:8080. La documentation indique de se connecter avec l'utilisateur delight et le mot de passe delight. On peut ensuite modifier le mot de passe depuis le menu Settings / Gateway et d'utiliser le bouton Change login password.

Pour ajouter des capteurs, il suffit d'aller dans le menu Devices / Sensors, puis de cliquer sur le bouton Add new sensor. Après avoir sélectionné la marque du capteurs (Other dans mon cas), un appui de quelques secondes sur le bouton du capteur lui permet d'être détecté. Il ne reste plus qu'à le renommer, pour pouvoir le différencier des autres.

Collecte des informations

Comme pour les autres informations que je collecte, j'ai écrit un script python, disponible sur Framagit.

Ce script place le nom du capteur dans un tag room et contient un tag address en dur, que j'utilise pour écrire l'adresse du logement dans lequel la mesure est prise. Cela me permet de diférencier les valeurs mesurées dans les différents logements après un déménagmeent.

Il parcourt automatiquement les valeurs annoncées de température, humidité et pression atmosphérique, et ignore toutes les autres. Si d'autres capteurs étaient utilisés, il faudrait l'adapter pour en tenir compte.

Enfin, le niveau de batterie du capteur est enregistré avec chaque valeur.

Affichage des informations

Là aussi, j'ai créé un dashboard Grafana afin d'afficher les informations collectées.

Le panneau au format jauge est une tentative de simuler un baromètre à partir des informations de pression atmosphériques. Il arrive que la météo annoncée soit correcte, mais je ne peux pas le considérer comme fiable.

Capteurs de la maison