Surveillance de la température de la piscine et contrôle de la pompe avec le Pi Zero W

Surveillance de la température de la piscine et contrôle de la pompe avec le Pi Zero W

Cet été, j’ai créé un système de surveillance de la température de la piscine et de contrôle de la pompe à l’aide d’un Pi Zero W. Cet article donne un aperçu du système et de la façon dont je l’ai assemblé. Il permet d’afficher la température de l’air et de l’eau sur une page Web tout en allumant et en éteignant automatiquement la pompe selon un programme prédéfini.

La piscine

Système de surveillance de piscine Pi Zero W

À l’origine, nous avions une piscine Bestway « fast set » de 8 pieds avec un anneau gonflable autour du sommet. Cela s’est avéré légèrement incompatible avec les 3 chats avec qui nous partageons le jardin. Donc, cette année, nous l’avons changé pour une piscine «Summer Escapes» à cadre métallique de 10 pieds. Il contient 4 100 litres d’eau et je n’avais aucune idée de la température que l’eau avait jamais atteinte ni de son lien avec la température de l’air. Je n’avais également aucun moyen de contrôler facilement la pompe sans jouer avec les réglages d’une minuterie secteur.

Les exigences

J’ai décidé que mon système de surveillance de la température de la piscine devrait être capable de :

  • Mesurer la température de l’air et de l’eau
  • Enregistrez les températures sur Internet
  • Afficher les températures sur une page web accessible depuis un téléphone mobile
  • Permettre à la pompe d’être allumée, éteinte ou placée dans un mode automatique qui suivrait un programme

Pompe de piscineLa pompe à eau

Comme pour la piscine précédente, elle était équipée d’une pompe alimentée par le secteur contenant un filtre. Au cours des années précédentes, je contrôlais cela avec une minuterie secteur traditionnelle, mais il y avait des moments où je voulais l’allumer manuellement pour profiter de l’électricité gratuite disponible à partir de mes panneaux solaires. Si la piscine avait été utilisée dans la journée, je voulais également un moyen plus simple de lui donner quelques heures supplémentaires sans jouer avec une minuterie.

La boîte résistante aux intempéries

Système de surveillance de piscine Pi Zero WPour alimenter la pompe, j’ai acheté un boîtier résistant aux intempéries qui avait de la place pour un bloc d’extension à 4 voies. Un câble d’alimentation de 10 m passe dans la maison. Il y avait beaucoup de place pour installer une alimentation 5V et un Pi Zero. Les câbles du capteur entrent par la fente caoutchoutée.

Ces boîtes semblent chères, mais lorsque le secteur est en cause, vous voulez vraiment quelque chose de conçu pour empêcher l’eau d’entrer plutôt que d’essayer d’utiliser un vieux pot de crème glacée.

Les parties

Système de surveillance de piscine Pi Zero WMon système fini comprend les éléments suivants :

Prises Energenie & Pi-mote

Énergie PiMoteEnergenie fabrique des prises télécommandées. Ils fonctionnent comme la plupart des prises de télécommande, mais avec une différence cruciale. Vous pouvez acheter un module complémentaire « Pi-mote » pour le Pi qui vous permet de contrôler les sockets à l’aide de Python.

C’est vraiment facile à installer et c’était la combinaison parfaite de matériel pour me permettre de contrôler la pompe. Le Pi-mote se branche simplement sur l’en-tête GPIO et permet de contrôler les sockets à l’aide de lignes simples de Python.

Capteurs de température

Capteurs de température étanches DS18B20J’ai opté pour deux capteurs de température d’interface « 1 fil » DS18B20 car je les avais utilisés auparavant. Plusieurs capteurs peuvent être connectés aux mêmes broches GPIO. Le DS18B20 peut être acheté en version étanche avec tout le câblage attaché. Ils sont légèrement plus chers que les capteurs standard, mais tout ce que j’avais à faire était de souder les trois fils aux broches GPIO appropriées à l’arrière du PiMote et ils étaient prêts à fonctionner.

L’un était stratégiquement placé dans une haie pour mesurer la température de l’air et l’autre tombait dans la piscine pour mesurer la température de l’eau. Mes capteurs avaient 3m de câble.

Les logiciels

Tous les logiciels sont disponibles sur mon Référentiel BitBucket de surveillance de pool. Il y a deux scripts principaux impliqués dans ce système et les deux sont écrits en Python. Ils sont lancés au démarrage à l’aide de cron via le script launcher.sh.

Le premier (poolmain.py) s’exécute en boucle continue et vérifie le mode. S’il est en « auto », il surveille l’heure et décide quand allumer et éteindre la pompe. Il envoie également des relevés de température réguliers à la plate-forme IoT basée sur le cloud « Thingspeak ». Vous pouvez voir ma chaîne publique avec les lectures récentes de la température de l’air et de l’eau ici : https://thingspeak.com/channels/293211

