Le printemps est arrivé, c’est le moment idéal pour vérifier si mon système d’arrosage a survécu à l’hiver et pour le remettre en service. Dans cet article, je vais vous expliquer en détail comment j’ai amélioré mon installation existante à l’aide d’antennes Bluetooth externes. Nous allons améliorer notre installation test Jeedom pour l’arrosage automatique en ajoutant (et en clonant) de nouveaux répéteurs Bluetooth (les « antennes ») afin d’étendre la portée de réception des données du capteur d’humidité.
Ces répéteurs sont des appareils Raspberry Pi Zero W peu coûteux. L’idée est de les installer à l’extérieur, près des capteurs d’humidité. Grâce à la technologie Bluetooth, ils collectent les données des capteurs qui se trouvent hors de portée du contrôleur Bluetooth Jeedom principal (situé à l’intérieur), puis les retransmettent à Jeedom via mon réseau Wi-Fi domestique.
Une fois Raspbian installé sur un Raspberry Pi Zero W, la partie logicielle additionnelle consiste principalement à utiliser les fonctionnalités intégrées du plugin BLEA de Jeedom pour déployer automatiquement sur le ZeroW ce qui est nécessaire pour le transformer en antenne BLEA. Nous améliorerons également légèrement le système afin de vérifier si le wifi fonctionne correctement et de le relancer en cas de perte de connexion.
Au final, le système sera composé d’un contrôleur Jeedom principal, équipé du Wi-Fi mais sans Bluetooth, situé à l’intérieur, et de 4 antennes externes Jeedom, équipées du Bluetooth (pour atteindre les capteurs d’humidité) et du Wi-Fi (pour transmettre les données des capteurs au contrôleur Jeedom). Je présente ci-dessous le schéma précédent que j’ai créé dans la partie I du tutoriel, les éléments ajoutés sont en rouge.

Pour ce tutoriel, j’utiliserai 4 Raspberry Zero W afin de démontrer la capacité à relayer des informations depuis un endroit où le contrôleur central Jeedom ne peut pas atteindre un capteur d’humidité, et afin de démontrer les connexions entre les antennes.

Notez que, comme nous allons cloner sur 3 cartes SD une première « carte SD maître » préalablement configurée , je vous recommande vivement soit d’utiliser exactement les mêmes modèles de cartes SD dans vos Raspberry Pi afin d’éviter tout problème lié à de légères différences de taille entre les cartes, soit de créer votre image Raspbian source sur une carte SD plus petite que celle que vous utiliserez réellement pour vos antennes ! Si votre carte SD maître est de 8 Go et que vous la clonez sur des cartes SD de 16 Go, après le clonage, vous pourrez toujours étendre la taille de la partition Linux sur chaque Raspberry cloné à l’aide des outils raspi-config, comme indiqué plus loin dans ce tutoriel.
Préparation d’une image « Master » Pi Zero W
Configuration d’un utilisateur dédié
Je suppose ici que :
- Vous avez installé Raspian et qu’il fonctionne sur l’un de vos appareils Raspberry Zero W (nous clonerons ce Raspberry plus tard sur les 3 autres). Pour info, j’ai revérifié mon précédent tutoriel sur l’installation de Raspbian sur un Pi Zero W, avec la dernière version de Raspian à ce jour (2021-01-11-raspios-buster-armhf-lite.img), et ce tutoriel est entièrement basé sur cette version pour les 4 Pi Zero W.
- Vous êtes root sur le Raspberry Pi Zero, ou vous savez comment utiliser sudo tel que nous l’avons configuré dans le tutoriel d’installation.
Nous ajoutons maintenant un nouvel utilisateur qui sera dédié au « pluginblea » de jeedom (aussi appelé « Bluetooth advertisement » ou BLEA). Cet utilisateur sera utilisé par le contrôleur Jeedom pour se connecter via ssh/scp au raspberry/antenne afin de copier des fichiers et d’exécuter une petite instance pluginblea (un ensemble de scripts python).
adduser pluginblea
visudo
Ajoutez ensuite à la fin du fichier :
pluginblea ALL=(ALL) NOPASSWD: ALL
Ensuite, tapez CTRL-X puis CTRL-Y (ou CTRL-k puis X avec joe si vous avez changé l’éditeur par défaut comme je l’ai fait dans mon tutoriel d’installation de Raspbian).
Configurer le démarrage automatique du démon blea
(Cette partie s’inspire largement de cet article, de ma suggestion et de cette mise à jour).
Je vais créer un script init.d maintenant, afin qu’il soit intégré dans le clone de la carte SD que nous effectuerons plus tard pour déployer facilement une nouvelle antenne. Mais cela ne fonctionnera pas encore, car nous n’avons pas encore créé l’antenne à partir de Jeedom.
Nous avons d’abord besoin de connaître l’adresse IP du contrôleur Jeedom et la clé API BLEA. La clé API BLEA se trouve dans Jeedom Settings>System>Setup>API tab>API key Bluetooth Advertisement. N’oubliez pas de vérifier dans la liste déroulante à droite qu’elle est bien activée.

On insère maintenant ces lignes dans /etc/init.d/blearpistart, et n’oubliez pas de modifier la ligne 22 pour spécifier l’adresse IP de votre contrôleur Jeedom et la clé API BLEA.
joe /etc/init.d/blearpistart
#!/bin/sh
#/etc/init.d/blearpistart
### BEGIN INIT INFO
# Provides: Jeedom BLEA Plugin
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
# Description: A simple script similar to one from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
### END INIT INFO
# If you want a command to always run, put it here
touch /tmp/blea && chmod 666 /tmp/blea
# Carry out specific functions when asked to by the system
case $1 in
start)
echo "Starting BLEA"
# run application you want to start
/usr/bin/python /home/pluginblea/blead/resources/blead/blead.py --loglevel error --device hci0 --socketport 55008 --sockethost "" --callback http://<IP>:80/plugins/blea/core/php/jeeBlea.php --apikey <APIKEY>
stop)
echo "Stopping BLEA"n
# kill application you want to stop
sudo kill `ps -ef | grep blea | grep -v grep | awk '{print $2}'`
;;
*)
echo "Usage: /etc/init.d/blearpistart {start|stop}"
exit 1
;;
esac
exit 0
Remarque :
- Vous devez vous assurer que Jeedom est accessible via HTTP sur votre réseau local / VLAN.
- Vous devez autoriser l’API à être accessible depuis n’importe où.
Rendez maintenant ce script exécutable :
chmod 755 /etc/init.d/blearpistart
Nous allons maintenant créer le fichier de service utilisé par SYSTEMCTL.
joe /etc/systemd/system/blearpistart.service
Insérez ces lignes :
[Unit]
Description=BlEA service
After=hciuart.service dhcpcd.service bluetooth.service
[Service]
Type=oneshot
ExecStart=/etc/init.d/blearpistart start
[Install]
WantedBy=multi-user.target
Nous activons maintenant le service :
systemctl enable blearpistart.service
Si aucune erreur ne se produit, le résultat devrait être le suivant :
Synchronizing state of blearpistart.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable blearpistart
Created symlink /etc/systemd/system/multi-user.target.wants/blearpistart.service → /etc/systemd/system/blearpistart.service.
Notez que selon votre version de Raspbian, vous devrez peut-être utiliser à la place :
update-rc.d blearpistart defaults
Surveillance de la connectivité Jeedom
(J’ai documenté cela dans cet article sur le forum Jeedom).
Sur le Raspberry Zero, même si nous avons désactivé la gestion de l’alimentation sur l’interface wlan0 à l’aide de « wireless power off » dans le fichier des interfaces réseau, vous pouvez toujours rencontrer des déconnexions, en particulier si vos Raspberry Pi ne reçoivent pas bien le signal wifi. J’ai donc ajouté un petit script qui sera utilisé pour arrêter régulièrement le démon blea, envoyer une requête ping à notre serveur principal et, si nous détectons qu’il n’est pas accessible, redémarrer le Pi ou relancer le démon blea. Ce script est basé sur un autre script trouvé sur Internet. Vous devez remplacer « IP_FOR_TEST » par l’adresse IP du contrôleur Jeedoms auquel vous souhaitez envoyer une requête ping.
Oui, ce script peut probablement être optimisé, car arrêter le démon et le redémarrer est un peu exagéré. Mais, cela fonctionne, mes quatre antennes sont stables dans le temps.
sudo su -
mkdir /opt/check_lan
joe /opt/check_lan.sh
Ajoutez maintenant ces lignes dans /opt/check_lan.sh et n’oubliez pas de modifier la ligne 5 pour y inscrire l’adresse IP du contrôleur de votre Jeedom.
#!/bin/sh
# cron script for checking wlan connectivity
# change to whatever IP you want to check.
IP_FOR_TEST="IP_TO_TEST"
PING_COUNT=1
PING="/bin/ping"
IFUP="/sbin/ifup"
IFDOWN="/sbin/ifdown --force"
INTERFACE="wlan0"
FFLAG="/opt/check_lan/stuck.fflg"
logger -t check_lan "Stopping BLEA antenna"
systemctl stop blearpistart.service
logger -t check_lan "Testing if $INTERFACE can ping $IP_FOR_TEST"
# ping test
$PING -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/null
if [ $? -ge 1 ]
then
logger -t check_lan "$INTERFACE seems to be down, trying to bring it up..."
if [ -e $FFLAG ]
then
logger -t check_lan "$INTERFACE is still down, REBOOT to recover ..."
rm -f $FFLAG 2>/dev/null
reboot
else
touch $FFLAG
logger -t check_lan $($IFDOWN $INTERFACE)
sleep 10
logger -t check_lan $($IFUP $INTERFACE)
logger -t check_lan "Starting BLEA antenna"
systemctl start blearpistart.service &
fi
else
logger -t check_lan "$INTERFACE is up"
rm -f $FFLAG 2>/dev/null
logger -t check_lan "Starting BLEA antenna"
systemctl start blearpistart.service &
fi
Vous devez maintenant vous assurer que ce script s’exécutera toutes les 15 minutes (vous pouvez bien sûr modifier cette fréquence) à l’aide de crontab :
crontab -e
Ajoutez cette ligne :
*/15 * * * * root /opt/check_lan.sh
Pour information, la commande logger utilisée dans ce script enregistrera la sortie dans /var/log/syslog. Vous pouvez surveiller son exécution à l’aide de tail -f /var/log/syslog | grep check_lan /var/log/syslog
.
Sauvegarder et cloner la carte SD comme modèle
Backup
Nous pouvons maintenant backuper le contenu de la carte SD, car nous avons maintenant quelque chose qui ressemble à une « installation d’antenne standard », que vous pouvez facilement reproduire sur d’autres Raspberry Pi, avant de l’ajouter dans Jeedom.
Tout d’abord, vous devez changer le nom de votre Raspberry en utilisant « raspi-config », puis « Options système », « Nom d’hôte » et le nommer comme vous le souhaitez. Personnellement, je les ai nommés en fonction de leur emplacement (par exemple, EAST1, EAST2, WEST1, WEST2).
Eteignez ensuite correctement votre Raspberry en utilisant la commande « shutdown now » au lieu de débrancher le câble d’alimentation USB.
sudo su -
/sbin/shutdown now
Nous allons maintenant utiliser l’outil gratuit « HDD Raw Copy Tool » sur un ordinateur Windows. Insérez la carte SD du Raspberry dans votre ordinateur (là encore, il est probable qu’un message vous invite à formater le disque, ignorez-le). Lancez HDD Raw Copy Tool, sélectionnez votre lecteur de carte comme SOURCE, puis cliquez sur CONTINUER.

