Gestion par Domoticz d’un arrosage automatique avec les ports GPIO du Raspberry 3B+

Nouvel article actualisé avec utilisation d’un ESP32

Le Matériel:

Cette méthode permet de se dispenser de l’utilisation de dispositifs de commande à intégrer dans Domoticz comme on le fait habituellement (Z-Wave, RFX etc..) mais impose la présence du Raspberry à proximité du départ de l’arrosage ( donc plutôt en Wifi ) et requière l’utilisation d’un module carte à 4 relais  5 Volts (accessible pour quelques euros).   Ali Express

GPIO Définition : Il s’agit de tous les connecteurs situés sur le coté du Raspberry auxquels on pourra relier divers équipements tels que Leds, contacteurs on/off (relais). On peut connaitre ou changer d’état un GPIO (passer le GPIO X à on pour enclencher une commande et inversement).

Les fonctions standard  des broches digitales  In/Out  du Raspberry sont maintenant supportées par Domoticz.  Mais seuls les  signaux logiques sont utilisables. (vrai/faux , on/off )

Ces ports fonctionnent aussi bien en entrée (input) qu’en sortie (output); en mode ouput (sortie) la tension fournie par une broche est de 3,3V et le RPI délivrera un courant de 50mA max. Dans cet exemple d’utilisation, nous allons utiliser 4 PIN en sortie (une par électrovanne) et le courant de sortie sur chacune d’elle sera donc de 12.5mA. Vous devrez donc vous assurer que les composants que vous reliez à ces broches supportent ce type de courant. (ici pas de problème puisque la carte relais supporte en entrée un courant de 5 à 15 mA). En mode input (entrée), une broche ne tolérera qu’une tension maximum de 3,3V ! Vous devrez donc toujours faire attention à vos branchements pour éviter d’endommager votre Raspberry Pi .

Certaines broches GPIO ont des fonctions avancées qui pourraient compliquer le fonctionnement simple recherché; nous choisirons d’utiliser les bornes repérées strictement en couleur orange seule sur le shéma ci-dessous.

Les Ports GPIO du RPI
Module Carte 4 relais 5 Volts

     Liaisons avec la carte:

  • PIN 2 (+5v)              → VCC
  • PIN 6 (GND)           → GND
  • PIN 29  (GPIO 5)    → IN 1
  • PIN 31 (GPIO  6)    → IN 2
  • PIN 33 (GPIO 13)   → IN 3
  • PIN 37 (GPIO 26)   → IN 4
Le Montage

A noter : la numérotation des PIN ne correspond pas à celle des GPIO

Les 4 derniers PIN  sont des exemples choisis parmi les broches simples en orangé.


Le Module Carte 4 Relais:

Cette interface relais 4 canaux permet de contrôler divers appareils et autres équipements avec un courant élevé.

  • Entrées opto-isolées: aucune liaison électrique entre le circuit de commande et les sorties relais (liaison optique par éléments photo-électriques)
  • LEDs d’état pour sortie relais.
  • Contrôle courant d’entrée : 5 – 15 mA.
  • Contrôle tension d’entrée : 5 – 12 VCC.
  • Sortie relais : 250 VCA 10 A , 30 VCC 10 A (non-inductive)

Ces relais peuvent également commander des circuits de forte puissance y compris en 220 Volts. Ils se vendent aussi  en module de 6 ou 8 et aussi à l’unité.

L’envers du circuit imprimé ne comporte aucune isolation et les points de soudure apparents pourraient représenter un danger d’électrocution en cas de raccordement du circuit de sortie au 220 Volts. Nos électrovannes d’arrosage sont alimentées en basse tension (24 Volts AC), ne présentant donc aucun risque. Il faut tout de même prévoir une isolation de cette face pour éviter les courts-circuits.

Dans cet exemple, les relais vont piloter en On/Off les quatre électrovannes du circuit d’arrosage. Dans Domoticz, on créera 4 « Devices » correspondants à chacune des électrovannes. On pourra les commander directement par l’interface, ou planifier leur fonctionnement par un script, ainsi que les neutraliser en cas de pluie.

Chaque action ON d’un des quatre devices créés dans Domoticz enverra sur le PIN GPIO correspondant un signal de 3.3Volts et de faible courant (16mA) pouvant néanmoins stimuler un relais qui fermera le circuit de l’électrovanne, déclenchant donc l’arrosage de la zone concernée.  A l’inverse, une action OFF du device coupera ce courant, provoquant ainsi l’arrêt de l’arrosage sur la zone. Nous verrons plus loin que ces opérations peuvent être planifiées de façon totalement automatique.


Intégration des GPIO dans Domoticz :

Les Prérequis:

  • On supposera que Raspbian et la suite Domoticz sont  installés sur le Raspberry ; si ça n’est pas le cas de nombreux tutoriels sont disponibles  sur Internet :   https://easydomoticz.com/domotique-comment-debuter/installation-de-domoticz-sur-raspberrylinux-debian/
  • Il faudra connecter le Raspberry en SSH avec une console telle que PUTTY   à télécharger sur  : https://www.putty.org/
  • La gestion des GPIO par le Raspberry nécessite un certain nombre d’ajouts logiciels :
  • Le compilateur GCC pour pouvoir générer les outils GPIO:   taper  sudo apt-get install gcc
  • Le support des GPIO est basé sur la librarie wiringPi  de Gordon Henderson. sudo apt-get install git-core
  • Nous proposons une image prête à installer qui inclut tous ces modules à partir d’une version Raspbian Buster.    Images pour Raspberry