Le second (poolweb.py) utilise le framework Flask pour créer un ensemble de pages Web de base. Cela comprend un tableau de bord, un calendrier et une page de connexion. Le tableau de bord affiche les températures de l’air et de l’eau et permet également de changer le mode de la pompe. Il existe trois modes. Activé, Désactivé et Automatique. Lorsqu’elle est en mode automatique, la pompe s’allume et s’éteint automatiquement en fonction du programme défini sur la page du programme. La page de connexion garantit que seules les personnes autorisées peuvent jouer avec la pompe !

L’Interface Web

Le système présente une page Web sur le réseau local ou sur Internet (si vous avez configuré votre routeur de manière appropriée). Cela ressemble à quelque chose comme ça :

Système de surveillance de piscine Pi Zero W

L’horaire peut être modifié sur l’écran de programmation. Les coches sont placées en regard des heures pendant lesquelles la pompe doit être active en mode « auto » :

Système de surveillance de piscine Pi Zero W

Le nom d’utilisateur et le mot de passe par défaut sont « admin » et « splishsplosh ». Les pages sont accessibles via 192.168.1.42:5000 où « 192.168.1.42 » doit être remplacé par l’adresse IP de votre Pi sur votre réseau. 5000 est le port par défaut utilisé par Flask.

Pushover et Thingspeak

Notifications push-overLorsque le système démarre, il envoie une notification à l’aide de Pushover. Cela peut ensuite être lu sur un téléphone mobile à l’aide de leur application. C’est un excellent service et vous pouvez l’utiliser pour gérer les notifications d’autres systèmes.

Le message de notification contient l’adresse IP Internet de votre réseau et si vous avez configuré la redirection de port vers le Pi, vous pouvez accéder au tableau de bord lorsque vous êtes loin de chez vous. Il suppose que vous transférez le port 50000 vers le port 5000 sur le Pi.

Les températures sont envoyées à Thingspeak qui vous permet de voir vos données tracées sous forme de graphique.

Ces deux services nécessitent la création d’un compte et l’obtention de certaines clés API. Ils peuvent être ajoutés au fichier config.py.

configuration materielle

Energenie PiMote et capteursLa configuration matérielle est assez simple.

  • La pompe est connectée à la multiprise à l’aide d’une prise déportée Energenie.
  • Le Pi Zero est alimenté par un chargeur de téléphone 5v.
  • Le PiMote est attaché à l’en-tête GPIO du Pi.
  • Les fils du capteur de température ont été soudés à l’arrière du PiMote. « Rouge » à la broche 1 (3,3 V), noir à la broche 9 (Gnd) et jaune à la broche 7 (GPIO4). Une résistance de 4,7 Kohms est placée entre la broche 1 et la broche 7 conformément aux exigences de l’interface à 1 fil.
  • Carte SD dans la fente pour carte SD du Pi (évidemment !)

Configuration de la carte SD

Pour faire fonctionner le logiciel, vous pouvez suivre ce processus. Commencez par créer une nouvelle carte SD en utilisant la dernière version de Raspbian. J’ai utilisé la version « Lite » car je n’avais pas besoin de l’environnement de bureau.

Activez SSH en utilisant votre méthode préférée. J’ai utilisé mon PC Windows et j’ai simplement créé un fichier vierge nommé « ssh » sur la partition de démarrage de la carte avant de l’insérer dans le Pi.

J’ai ensuite configuré manuellement le WiFi à l’aide d’un fichier wpa_supplicant.conf. Cela doit être fait avant de démarrer la nouvelle image pour la première fois.

Veuillez changer le mot de passe Pi par défaut en quelque chose de sensé à l’aide de ce guide. Ceci est particulièrement important si vous autorisez l’accès à votre Pi via Internet.

Mises à jour et installation des packages

Exécutez les commandes suivantes pour mettre à jour l’image :

sudo apt-get update
sudo apt-get -y upgrade

Installez ensuite les packages suivants :

sudo apt-get -y install git
sudo apt-get install python3-gpiozero
sudo apt-get -y install python3-pip
sudo pip3 install flask
sudo pip3 install requests

Ces packages prennent en charge les fonctionnalités utilisées dans les scripts Python Pool Monitoring.

Téléchargements de fichiers de surveillance de pool

L’étape suivante consiste à cloner le logiciel depuis mon dépôt BitBucket :

git clone https://MattHawkinsUK@bitbucket.org/MattHawkinsUK/rpispy-pool-monitor.git

Renommez maintenant le répertoire en quelque chose d’un peu plus facile à taper :

mv rpispy-pool-monitor pool

et naviguez dessus :

cd pool

Rendez le fichier launcher.sh exécutable en utilisant :

chmod +x launcher.sh

Prise Energenie et couplage Pi-Mote

La première fois que le Pi-Mote est utilisé, il doit être associé à la prise. Le processus est décrit dans le manuel d’utilisation officiel. La prise doit être mise en « mode d’apprentissage » et cela peut être fait par :

  • Si la prise est allumée, appuyez sur le bouton vert pour l’éteindre
  • Maintenez le bouton vert enfoncé pendant 5 secondes ou plus, puis relâchez-le lorsque la lampe commence à clignoter à 1 seconde d’intervalle.