Sur l’écran suivant, choisissez un emplacement pour enregistrer le fichier image qui sera créé, puis cliquez sur CONTINUER.

Sur l’écran suivant, vérifiez les paramètres, puis cliquez sur DÉMARRER … Allez vous chercher un café …

Lorsque vous voyez « Tâche terminée » s’afficher, vous pouvez retirer votre carte SD source de votre ordinateur. Vous disposez désormais d’un clone parfait de votre Raspberry préconfiguré, prêt à être copié sur d’autres PI Zero W, puis à être configuré comme antennes BLEA de Jeedom.
Clonage
Ces opérations doivent être effectuées sur chaque carte SD que vous souhaitez utiliser sur vos Raspberry Pi de production.
Insérez une carte SD cible dans votre ordinateur et utilisez le même outil HDD Raw Copy que nous venons d’utiliser. Cette fois-ci, nous allons écrire l’image sur d’autres cartes SD, en sélectionnant comme SOURCE le fichier image, puis comme destination la carte SD. Cette opération sera assez longue, en fonction de la taille de votre image et de la taille cible.

Une fois l’écriture de l’image terminée, la carte SD peut être insérée dans un autre Raspberry, lequel peut être allumé. Une fois encore, nous devrons trouver son adresse IP à partir de notre routeur ou serveur DHCP. Il devrait démarrer correctement et se connecter à notre réseau wifi. Nous modifierons uniquement son nom d’hôte afin qu’il soit différent de celui de notre Raspberry maître, à l’aide de raspi-config
. C’est également à ce moment-là que nous pourrons agrandir la taille de la partition, toujours à l’aide de raspi-config, si l’image maître est plus petite que la carte SD cible.
Je vous suggère de noter l’adresse MAC et l’adresse IP de chaque Raspberry. Dans mon cas, j’ai même inscrit leur adresse MAC sur leur boîtier (cf. photos en début d’article).
À la fin de cette étape, vous devriez avoir 4 antennes fonctionnant sous Raspbian et accessibles sur votre réseau wifi.
Créer les antennes dans Jeedom
Tout d’abord, dans Jeedom, nous allons créer nos antennes, dans le plugin BLEA.