Si tout fonctionne normalement on doit obtenir la table suivante en tapant dans la console PUTTY la commande:  gpio readall

Il faut déclarer maintenant les ports que l’on va utiliser ainsi que leur mode de fonctionnement (IN ou OUT).   Ici nous allons travailler avec 4 Ports GPIO en mode OUT. Il est nécessaire que ces informations soient connues du système pendant le boot AVANT le lancement de Domoticz. Ces commandes sont du type: gpio export x out où x représente le numéro du port à asservir. Dans notre exemple à 4 électrovannes la commande devra être répétée quatre fois avec des valeurs de x égales respectivement aux ports choisis : 5, 6, 13 et 26. Ce qui donnera:

  • gpio export 5 out
  • gpio export 6 out
  • gpio export 13 out
  • gpio export 26 out

Ces quatre lignes de commande placées initialement dans le shell domoticz.sh et en début de fichier n’ont pas été prises en compte car ce fichier doit sans doute être lu trop tardivement au cours du boot pour satisfaire l’anticipation requise. Il a donc été décidé de placer ces commandes dans un shell « maison » que nous appellerons gpio.sh. 

  • Créer le shell  dans /home/pi/domoticz/scripts avec l’éditeur sudo nano gpio.sh (puis CTRL O pour enregistrer et CTRL X pour quitter l’éditeur).
  • Changer ses attributs en lecture/écriture/exécution autorisées: sudo chmod 755 gpio.sh
  • Lancer son éxécution:    ./gpio.sh   un retour sans erreurs à la ligne de commande valide sa bonne exécution.

Il suffira ensuite de le déclarer dans la crontab avec l’option @reboot pour qu’il soit lu à chaque démarrage du RPI.

Après redémarrage on tape la commande: gpio exports pour vérifier la prise en compte

On voit les quatre ports déclarés en OUT

Connexion à l’interface Domoticz:

Il faut ajouter le nouveau matériel GPIO et 4 nouveaux Devices

1-Dans Réglages/Matériels
2-Choisir Raspberry’s GPIO port, lui donner un nom puis cliquer sur Ajouter
3-Dans l’onglet Interrupteurs Ajouter ensuite un dispositif en lui attribuant un nom et port GPIO de la liste
4-On répète 4 fois l’opération pour obtenir les 4 devices d’arrosage dans la page Interrupteurs

Le Planning d’Arrosage:

On peut bien sur activer ces 4 devices directement depuis l’interface ou avec un script, mais il est plus confortable de planifier les départs et durées d’arrosage en leur établissant un planning d’arrosage à plusieurs sessions (1 planning pour chacune des  zones, pouvant comporter chacun une ou plusieurs sessions) ainsi que l’activer/désactiver totalement ou par session en cas de pluie avec une commande JSON dans un script.

Ce planning pour la zone 1 prévoit un départ d’arrosage à 3h tous les jours (ligne1) et un arrêt au bout de 15 minutes (ligne 2)

La commande JSON d’activation/désactivation se présente sous la forme: http://ip/json.htm?type=command&param=enabletimer(ou disabletimer)&idx=y

L’idx (y) ne fait pas référence au device mais à une ligne (ou session) dans le planning. Pour connaitre cet index, il faut taper dans votre navigateur: http://ip/json.htm?type=schedules qui  renverra :

Il suffit de repérer toutes les  références au dispositif concerné (Ligne DevName).

Ici deux références à  la zone 1 puisque son planning comporte deux lignes et l’index de chaque ligne se lira en Ligne TimerID ( ici 1 et 18)

On peut laisser le planning gérer l’arrosage et surveiller par un script_time en LUA qui vérifiera toutes les minutes s’il a plu et neutralisera à la demande les lignes de planning. La syntaxe de la commande à écrire dans un tel script sera par exemple pour la ligne 2 du planning:

commandArray[‘OpenURL’]=’http://ip/json.htm?type=command&param=disabletimer&idx=18′

Si on veut agir ensuite sur une autre ligne du planning, la commande suivante sera différente:

commandArray[#commandArray+ 1] = {[‘OpenURL’] =’http://ip/json.htm?type=command&param=disabletimer&idx=1′}

En effet, en répétant une commande identique, seule la dernière commande serait exécutée, étant donné que les valeurs de idx sont rangées dans un tableau de variables et que la dernière variable lue écrase les précédentes. Il faudra donc incrémenter par #commandArray+1. Voir le script d’exemple en fin d’article. 

il faudra prévoir dans ce script une réactivation si la pluie a cessé:

commandArray[‘OpenURL’]=’http://ip/json.htm?type=command&param=enabletimer&idx=18′

En remplaçant ip par l’adresse du serveur Domoticz en accès distant. Dans ce script, il faudra multiplier les commandes pour agir sur toutes les lignes planifiées de chaque électrovanne.

Dans l’onglet Météo on dispose d’un « device » Pluie si on a intallé Forecast dans les Réglages/Matériels
 

Exemple de script_time pour gérer le planning préétabli:


 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *