Vous le savez, je peux activer / désactiver le mode nuit de ma chaudière depuis mon smartphone ou n’importe quel ordinateur connecté à internet.
Mais ce processus est manuel et demande une intervention de ma part lorsque je quitte la maison et quand je rentre chez moi.
J’ai décidé d’automatiser la tâche en fonction de la présence ou non de mon smartphone sur le réseau local.
Depuis bien longtemps, toutes mes machines, smartphone et tablette ont une adresse IP fixe. Seuls les invités reçoivent une IP dynamique.
Voici donc le petit script (à télécharger ici) que j’ai mis au point pour activer/désactiver le chauffage chez moi :
#!/bin/bash # Vérifie que l'on est en Root if [[ $EUID -ne 0 ]]; then echo "Ce script doit être exécuté avec les privilèges administrateur" exit 1 fi IP_DEVICE=192.168.0.4 # Adresse IP du smartphone GPIO_PORT=17 # Port GPIO à contrôler Hdebut=8 # Début du créneau horaire pour couper le chauffage automatiquement Hfin=11 # Fin du créneau horaire pour couper le chauffage automatiquement function read_GPIO { if [ `/usr/local/bin/gpio -g read $GPIO_PORT` -eq 0 ] then return 0 # 0 = True else return 1 # 1 = False fi } function switch_GPIO { # -g paramètre permettant d'utiliser le numero de GPIO standard et non celui de WiringPi /usr/local/bin/gpio -g write $GPIO_PORT $1 } function try_device { # -q paramètre du mode silencieux # -c nombre de pings à effectuer ping -q -c3 $1 > /dev/null if [ $? -eq 0 ] # Si le résultat du ping est vrai => Donc si le device est trouvé then if ! read_GPIO # Si read_GPIO est égal à 1 then echo "$(date +%Y%m%d-%H:%M) - Device $1 trouvé : Mode jour activé" switch_GPIO 0 fi elif read_GPIO # Si read_GPIO est égal à 0 then if [ $(date +%H) -ge $Hdebut ] && [ $(date +%H) -le $Hfin ] then echo "$(date +%Y%m%d-%H:%M) - Device $1 non trouvé : Mode nuit activé" switch_GPIO 1 fi fi } try_device $IP_DEVICE exit 0
Le chauffage ne passera en mode nuit que s’il perd la connexion avec le smartphone entre 8h et 11h du matin, le créneau horaire habituel où je quitte la maison. Ceci permet de remettre manuellement le chauffage en route après 11h pour qu’il fasse chaud chez moi en rentrant le soir.
Sans ce créneau horaire, il serait impossible de réactiver le chauffage manuellement lorsque je ne suis pas chez moi. Le script reprendrait la main et couperait la chaudière quelques minutes après.
Le script test également l’état du GPIO pour éviter de le basculer dans un état où il se trouve déjà et surtout éviter les lignes inutiles dans le log.
Seul l’administrateur pourra exécuter le script.
On va copier le script dans /home/pi
et le rendre exécutable :
chmod +x auto_switch_gpio.sh
Pour automatiser la tâche, on va utiliser le service cron :
$ sudo crontab -e
Et on ajoute cette ligne :
*/5 * * * * /home/pi/auto_switch_gpio.sh >> /home/pi/auto_switch_gpio.log 2>&1
Le script sera exécuté toutes les 5 minutes.