Sur l’écran qui apparaîtra, nous devrons entrer le nom de l’antenne, l’adresse IP, le port, l’identifiant et le mot de passe ssh (l’utilisateur que nous avons créé précédemment sur le raspberry, dédié à jeedom), ainsi que le périphérique associé à l’interface Bluetooth de l’antenne (hci0 dans notre cas).

Je vous recommande alors d’enregistrer immédiatement l’antenne, puis d’utiliser le bouton « Envoyer les fichiers » pour que le contrôleur Jeedom envoie automatiquement les fichiers requis pour son fonctionnement, à notre antenne. Une fois cette opération terminée, nous utiliserons le bouton « Lancer les dépendances » pour que notre antenne « compile » ou télécharge automatiquement les fichiers requis localement.

Malgré le message d’information indiquant que les fichiers ont été envoyés avec succès, vous pouvez également le vérifier manuellement en vous connectant à cette antenne avec SSH et en validant qu’un répertoire blead
nouvellement créé se trouve dans le répertoire d’accueil pluginblea.

Nous compilons maintenant les dépendances.

Cette opération va prendre beaucoup de temps (sur un Raspberry Pi Zero en tout cas). Vous pouvez vérifier manuellement le fichier journal à l’aide du bouton vert dédié à cet effet dans l’interface utilisateur de Jeedom, mais vous pouvez également surveiller /tmp/blea_dependencies
sur votre antenne.

Allez prendre quelques cafés… L’installation des dépendances prendra environ 30 minutes. Mais vous pouvez également paralléliser les tâches et créer vos autres antennes dès maintenant, envoyer les fichiers et lancer les dépendances ; cela n’interrompra pas celle qui est déjà en cours de construction. C’est ce que j’ai fait avec mes 4 Raspberry Pi, et vous pouvez remarquer à gauche que nous pouvons voir les 4 antennes, mais elles ont un statut rouge pendant que les dépendances sont en cours de compilation, car le démon du plugin blea n’est pas encore lancé localement, sur chacune d’elle.

Lorsque les dépendances sont compilées avec succès (ce qui est mon cas avec cette version de Raspbian), vous pouvez activer la gestion automatique des démons dans vos antennes et les lancer à l’aide du bouton vert « Run ».

Remarque sur la capture d’écran précédente : j’ai déjà lancé une antenne, qui apparaît désormais avec un statut vert dans la liste. Après avoir lancé les 4 antennes, elles sont toutes considérées comme opérationnelles par Jeedom.

Vous pouvez désormais visualiser votre réseau, ainsi que les appareils détectés et connectés à vos antennes. Nous n’avons pour l’instant qu’un seul appareil.


Nous voyons le contrôleur « Local » principal, car il est toujours équipé de sa clé USB Bluetooth externe du tutoriel précédent, en plus des 4 antennes que nous venons de déployer. Pour l’instant, nous n’avons qu’un seul Flowercare représenté, car c’est celui que nous avons utilisé dans le tutoriel précédent sur un contrôleur BLEA « simple ». Une fonctionnalité intéressante ici est que Jeedom va essayer de deviner (ou plus exactement, déduire) approximativement la position de chaque capteur, en fonction de l’endroit où vous avez déplacé vos antennes dans cette vue et du signal RSSI (voir ci-dessous).
Une autre vue intéressante est la vue « Santé » du plugin BLEA.

