Menu Fermer

Simulation de présence avec un Raspberry Pi Zero

Lorsqu’on décide d’écrire un livre, et que cela prend vite plus de 6 mois sans autres activités, il est souvent difficile de trouver le temps pour suivre les nouveaux produits ou de vérifier que certaines variétés de ce même produit sont aussi des alternatives fonctionnelles.

C’est seulement en arrivant au bout du tunnel, avec la mise en place et la correction de tous les chapitres, qu’il m’est venu à l’idée de vérifier certaines fonctionnalités sur un Raspberry Pi Zero WH.

J’ai un tout vieux Raspberry Pi 2 fonctionnel avec un logiciel de simulation de présence qui fonctionne depuis plusieurs années et qui a été une des sources (chapitre 14 et 15) de mon livre. Ce logiciel détermine les heures du lever et du coucher du soleil, des périodes d’utilisation, et active un relais en calculant de manière aléatoire les instants où notre luminaire sera allumé ou éteint. Cela a été un jeu d’enfant de l’installer sur mon tout dernier Raspberry Pi Zero.

J’ai donc transféré, avec WinScp  (chapitre 4), le code de mon  Raspberry Pi 2 sur ce Raspberry Pi Zero WH, c’est à dire les fichiers .class des classes Java développées aussi sous Eclipse (chapitre 1, 2 et 8), Aucun souci, aucun problème: en fin d’après-midi la lampe de bureau installée a commencé à alterner entre 40 secs éteintes et 4 min allumées, avec quelques variations.

La seule chose que j’ai adaptée et corrigée dans le fichier /etc/rc.local, avant l’instruction exit, pour l’activation de l’application au démarrage du Pi, c’est l’appel au script SystemControl.sh qui se trouve dans  /home/pi/java:

cd /home/pi/jbb_java
echo Will start in 20 secs >SCTraceStart1.txt
sleep 20
ping 192.168.1.1 -c 1 >SCTraceStart2.txt
sudo java -classpath .:/opt/pi4j/lib/’*’ -Dpi4j.linking=dynamic SystemControl3 >SCtrace.txt
sleep 10
echo Has rebooted >SCTraceStop.txt
sudo reboot

Les différents fichiers .txt permettent de vérifier la bête. Le reboot est en fait un watchdog.

J’ai joué avec le timing (ici le 20 secs) pour déterminer quand le WiFi sera vraiment actif (ping avec le routeur). Mon application a besoin d’avoir l’heure et la date synchronisée sur Internet pour calculer les deux périodes saisonnières actives dans la journée, le matin et le soir (chapitre 14).

En mettant un sleep 2, c’est à dire 2 secs, le fichier SCTraceStart2.txt indiquerait que le ping ne fonctionne pas.

Je suis arrivé à 14 secs. J’ai laissé une petite marge avant de lancer l’application Java SystemControl3 avec son logiciel de simulation de présence et son Web serveur. Le Web serveur me retourne entre autres les périodes actives de ma lampe de bureau.

Il m’est arrivé de voir l’heure en UTC, donc universel. Il faudra alors utiliser la commande sudo raspi-config (chapitre 4) pour mettre l’heure en CET (Central European Time) pour que nos applications fonctionnent correctement.

J’ai utilisé évidemment PuTTY (chapitre 4) pour vérifier les fichier .txt et adapter avec l’éditeur vi (chapitre 4) les périodes de 40 secs et 4 minutes dans le fichier de configuration (chapitre 10) et d’autres valeurs.