Exécutez ensuite le script d’appairage dans le répertoire utils :

cd /home/pi/pool/utils
python3 energenie_pair.py

Appuyer sur Entrée lorsque vous y êtes invité associera le Pi-mote au socket et le socket aura un ID de 1. Cet ID est utilisé dans les scripts Python pour activer et désactiver ce socket spécifique.

Configuration du capteur DS18B20

Afin de configurer les capteurs DS18B20, vous devez apporter une petite modification au fichier config.txt en utilisant :

sudo nano /boot/config.txt

ajoutez la ligne suivante en bas :

dtoverlay=w1-gpio,gpiopin=4

Il y a plus de détails sur le DS18B20 sur la page du capteur de thermomètre numérique à 1 fil DS18B20.

Mot de passe de l’interface Web

Le nom d’utilisateur et le mot de passe par défaut sont « admin » et « splishsplosh ». Le mot de passe est stocké sous forme de hachage, donc pour le modifier, vous devez utiliser le script hashgenerator.py pour convertir votre nouveau mot de passe en une nouvelle valeur de hachage.

cd /home/pi/pool/utils
nano hashgenerator.py

Ensuite, remplacez le mot de passe par défaut « splishsplosh » par votre mot de passe. Enregistrez en utilisant CTRL-X, Y et Entrée. Exécutez le script pour créer la valeur de hachage :

python3 hashgenerator.py

Le nouveau hachage peut être inséré dans le fichier config.py.

Fichier de configuration

Modifiez config.py en utilisant :

cd /home/pi/pool
nano config.py

Collez le nouveau hachage.

Le « FLASHSECRET » peut être changé en tout ce que vous voulez. Collez des caractères aléatoires pour personnaliser le vôtre.

Pour envoyer une notification de démarrage à Poussée et les données temporaires à Les choses parlent vous devrez vous inscrire auprès de ces services et obtenir des clés API. Ceux-ci vous sont personnels et doivent être soigneusement insérés dans le fichier config.py.

Enregistrez et quittez l’éditeur nano en utilisant CTRL-X, Y, ENTER.

Configuration de Cron

Pour que les scripts s’exécutent au démarrage du Pi, nous devons créer une entrée cron. Pour ce faire, utilisez :

sudo crontab -e

Si vous y êtes invité, sélectionnez un éditeur de texte par défaut. Je choisis généralement nano qui est l’option « 2 ».

Ajoutez ensuite cette ligne en bas :

@reboot sh /home/pi/pool/launcher.sh > /home/pi/pool/logs/cronlog 2>&1

Assurez-vous qu’il y a une ligne vide après cette ligne.

Cela exécutera le script de lancement au démarrage et exécutera à son tour les deux principaux scripts Python.

Configuration du fuseau horaire

Une dernière étape consiste à définir le fuseau horaire correct pour votre emplacement. Je dois le faire pour m’assurer que mon système connaît l’heure exacte et n’est pas en panne d’une heure. Vous pouvez le faire en :

  • Exécution de « sudo raspi-config »
  • Sélection des « Options de localisation »
  • Sélection de « Changer de fuseau horaire »
  • Sélectionnez votre région
  • Sélectionnez votre ville/région la plus proche
  • Enregistrez et quittez en sélectionnant « Terminer »

Taper la commande :

timedatectl

doit indiquer la bonne « Heure locale ».

Prêt à partir!

En supposant que les capteurs soient connectés et que vous ayez tout configuré correctement, tout devrait fonctionner lorsque le Pi est redémarré.

Dépannage

Comme pour la plupart des projets qui impliquent un mélange de matériel et de logiciels, les choses peuvent ne pas fonctionner tout de suite. Voici quelques conseils :

  • Vérifiez le contenu des logs dans /home/pi/pool/logs
  • Assurez-vous que les capteurs de température sont correctement câblés à 3,3 V, GPIO4 et à la terre
  • Assurez-vous que les capteurs de température sont correctement câblés et qu’il y a deux répertoires « 28-00 » dans /sys/bus/w1/devices
  • Vérifiez que tous les fichiers se trouvent dans /home/pi/pool/
  • Vérifiez que « crontab -e » contient la ligne @reboot
  • Vérifiez que le script launcher.sh est exécutable. Utilisez la commande « ls » et elle devrait apparaître en vert.

Les références

Les liens suivants fournissent des informations techniques supplémentaires sur les technologies que j’ai utilisées dans ce projet de surveillance de piscine et de contrôle de pompe :

Manuel Energenie Pi-Mote
https://energenie4u.co.uk/res/pdfs/ENER314%20UM.pdf

Support Energenie dans la bibliothèque gpiozero
http://gpiozero.readthedocs.io/en/v1.2.0/api_boards.html#energenie

Documentation du flacon
http://flask.pocoo.org/docs/