Il affichera pour chacun de vos appareils Bluetooth son adresse Mac, son type, son état et son niveau de batterie, mais aussi le RSSI par antenne ou contrôleur. Plus le RSSI est faible, meilleur est le signal. Notez également que dans les colonnes Transmission et Réception de l’antenne, dans ce cas, le Flowercare que nous avons détecté semble « associé» au contrôleur principal, mais nous changerons cela plus tard.
Ajout de tous nos capteurs d’humidité
Il est très simple de faire détecter nos autres appareils. Nous allons utiliser la fonction « Scan » du plugin BLEA et indiquer à Jeedom que nous recherchons uniquement les équipements Miflora.

Lorsque Jeedom trouve un appareil du type sélectionné qu’il ne connaît pas encore, un écran s’affiche pour vous demander des informations sur cet appareil. Je vous recommande vivement de donner des noms explicites à vos Flowercares ! Par exemple, le nom de la plante, l’endroit où elle sera placée, etc. Personellement, au bout d’un moment, j’ai inscris sur chacun d’eux un numéro unique au marqueur indélébile, qui me permet de facilement les identifier, et j’inscris aussi ce numéro dans le nom de l’équipement dans Jeedom. Plus tard, dans vos scripts d’automatisation, vous aurez besoin de ces noms explicites pour vérifier les valeurs et effectuer les bonnes actions, sans ambiguïté.

Nous attribuons donc à ce premier élément un nom (et le numéro que j’ai inscrit sur chaque capteur afin de pouvoir les identifier facilement lorsqu’ils seront à l’extérieur), son objet parent afin qu’il s’affiche dans le tableau de bord de Jeedom, une catégorie de fonction, puis nous allons vérifier ses paramètres.

Dans les paramètres, nous pouvons voir qu’il est connecté à une antenne spécifique, mais nous pouvons le modifier.

Il n’y a aucun problème à modifier le paramètre de réception et de transmission pour le régler sur « Tout » : toutes les antennes pourront alors recevoir et transmettre des données à cet équipement. Cela peut être utile si vous déplacez souvent vos capteurs ou lors de votre installation finale à l’extérieur, afin d’assurer une meilleure tolérance aux pannes (au cas où une antenne ne fonctionnerait pas). Pour l’instant, nous ne le modifions pas, car nous vérifierons plus tard dans les vues Santé et Réseau si cela change quelque chose aux liaisons entre les composants.

Nous devons maintenant répéter cette procédure de détection/dénomination jusqu’à ce que tous nos capteurs soient ajoutés. Dans mon cas, comme ces capteurs sont utilisés depuis 3 ans et qu’ils sont restés totalement inactifs pendant l’hiver, j’ai dû changer quelques piles avant qu’ils ne soient tous « vus », et j’ai constaté que l’un d’entre eux ne pouvait plus du tout être détecté. J’ai donc dû utiliser mon capteur de test comme rechange.
L’organisation finale que j’ai utilisée dans Jeedom pour ce tutoriel est la suivante. J’ai créé plusieurs objets dans mon objet racine « Maison » afin de distinguer les équipements intérieurs des équipements extérieurs. Ensuite, dans « Extérieur », j’ai défini un objet par terrasse, une à l’est et une à l’ouest. Chaque capteur est attribué à sa destination cible.

Valeur ajoutée des antennes externes
Nous allons tester si nos antennes nous offrent réellement une portée étendue. Tout d’abord, je vais vous montrer les vues Health & Network (Santé et réseau) du plugin BLEA, avec tous les équipements et antennes encore sur mon bureau. Cela signifie qu’elles sont toutes très proches les unes des autres.

Avec chaque capteur, nous pouvons remarquer qu’il existe une valeur Rssi pour chaque antenne. Cela signifie que chaque capteur est capable d’atteindre chaque antenne. Le vert indique une très bonne qualité de signal.

Nous pouvons toujours voir à quelle antenne chaque capteur est relié. Je vais maintenant éteindre toutes les antennes.

Nous pouvons maintenant voir que le signal Rssi a changé pour chaque capteur: ils ne peuvent atteindre que l’antenne locale, celle qui est directement installée sur le contrôleur Jeedom.

