Guides Raspberry pi

Suivre le niveau d’une cuve de récupération d’eau sur Jeedom avec un Raspberry Pi

L’objectif du jour est de mesurer et disposer de la quantité d’eau contenue dans une cuve de récupération d’eau pluviale. Pour cela, nous mettrons en oeuvre plusieurs notions sur le Raspberry Pi, mais également sur le système domotique Jeedom. De quoi accroître vos connaissances des deux systèmes qui, il faut bien l’avouer font un couple parfait. Pour ce nouveau guide, je vais m’appuyer sur un premier guide autour du Raspberry Pi et de la mesure des distances que nous avions publiée sur le blog il y a deux ans.

[irp posts=”10072″ name=”Comment mettre en place un capteur de distance HC-SR04 sur Raspberry Pi”]

Côté matériel, je vais mettre à profit une ancienne version du Raspberry Pi. Amplement suffisante pour cette tâche, sachez toutefois que ce guide peut aussi parfaitement s’appliquer à une autre version du RPi.

Pour la mesure de distance qui sera la donnée principale de ce guide, nous nous appuierons sur l’excellent et économique module HC-SR04.

Enfin, pour mettre en musique le tout, nous aurons également besoin de deux résistances et quelques câbles.

Les composants nécessaires

Dernière mise à jour du tarif le  2024-05-01 at 15:42

Et pour l’alimentation du Raspberry Pi, n’ayant pas d’électricité près du récupérateur et n’ayant pas envie de tirer une nouvelle ligne. J’ai opté pour une autre option bien pratique, l’alimentation PoE. Oui, un petit module qui permet de conduire à la fois la donnée et l’alimentation du Rapspberry sur un seul et même câble réseau.

588 Commentaires
DSLRKIT Active PoE Splitter Power Over Ethernet 48V to 5V 2.4A Micro USB Plug for Raspberry Pi...
  • this POE Splitter is suitable for household IP camera with Micro USB Plug 5V power Port

Dernière mise à jour du tarif le  2024-05-01 at 15:42

L’outillage nécessaire

No products found.

Retour sur les GPIO du Raspberry Pi

Les GPIO sont les broches qui se trouvent sur le bord du Raspberry Pi. Ces broches permettent de connecter des composants électroniques qui seront ensuite capables d’être lues ou actionnées depuis un programme piloté par le Rpi.

Je vous invite à lire notre article sur un excellent ouvrage qui traite des GPIO et leur potentiel.

[irp posts=”10543″ name=”Mouvement, lumière et son avec Arduino et Raspberry Pi”]

Voici le brochage générique des Raspberry Pi.

 

Et voici le brochage qui concerne plus spécifiquement notre projet. Vous avez peut-être remarqué que j’ai mis à profit de mon projet, un vieux Raspberry Pi dans sa version B. Cette version était une des premières du mini-ordinateur et ne possédait donc pas autant de PIN que la dernière génération. Toutefois, cela n’a pas une grande importance puisque nous utiliserons des broches de la première partie, qui sont à la fois sur les anciennes et les nouvelles versions.

Le nommage des PIN ne change pas, elles sont simplement plus nombreuses sur les dernières versions du Rpi (Partie rouge de droite en plus).

Pour le repérage, comme vous pouvez le remarquer, nous viendrions utiliser 4 PIN. Deux pour l’alimentation 5V et GND et deux autres pour  collecter les données du capteur.

Le schéma de câblage

Pour le branchement des différents composants, rien de compliqué. il n’y a qu’à suivre ce petit schéma simple. Pour info, la résistance de 470 Ohms peut être remplacée par deux résistances de valeur équivalentes. Pour ma part, j’ai utilisé une résistance de 330 Ohms et une autre de 150Ohms. Soit 480Ohms mais rien de grave, ça fonctionne correctement quand même.

Le script Python

Les présentations sont faites avec le branchement des GPIO, voyons à présent la partie script. Comme dans l’article sur l’utilisation du HC-SR04, nous utiliserons le même script de base. Un script de Matt Hawkins bien pratique. Nous apporterons simplement quelques petites modifications à ce script pour envoyer les données à Jeedom.

Avant toute chose, nous allons nous assurer de disposer de tout le nécessaire pour l’environnement python du Raspberry Pi.

1 commençons par mettre à jour les depots :
apt-get update
2 Ensuite, il faut ajouter pip
apt-get install python-pip
3 maintenant, installons la bibliothèque requests
python -m pip install requests

Requests, va permettre à Python de faire des appels HTTP pour communiquer avec Jeedom et son API. C’est comme cela que nous mettrons à jour la valeur dans Jeedom.

4

À présent, téléchargeons le script ultrasonic de la même façon que dans le premier guide à l’aide de la commande suivante

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/ultrasonic_2.py

Du côté de jeedom

Du côté du système domotique Jeedom, nous avons juste à créer un device virtuel que le Raspberry Pi viendra alimenter avec sa valeur mesurée. Créez alors simplement un virtuel et notez son code de commande.

Création de la requête de mise à jour

Vous l’avez compris, nous utiliserons la bibliothèque python Requests pour envoyer les données de mesure à Jeedom. Nous devons donc pour cela construire la requête avant de l’ajouter dans le script.