Comme nous pouvons le voir dans la vue Santé, tous les capteurs sont désormais détectés uniquement par l’antenne locale, qui est la clé USB Bluetooth branchée sur mon contrôleur Jeedom, depuis le dernier tutoriel. Seul le RSSI de cette antenne est affiché pour chaque équipement. De plus, dans la vue Réseau, nous pouvons voir que toutes les antennes sont hors service/rouges, et que les liaisons entre les capteurs et les antennes ne pointent désormais que vers le contrôleur local. Dans la documentation BLEA et cet excellent article de Sarakha (en français), nous pouvons lire que quelle que soit l’antenne configurée pour la réception ou la transmission dans la configuration du capteur, dès qu’un capteur est détecté par une antenne Bluetooth, l’appareil est considéré comme présent et utilisable.
Je vais maintenant déplacer mes capteurs à différents endroits de mes terrasses, là où ils pourraient réellement être installés, toujours avec uniquement mon contrôleur Jeedom principal actif, sans antennes.

Nous pouvons voir que seuls quelques capteurs sont actuellement connectés à Jeedom.

Cela devient intéressant : il est clair que tous les capteurs déplacés sur la terrasse Est sont hors de portée. Le contrôleur principal peut toutefois encore voir les capteurs Ouest, car mon bureau est plus proche de cette terrasse. Maintenant, comme l’Intel NUC sur lequel je fais tourner mon Jeedom de production ne disposera pas du dongle Bluetooth externe que j’utilise sur mon banc d’essai, je vais demander au plugin BLEA de NE PAS utiliser de contrôleur Bluetooth local. Nous allons donc UNIQUEMENT nous appuyer sur les antennes externes, qui sont encore éteintes pour l’instant.



J’ai coché l’option « Aucun contrôleur local » et enregistré la configuration. Pour tester véritablement cette configuration, je vais même éteindre le contrôleur Jeedom et retirer la clé USB Bluetooth.

Après avoir redémarré sans Bluetooth local, voici les vues Santé et Réseau.

À présent, aucun capteur n’est détecté, ce qui est tout à fait normal ! Je vais ensuite déplacer mes antennes (avec leur alimentation USB) dans chaque « coin » de mon appartement, puis les allumer. Ensuite, dans la vue Réseau, je vais les déplacer approximativement à l’endroit où elles se trouvent réellement les unes par rapport aux autres. J’attends simplement quelques minutes après que chaque antenne soit de nouveau en ligne dans Jeedom, afin que le réseau se « stabilise ».


Conclusion : toutes les antennes sont clairement en place et fonctionnent comme de véritables relais vers le contrôleur Jeedom. Nous pouvons voir dans la vue Santé que nous disposons même d’une certaine redondance si l’une des antennes installées sur une terrasse venait à tomber en panne, car la plupart des capteurs ont un Rssi assez correct avec au moins une antenne. La vue réseau est presque exacte, les capteurs sont affichés de manière presque parfaite sur la carte.
Je vous recommande de vous assurer que chaque capteur peut utiliser « toutes » les antennes et de ne pas les connecter à une seule antenne. Pour cette utilisation du plugin BLEA et d’antennes dans un contexte de système d’arrosage, borner les émetteurs/récepteurs bluetooth pour chaque équipement n’est pas nécessaire car on cherche plutôt à maximiser la redondance et le maillage du réseau.
Améliorations
Tableau de bord
Nous pouvons voir sur le tableau de bord standard de Jeedom que nos capteurs fournissent activement les données attendues. Maintenant que nous disposons de capteurs beaucoup actifs, et lointains, nous pouvons également contrôler beaucoup plus de vannes d’eau (ou d’autres éléments) avec exactement le même système que celui que nous avons déployé dans le guide précédent.

Vous pouvez également « jouer » avec les fonctionnalités de Jeedom (notamment les Vues) et créer un joli tableau de bord spécifique pour votre système d’arrosage.


Nous pouvons voir ici que je peux surveiller avec précision toutes les variations d’humidité dans le temps, pour chaque capteur. Je peux contrôler manuellement les vannes d’eau. J’ai également légèrement modifié mes scénarios et j’ai utilisé des variables et des équipements virtuels pour calculer de nouvelles données. Ensuite, je les utilise pour afficher les niveaux d’humidité, mais aussi le seuil pour chaque ligne d’arrosage, la dernière fois qu’une vanne a été allumée et la dernière fois que le capteur a actualisé les données d’humidité.
Surveillance
Nous avons déjà mis en place une sorte de script de surveillance sur chaque antenne, afin qu’elles redémarrent si elles ne parviennent pas à pinguer le contrôleur Jeedom. Mais il s’agit d’une surveillance technique, qui ne permet pas de s’assurer qu’il n’y a pas de fuite d’eau quelque part avec une vanne restée ouverte, ou qu’une partie de votre jardin n’est pas arrosée parce qu’un capteur ne fonctionne pas correctement.
Ainsi, dans Jeedom, voici quelques bonnes pratiques à adopter :
- Surveiller et envoyer une alerte si une antenne est hors service pendant trop longtemps ;
- Surveiller et alerter si un capteur n’a pas fourni de nouvelles données depuis trop longtemps ;
- Surveiller les piles des capteurs et envoyer des alertes (mais avec le recul je pense que nous ne pouvons pas nous fier au niveau de charge des piles remonté dans Jeedom pour ces capteurs) ;
- Surveiller et alerter si une vanne reste ouverte trop longtemps (pour éviter les inondations et la consommation d’eau).
Cela nécessite un peu de codage dans les scénarios, et ce sera un sujet idéal pour un prochain tutoriel sur la surveillance des plugins ou des scénarios ! À venir.
Alerte
Une autre fonctionnalité intéressante consiste à ajouter des notifications à envoyer par e-mail, Pushover ou un quelconque autre service, afin de vous informer de différentes manières que le système a décidé de NE PAS déclencher l’arrosage en raison des prévisions météorologiques, ou qu’il a décidé au contraire de l’activer parce qu’un seuil d’humidité a été franchi. Ce sera également un sujet idéal pour un prochain tutoriel sur le système de notification que j’ai développé dans Jeedom en utilisant à la fois des scénarios et du PHP intégré. Ce système peut vous avertir, vous ou d’autres personnes, par e-mail, Pushover, message vocal, SMS, etc.
Dépannage
Si vous rencontrez des problèmes de dépendances après avoir cloné votre antenne, essayez de supprimer/réinstaller tous les éléments Python PIP et bluepy :
sudo pip3 uninstall bluepy
sudo apt remove python-pip python3-pip
sudo apt autoremove
sudo apt-get reinstall build-essential libssl-dev libffi-dev python-dev
sudo apt-get reinstall python-pip
sudo apt-get reinstall python3-pip
sudo pip3 install bluepy
sudo setcap cap_net_raw+e /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
sudo setcap cap_net_admin+eip /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
sudo /sbin/reboot
Ce que cela fera :
- Désinstaller le paquet Python 3
bluepy
(une bibliothèque pour la communication Bluetooth), - Supprimer les gestionnaires de paquets Python 2 et Python 3 (
pip
etpip3
) du système. - Nettoyer et supprimer les paquets qui ont été installés en tant que dépendances mais qui ne sont plus nécessaires.
- Réinstaller les outils de développement essentiels (
build-essential
) et les bibliothèques nécessaires à la compilation et à la création de paquets Python (libssl-dev
,libffi-dev
,python-dev
). - Réinstaller le gestionnaire de paquets Python 2,
- Réinstaller le gestionnaire de paquets Python 3,
- Installer le paquet
bluepy
pour Python 3, - Accorder le droit
cap_net_raw
au binairebluepy-helper
, lui permettant d’utiliser des sockets réseau brutes (nécessaires pour les opérations Bluetooth). - Accorder le droit
cap_net_admin
au même binaire, lui permettant d’effectuer des tâches avancées d’administration réseau. - Redémarrer le système.
Conclusion et ressources connexes
En utilisant des Raspberry Pi Zero W comme antennes BLEA, j’ai considérablement amélioré la fiabilité des données et la portée de mon système d’arrosage contrôlé par Jeedom. Cette approche modulaire permet d’ajouter d’autres capteurs ou antennes selon mes besoins et garantit une couverture même pour les grands espaces extérieurs.
Pour en savoir plus sur l’arrosage automatique avec Jeedom, consultez :
- Système d’arrosage extérieur programmable automatique avec Jeedom
- Tutoriel rapide : installation de Debian Raspbian sur un Raspberry Pi (Zero)
For BLEA plugin details, see:
Idées pour les prochaines étapes : configurer des alertes en cas de défaillance des capteurs ou de problèmes au niveau des vannes, ou intégrer des déclencheurs basés sur les conditions météorologiques ou sur les relevés des capteurs eux-mêmes pour une irrigation encore plus intelligente.