changez alors les valeurs APIKEYDEJEEDOM et IDDUVIRTUAL par vos valeurs

payload = {'plugin': 'virtual', 'apikey': 'APIKEYDEJEEDOM' , 'type': 'virtual' , 'id': 'IDDUVIRTUAL' , 'value': distance}

Enfin, maintenant que nous disposons des paramètres à passer dans l’URL, construisons l’URL principale. Là encore remplacez simplement ADRESSEJEEDOM par l’adresse de votre Jeedom.

r = requests.post("https://ADRESSEJEEDOM/core/api/jeeApi.php", params=payload)

Mise à jour du script

À présent, il convient d’éditer le script python pour y intégrer nos paramètres d’appel à Jeedom.

1 Pour cela, ajoutez la ligne suivante en début dans script dans la partie import des bibliothèques :
import requests

2 Puis ajoutez les lignes précédemment construites avec vos données dans la boucle en fin de script

Modifiez le sleep de la boucle pour disposer d’une rotation du script 1 fois par heure soit 3600 secondes

3 Il ne reste plus qu’à sauvegarder le tout et tester. Pour ce test, lancez manuellement le script avec la commande suivante :
python ultrasonic_2.py

L’automatisation du script

Maintenant que nous avons testé le bon fonctionnement du script, il convient de l’automatiser au démarrage du Rapsberry Pi. Sur ce point plusieurs méthodes existent, je ne me suis pas cassé la tête, j’ai simplement choisi d’éditer le fichier de démarrage. Pour cela utilisez la commande suivante :

sudo nano /etc/rc.local

Une fois dans le fichier rc.local ajoutez-lui la ligne suivante :

python ultrasonic_2.py

Notez qu’il est possible d’avoir une erreur d’exécution, car la bibliothèque requests n’est pas forcément disponible sous l’environnement sudo. Pour corriger cela, exécutez simplement cette commande :

sudo pip install requests

C’est terminé ! À présent à chaque démarrage du raspberry pi, le script va s’exécuter automatiquement et mettre à jour le niveau de la cuve dans un virtual Jeedom toutes les heures.

La formule de conversion distance / volume pour Jeedom

Pour terminer, la formule de calcul pour convertir la distance en litre et disposez du véritable volume d’eau de la cuve.

pour une cuve de 500L mesurant 98cm de haut, les données sont les suivantes :

  • 0 cm = cuve pleine
  • 98 cm = cuve vide
  • contenance total = 500 L

l’équation à saisir dans Jeedom est donc ((98-#value#)x500)/98

Enfin, vous pouvez encore allez plus loin en manipulant les différentes données générées avec différents compteurs.

Ou encore avec une vue en relation avec la quantité de pluie tombée.

Conclusion

Voilà, nous venons de voir comment j’ai entrepris ce projet. Pour moi c’était une cuve de récupération d’eau, mais le principe est parfaitement applicable à une cuve de fioul, un réceptacle de granules de bois ou encore un puit. De la même façon, ce guide est réalisé sur Jeedom mais peut aussi être transposé à une autre box domotique comme Eedomus par exemple.

Pour aller plus loin, vous pouvez également imprimer un modèle 3D pour y loger le détecteur et le coller dans la cuve. Voici le modèle 3D que j’ai utilisé chez moi et que vous avez vu ce week-end sur mes réseaux sociaux.

Besoin d’un Raspberry Pi pour réaliser ce guide?

Dernière mise à jour du tarif le  2024-05-01 at 13:52

Aurélien Brunet

Chef de projet informatique, anciennement informaticien spécialisé dans l'IT industrielle, le réseau et les bases de données. Un peu geek à mes heures perdues, je me suis mis à la domotique en 2012 pour sécuriser mon domicile. Depuis, je teste, j’installe, je code, j’améliore mon installation et surtout, je partage avec vous mon expertise via ce blog et mon podcast Domotique Chronique pour améliorer votre quotidien dans la maison connectée !

Recent Posts

Stockez sans compter avec les offres SD, SSD, HDD des French Days

Cameras, Raspberry Pi, Tablettes, Smartphones, box domotique, Mini PC, PS5, ordinateur, GoPro, Khadas VIM, NAS...…

8 heures ago

La box domotique Home Assistant Green est en promo pour les French Days

Nous vous l'avons fait découvrir dernièrement dans un test au domo-lab, la box domotique prête…

9 heures ago

FRENCH DAYS : 50 offres domotiques Zigbee à saisir

Le printemps est là c'est aussi le retour des French Days. Plusieurs marques et catégories…

1 jour ago

Maîtrisez les sauvegardes Proxmox : Guide pour choisir et appliquer la meilleure option, locale ou distante

Nous avons vu dans un premier guide sur la série Proxmox, comment installer le système…

2 jours ago

Détecteur de présence zigbee Moes en promo: La precision de détection ultime

C'est une des révélations domotiques de 2023 au domo-lab. Voilà plusieurs mois que je dispose…

5 jours ago

Comment Migrer le réseau Zigbee vers le SLZB-06 sans perdre votre configuration existante ?

Dernièrement je vous ai fait découvrir le coordinateur Zigbee sur le réseau local SLZB-06, un…

5 jours ago