AgroLink - Programmeur d'irrigation modulable, automatisable, extensible - open source
Préambule
Cette page offre une expérience en matière d'irrigation open source, en recherche de solutions interopérables, permettant avec des équipements et logiciels de fabricants différents, de fonctionner ensemble.
Je l'ai écrite sur mon temps libre, elle est le fruit d'une longue expérience en informatique, sous système Linux, et ces connaissances sont actuellement exploitée pour la gestion de l'eau de ma future pépinière.
N'étant pas figée, elle sera vouée à évoluer selon les corrections et améliorations, ainsi que les investissements matériels supplémentaires possibles.
J'espère qu'elle sera utile à tous les jardiniers amateurs, maraîchers professionnels, afin d'économiser et ajuster leur usage de l'eau autant que nécessaire selon leurs besoins, et automatiser des processus demandant généralement beaucoup de temps afin de les soulager dans leur gestion de l'arrosage. J'invite tout un chacun à partager à son tour ses connaissance après avoir profit de ce qui est partagé ici.
Dans le contexte présent, et professionnel, cette solution sur laquelle on garde la mainmise, est adaptable à toute situation, le système de commande de l'irrigation, irrigue/rafraîchit une parcelle et un jardin en toute autonomie, selon plusieurs paramètres précis, intégrant les prévisions de Météo France, la température actuelle, le niveau d'humidité d'un substrat/sol, et la détection ou non (réelle, sur le lieu) de pluie, sans nécessité d'abonnement à un service tiers comme certains programmeurs commerciaux.
Ce système tout en un est évolutif, personnalisable de A à Z, accessible depuis l'extérieur par Internet, et pourra intégrer une station météo, plusieurs capteurs de températures et d'humidité supplémentaires, et devra permettre une surveillance et paramétrage depuis un ordinateur, mais également depuis un smartphone.
Il est même possible d'envisager l'intégration d'une vidéo-surveillance sur place et accessible à distance, et d'ajouter des capteurs de présence et de décider d'action spécifique selon situation. (Alertes, évènements particuliers…)
Vous pouvez soutenir/partager mon travail, mes recherches, et contribuer au projet de pépinière écologique PEPINATURE en achetant des plants.
Les principaux outils matériels utilisés
Routeur 3G/4G :
-Huaweï B715s Gigabit - Un autre routeur peut faire l'affaire tant qu'il dispose de ports réseaux Ethernet, du wifi, et d'internet en 3G/4G ou d'une connexion à internet fibrée, ou par satellite)
-Câble réseau Ethernet blindé de 0,5m - Un autre peut faire l'affaire, la connexion filaire est toujours préférable au wifi, pour des raisons de sécurité, fiabilité, et stabilité.
Micro-ordinateur basse consommation :
-Un Raspberry Pi 4 - 1Gb de mémoire vive peut suffire, ou plus selon vos besoins particuliers supplémentaires - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-Un boîtier pour SSD au format M2 SATA vers USB 3.x (compact)
-Un SSD M2 SATA - Les clés USB ont une durée de vie (cycles d'écritures) beaucoup moins élevés, incompatibles avec une grande journalisation des événements liés à un tel système qui va en enregistrer une multitudes. (Sauf à des fins de tests temporaires, auquel cas on clone ensuite le contenu de la clé USB vers le SSD)
Outre ses grandes performances, un SSD est donc indispensable sur la durée.
-Une carte d'extension pour Raspberry Pi, gérant matériellement l'irrigation :
-OpenSprinkler Pi (OsPi) - Option sans alimentation externe, mais avec un boitier - Cette carte permet de contrôler l'irrigation et l'état des capteurs branchés - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-L'adaptateur A2D Analogique vers Numérique - Permet l'utilisation des capteurs analogiques tels que le SMT-50 et le Rainclick sur l'OsPi. - Étant un élément central, si vous le pouvez, prenez en un plusieurs en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-Optionnellement : un extenseur de zones pour OsPi en version 2.1 - Permet de gérer encore davantage d'électrovannes, cumulables par 16 extenseurs, permet de gérer jusqu'à 128 électrovannes. - Étant un élément central, si vous l'utilisez et le pouvez, prenez-en en double, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
Les accessoires :
-Armoire électrique IP65 400x600x200 à deux serrures et 3 rails
-Serrure à clé et poignée pour armoire électrique étanche
-Rails DIN pour le support des accessoires
Alimentation :
-Alimentations sur rail DIN AC 230V (courant alternatif / AC) => 24V (courant alternatif / AC) Alimente l'OpenSprinkler PI (OsPi) qui alimente lui même le raspberry PI, les capteurs, et électrovannes - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-x2 2 prises modulaires 2P+T 16A sur rail DIN aux normes françaises - Le sigle NF est très important, les assurances ne prennent pas en charge les accidents liés aux défauts électriques sans ça, et c'est un gage qualitatif aux exigences fortes pour le matériel électrique, de façon général, prenez tout ce que vous pouvez en NF, quelle que soit la situation. - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-x2 prises connectées (wifi) NOUS A1T sous firmware Open Source "Tasmota" 10A - permet l'allumage et l'extinction des prises connectée via une interface web, un service tiers, ou un smartphone, ainsi que la surveillance de la consommation d'énergie, et de leur utilisation. Le firmware Tasmota est Open Source et libre, il permet spécifiquement une connexion avec d'autres logiciels directement par le wifi, ce que ne permettent généralement pas les prises utilisant d'autres protocoles de communication sans matériel supplémentaire. - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, en cas de problèmes inattendus, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
Capteurs :
-Capteur de pluie Hunter rain Click - Permet de détecter toute pluie en cours. - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
-Capteur d'humidité du sol SMT50 Truebner - Il s'agit d'un modèle utilisant un champ électromagnétique à des fins de détection, il n'y a donc aucune oxydation et sera utilisable sur du très long terme. Un bricolage serait même possible pour en faire une version sans fil fonctionnant avec 3 piles AAA. - Étant un élément central, si vous le pouvez, prenez en un supplémentaire en stock, pour pallier à tout problème inattendu, tels qu'un accident ou une panne.
Électrovannes :
-Électrovannes RainBird 100-HV-MM 1" AG 24 VAC (Filetage mâle, 24V en courant alternatif / AC) - Les plus qualitatives actuellement, très durables.
Connecteurs étanches :
-Connecteurs étanches pour électrovannes Scotchlok - pour lier des câbles de rallonge aux électrovannes, même en extérieur, sans nécessiter de boitier étanche.
Tuyauterie :
-Tubes Polyéthylène (PE) Ø25mm ou Ø32mm de norme aux normes françaises (Le respect de la NF est très important !) - Selon le diamètre de votre arrivée d'eau ! Jamais en PVC, se dégradant rapidement et craignant le gel.
Raccords tuyauterie :
-Raccords de tubes polyéthylène (PE)
-Raccords en T pour tubes polyéthylène (PE)
Outils spécifiques :
-x2 clés à chaînes pour pouvoir serrer les raccords - Une pour tenir, une pour serrer.
La/les Pompes :
-2 Pompes immergées auto-amorçante avec flotteur de sécurité - S'amorce seule, refroidissement permanent dans l'eau, se coupe pour éviter la surchauffe si manque d'eau. Pas de pompes de surface qui peuvent surchauffer et consomment davantage d'énergie, en plus de s'user bien plus rapidement. Si vous n'avez que ça toutefois, faites avec mais prenez cette pompe en secours en plus. L'eau pouvant être vitale selon les projets, une pompe de secours est indispensable pour parer à une situation d'urgence.
Si vous en perdez une, vous devrez toujours en avoir une de secours en stock, au cas ou.
Les principaux outils logiciels utilisés
Système d'exploitation :
-Raspberry Pi OS Lite, basé sur la distribution Linux Debian, fiable et stable, optimisée pour les Raspberry PI avec un support officiel du fabricant sur 5 ans.
Étant basé sur un noyau Linux, le fonctionnement est assuré en réalité pour beaucoup plus de temps, ce dernier offrant toujours le support de la première version matérielle, pourtant sortie en 2012. On peut raisonnablement estimer qu'un Raspberry Pi 4 sera toujours supporté par le noyau Linux dans 20 ans dans un contexte numérique favorable, voir davantage.
Logiciels :
-OpenSprinkler Firmware pour Raspberry Pi - Firmware Open source de support de la carte OpenSprinkler PI (OsPi), prend en charge les entrées/sorties liées à la carte OsPi, et fournit une interface web, et une API pour des outils tiers comme une application sur smartphones, ou des serveurs centraux de gestion domotiques, ou n'importe quel autre programme voulant intéragir avec le firmware OpenSprinkler.
-Home Assistant OS-Agent - Service faisant le lien entre le système hôte (ici Raspberry Pi Os, basé sur la distribution Linux Debian) et Home Assistant.
-Home Assistant Supervised - Superviseur du serveur central libre de gestion domotique Home Assistant, gérant son installation via Docker, et fournissant une interface web et une API pour des outils tiers comme une application sur smartphones. Il existe également une application pour smartphones officielle.
Attention, le Raspberry Pi 1 (première version) n'est plus supporté et n'est de toute façon pas suffisamment performant. Il est conseillé actuellement de se tourner vers la version 4 tel que précisé plus haut dans les besoins matériels, ou de disposer au minimum de la version 3 ou d'un Raspberry Pi Zero 2 W qui en est un équivalent dans un plus petit format.
-HACS - Permet d'installer facilement et automatiquement des extensions tierces au sein d'Home Assistant ne faisant pas partie des intégrations tierces fournies officiellement.
-Hass Open Sprinkler - Extension de support du firmware OpenSprinkler pour Home Assistant accessible en quelques clics via HACS ; Permet de profiter de l'API du firmware OpenSprinkler afin de surveiller l'état des capteurs gérés par ce dernier et des électrovannes, ainsi que leur activation/désactivation sans devoir passer par l'interface web fournie par le firmware OpenSprinkler.
1ère étape : l'emplacement
L'on choisira un emplacement ombragé, à l’abri du gel. À minima, à l'ombre du soleil.
Les coffrets électriques et équipements présentés ne sont pas conçus pour être exposé à 55°C en plein soleil quand la température annoncée est de 40°C dehors.
Idéalement, on conservera l'armoire électrique au plus proche de la pompe ou arrivée d'eau, en respectant les normes de distance minimales réglementaires en la matière.
Il en ira de même pour les électrovannes, sauf nécessité impérieuse ou pour des raisons pratiques propres aux choix et contraintes de chacun.
2ème étape : le montage
Avant toute chose, il va falloir procéder au montage de l'ensemble. Dans le cas présenté, j'ai utilisé deux modèles de Raspberry Pi, la version “Zero 2 W” et la version “4”.
En pratique, ça ne fait aucune différence, le fonctionnement étant similaire, j'ai juste rajouté un adaptateur USB ⇒ Ethernet pour la version Zero 2 W qui ne dispose pas nativement de ce port réseau, et j'ai dû souder la broche GPIO moi-même qui ne l'était pas d'origine (mais on peut l'avoir avec déjà soudée, et c'est déjà fait d'origine sur la version 4, systématiquement.)
La première chose à faire consiste à monter l'OsPi sur son boîtier, qui lui même ira se fixer sur les rails DIN dans l'armoire électrique.
-On distingue déjà plusieurs informations de base, au dessus du bornier. à gauche se situe la prise d'alimentation (orange) 24v/ac, tandis qu'en bas de gauche à droit, on observe le neutre (GND), SN1 (Capteur N°1, pour le capteur d'humidité SMT-50), SN2 (Capteur N°2 pour un deuxième SMT-50 ou le capteur de pluie Rainclick dans le cas présent), +5V (la phase), et deux ports COM (le neutre pour n'importe quelle électrovanne.).
-S'ensuivent ensuite les numéros 1 à 8 correspondant aux phases des 8 électrovannes pouvant être connectées de base, et à droite, la broche d'extension permettant de connecter l'extendeur de zones pour rajouter un support jusqu'à 128 électrovannes de base normalement, mais l'OsPi offre la possibilité d'en configurer jusqu'à 200. Il est même possible de lier ensemble plusieurs OpenSprinkler pour les faire fonctionner ensemble, mais il s'agit d'usages beaucoup plus avancés.
-Au dessus, se situe la prise d'accueil des broches GPIO des raspberry Pi, qu'il faudra TOUJOURS veiller à bien faire correspondre avant d'alimenter le tout. S'il y a un décalage à gauche ou à droite des broches, il est possible d'endommager l'appareil. Il vaut mieux bien vérifier que le raspberry PI est correctement installé.
Immédiatement à gauche, se situe le fusible, soudé, mais remplaçable en cas de court circuit !
-Tout en haut, de gauche à droite, se situent, encadrés, les connecteurs GPIO utilisés par l'OsPi, et à côté, ceux utilisables pour des services tiers.
-Totalement à droite en haut se situe pour des utilisations spécifiques, un port permettant de souder un transmetteur radio.
Voici un exemple d'assemblage de base, le raspberry PI est bien positionné, un câble adaptateur micro-USB ⇒ USB pour brancher l'adaptateur Ethernet a été installé sur le raspberry Pi, et le convertisseur A2D Analogique ⇒ Numérique a été positionné correctement sur le bornier, et les fils d'électrovannes sont placés pour l'exemple. (idéalement, on étame les multibrins et les coupent plus courts.)
Ne reste plus ensuite qu'a fixer le couvercle, et visser le support d'installation sur rail DIN.
Le boîtier n'a pas une très belle finition, étant imprimé via une imprimante 3D, mais il fera l'affaire.
Le coffret électrique
Pour le coffret, on installe tout d'abord les serrures, sécurité indispensable pour éviter tout risque électrique à quiconque, y compris en cours d'installation et absence momentanée.
Ensuite, on sort la plaque de support pour y placer des rails DIN, que l'on viendra solidement y visser ! Leur emplacement dépend de votre bon vouloir et de la taille du coffret.
Il faudra ensuite visser la plaque avec les rails installés dans le boîtier.
Il sera ensuite nécessaire de positionner les 4 fixations nécessaire pour l'installation du coffret sur son support.
L'installation des éléments dans l'armoire éléctrique
On commence par installer l'alimentation et un module OpenSprinkler complètement assemblé et une prise 220v (que l'on ne branchera qu'à la fin) sur l'alimentation.
Puis l'on coupe proprement la gaine et torsade le fil multibrin faisant le lien entre le transformateur et l'OsPi
On connecte ces derniers ainsi avec la prise mâle d'alimentation de l'OsPI
Voici un exemple dans lequel j'ai connecté deux OsPi, l'un étant là en secours de l'autre, au cas où il y aurait un dysfonctionnement, il suffira simplement de permuter les bornes de l'un à l'autre, et d'y connecter le SSD USB également.
Un petit zoom sur le branchement électrique sur le transformateur :
Prévoyez les trous et connecteurs étanches en perçant le coffret pour faire passer les câbles d'alimentation générale, pompes, capteurs, électrovannes !
Dans le cas de l'installation de l'A2D avec un capteur de pluie Rainclick, l'installation est un peu particulière, il va falloir tout installer comme indiqué sur la photographie suivante :
Comme vous pouvez le voir, le capteur étant spécifique, on connecte directement le neutre (en noir) du capteur de pluie à GND, avec la première broche de l'A2D. Le second câble lui, la phase (en rouge), se connecte à SN2 (le capteur N°2) avec la troisième broche depuis la gauche de l'A2D. Enfin, sur l'A2D, on crée un pont avec un fil entre GND et SND.
Pour faire simple, considérez que le rainclick se comporte comme un interrupteur. Quand il est sec, le contact entre ces deux fils est permanent de son côté, et quand il est humide, il n'y a plus de contact et OpenSprinkler détecte ce changement d'état.
Concernant le capteur d'humidité SMT-50, c'est un peu différent, la mesure sera analogique, le petit potentiomètre (la première vis entourée d'un plastique bleu) permet de régler la sensibilité désirée de ce dernier avant le déclenchement de l'état “activé” (humidité détectée) ou “désactivée” (absence de détection), qu'il conviendra de régler selon vos besoins, dépendant de votre type de substrat ou sol. Plus on la tourne vers la droite moins la sensibilité à l'humidité sera élevée, et vice versa.
On connecte ainsi, sur l'A2D uniquement, le fil blanc sur le GND avec le fil déjà présent du pontage capteur de pluie Rainclick, le fil jaune sur SN1 (correspondant au capteur N°1), et le fil marron sur +5V (la phase).
Voici un exemple typique de connexion d'une électrovanne :
Pour chaque électrovanne, un fil va sur un des deux ports COM, l'autre sur 1 à 8 prévues à cet effet, voir davantage si vous avez des extenseurs de zones.
Une règle impérative toutefois, on ne branche jamais plus d'une électrovanne sur la même ligne au risque de détériorier l'OsPi !
Et voici un exemple d'intégration de base, dans laquelle j'ai récupéré une multiprise qui dispatche le 220v, le Raspberry Pi Zero 2 W se situe dans l'OsPi de gauche et un Raspberry Pi 4 a pris place à droite, avec temporairement une clé USB le temps de recevoir un SSD. L'on observe également que le câble Ethernet est branché, connecté au routeur 4G, et qu'une prise connectée “Nous A1T” (voir le matériel en haut de page) est installée sur la multiprise.
Évidemment, des prises 2P+T fixées sur les rails DIN seront plus stables et mieux intégrées, c'était du temporaire.
L'armoire quand à elle, est fixée sur une palette de récupération EPAL en bon état, elle même posée sur un parpaing, et fixée à la clôture, à l'abri du soleil direct.
3ème étape : Installations et configuration logicielles
Installer le système d'exploitation
Mon système d'exploitation sur PC est ArchLinux, mais la pratique elle même est assez générique et devrait être accessible à tous.
Tout d'abord, il convient d'installer “Raspberry PI Imager” disponible pour Linux, MacOs, et Windows.
Une fois installé, vous devrez suivre le processus d'écriture de votre média USB (carte SD, clé usb, SSD..) tel quel :
On choisit ensuite “Raspberry Pi Os (autre)” :
Puis “Raspberry Pi Os Lite 64 bits” :
Ensuite on clique sur la petite roue crantée en bas à droit de la fenêtre du logiciel, pour activer des paramètres d'origine :
-Le nom d'hôte correspond au nom que vous allez donner, visible sur le réseau, du Raspberry Pi.
-L'on active “SSH” permettant de contrôler en lignes de commandes le Raspberry Pi par le réseau en se connectant avec son nom d'utilisateur et mot de passe.
-On définit également un nom d'utilisateur et un mot de passe.
-On définit optionnellement le wifi, si vous souhaitez connecter votre raspberry Pi au réseau par ce moyen. Une connexion filaire est beaucoup plus fiable et recommandée, mais si vous n'avez pas d'autre choix, le wifi est possible.
-Définir les réglages locaux, ici sur Europe/Paris“ en France, et le type de clavier “fr”
-Cochez “Jouer un son quant terminé”, “Éjecter le média quand terminé”, et décochez “Activer la télémétrie” si vous ne souaitez pas partager vos informations d'installation avec la fondation Raspberry Pi.
Enfin, cliquez sur enregistrer.
Cliquer sur “Choisir le stockage”, puis sélectionner le bon média d'installation (idéalement ne branchez que celui là, pour ne pas vous tromper), qu'il s'agisse d'une carte SD, clé USB, SSD USB… Ici dans l'exemple, est branché un SSD faisan tune taille totale de 960,2Gb, où Manjaro est déjà installé. Il sera formaté par l'application.
Il ne reste plus qu'à cliquer sur “Écrire” et laisser le logiciel télécharger et installer le système d'exploitation pour vous, ce dernier vous avertira quand l'installation sera terminée !
Il est désormais temps de passer à la prochaine étape !
1er démarrage du raspberry Pi
Pour démarrer le raspberry PI c'est très simple, il suffit soit de brancher un câble USB sur le port d'alimentation prévu à cet effet, soit de l'installer sur l'OsPi, puis d'alimenter en énergie cette dernière.
Il est possible d'interagir avec le raspberry Pi de deux manières, soit en le branchant à un clavier, et un écran, soit en profitant de l'accès SSH.
L'accès SSH est une solution simple et pratique, vous permettant d'interragir simplement directement depuis votre ordinateur.
Le premier démarrage étant généralement un peu plus long, on peut considérer que le raspberry Pi est totalement démarré à partir du moment où le routeur utilisé lui a attribué une IP.
Ici dans le cas du Routeur 4G Huaweï B715s, voici un exemple donné pour voir comment récupérer l'IP. À noter que mes pages sont en anglais car je dispose d'une version internationales, mais les français est disponible sur la version française.
Ici, j'ai configuré un mot de passe pour l'accès et la configuration du routeur.
Ensuite, on arrive sur l'écran d'accueil permettant de gérer les paramètres réseaux, les appareils connectés, lire/envoyer les sms, et voir quelques statistiques.. :
Il s'agit ensuite de se rendre sur la partie “Devices” dans le cas présent en anglais.
On observe bien la présence d'un Raspberry Pi 4 que j'ai nommé (host) pi4-pepinature01. L'adresse IP allouée par le routeur est de 192.168.1.130.
On va directement forcer le routeur à toujours allouer cette adresse IP, via l'Adresse matérielle “MAC” reconnue spécifiquement pour ce dernier. Elle est unique pour chaque périphérique réseau quel qu'il soit.
Se rendre dans les paramètres avancés ⇒ Routeur ⇒ DHCP, dans le cas d'une première fois, la liste en bas sera vide. Ici elle est indiquée tel quel à titre d'exemple.
Cliquer sur le ”+“ et interagir tel que définit sur l'image ci dessous, en choisissant l'IP fixe qui sera assignée, puis sauvegarder. (Ici “Save”)
Le Raspberry Pi est désormais prêt à être accessible via SSH.
Pour ceci, rien de plus simple, vous devez disposer du programme “SSH” sur votre système Linux ou Mac, ou de ”Putty“ sous Windows.
Ici, ssh sera utilisé depuis un terminal sous une distribution Linux installée sur mon PC.
Pour se connecter en SSH, suivre simplement cet exemple :
ssh nom-d'utilisateur@adresseIP
Interagir avec le Pi via SSH
Ici ssh est le programme, nom-d'utilisateur est celui que vous avez choisi lors de l'installation de Raspberry Pi Os avec Pi manager, et l'adresse IP est celle qui a été rendue fixe, choisie précédemment.
Dans mon cas, voici ce que donne la commande réellement.
ssh camille@192.168.1.130
Le mot de passe ne s'affichera pas quand on le tape, c'est normal, il s'agit d'une sécurité de base avecun terminal sous Linux, pour se protéger des regards indiscrets.
À partir de ceci, on aura la main sur le système d'exploitation du raspberry PI depuis son propre ordinateur :
Mettre à jour Raspberry Pi Os
On commence donc par mettre à jour le système d'exploitation avec cette commande :
sudo apt update
-sudo est un programme se rajoutant avant le début de n'importe quelle commande pour exécuter cette dernièreavec des droits d'administration (aussi appelé root)
-apt est un programme de gestion des paquets logiciels, qui sont téléchargés et installés en toute sécurité depuis des serveurs en ligne dédiés à cet effet.
-update est un argument du programme apt, permettant de mettre à jour la liste des logiciels fournies par les serveurs de Raspberry Pi Os, gérés par la fondation Raspberry Pi.
sudo apt upgrade
-upgrade est un argument du programme apt, permettant de mettre à jours tous les logiciels du système. Par ce biais, apt va télécharger et installer les paquets logiciels standardisés de tout ce qui est installé et ayant été fournis par les dépots de logiciels pré-configurés. Contrairement à Windows, chaque programme ne gère pas à sa sauce ses mises à jour, et il n'y a pas besoin d'aller sur des sites internet pour récupérer les mises à jour, sauf exception, car ça reste possible pour des utilisations avancées.
Ensuite une fois le tout terminé l'on redémarre le système avec cette commande :
sudo reboot
-reboot est un simple programme permettant de redémarrer la machine, ici le Raspberry Pi, mais c'est la même chose sur PC. Il n'est pas possible de base, de redémarrer la machine sans les droits d'administration, avec cette commande. Il est également possible d'utiliser la commande poweroff pour éteindre complètement l'appareil.
Accéder depuis une connexion internet au système d'exploitation.
Pour cette manipulation, l'on peut utiliser un service nommé Tailscale, gratuit, permettant la mise en lien de plusieurs machines au sein d'un réseau virtuel sur Internet.
En clair, Tailscale est un routeur réseau virtuel, créant des connexions réseau virtuelles transitant à travers le réseau internet, mais sans routeur matériel ni câbles réseaux.
Un autre services du même genre est utilisable nommé Zerotier mais ce dernière s'avère être moins stable en pratique, avec parfois des difficultés d'accès à une machine.
Chacun de ses services va créer un port réseau virtuel, et allouer une adresse IP à chaque machine connectée au même réseau.
Là où l'adresse IP 192.168.1.130 dans l'exemple précédent ne permettait une connexion qu'à quelqu'un connecté sur le même routeur que le raspberry PI, ces services offrent donc un accès depuis internet avec une autre adresse IP. Celle ci sera par la suite utilisée pour se connecter aux interfaces web, ou au système via SSH.
Pour installer Tailscale on exécute ces deux commandes qui vont rajouter la clé de sécurité (authentification des logiciels) et le serveur Tailscale à la liste des dépôts de logiciels :
curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg>/dev/null curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
Puis l'on met à jour la liste des logiciels présents dans les dépôts (serveurs) de logiciels.
sudo apt update
Ensuite, il ne reste plus qu'à installer tailscale :
sudo apt install tailscale
-L'argument install pour le logiciel apt, permet de préciser quel logiciel on souhaite installer, fourni à la suite, avec un espace si l'on veux en installer plusieurs d'un seul coup.
Il ne reste plus qu'à lancer tailscale avec cette commande :
sudo tailscale up
Tailscale va alors vous proposer de cliquer sur un lien, pour vous connecter depuis un fournisseur de service de comptes de votre choix, et créer votre réseau. Ce compte devra être utilisé pour n'importe quelle connexion à ce même réseau depuis tout autre appareil pour accéder au système du Raspberry Pi.
Voici un exemple de la page d'accueil de Tailscale une fois connecté, avec plusieurs machines configurées, disposant chacun de leur propre adresse privée.
À noter qu'une application Tailscale est également disponible sur smartphones permettant de connecter ce dernier au serveur virtuel Tailscale ! Elle peut également être installée sans les services google.
Cette application est indispensable pour accéder à votre programmeur d'arrosage modulaire open source depuis n'importe quelle connexion à internet via votre smartphone, sans quoi vous ne serez limité qu'à un accès à condition d'être connecté au réseau wifi du routeur sur lequel est connecté le Raspberry Pi.
Pour ceux qui voudraient en alternative ou en complément, installer Zerotier, même principe, avec une ligne de commande permettant la récupération de la clé de sécurité et l'ajout de zerotiers depuis les dépôts officiels de l'application et d'installer zerotier-one :
echo "deb [signed-by=/usr/share/keyrings/zerotierone-archive-keyring.gpg] http://download.zerotier.com/debian/$RELEASE $RELEASE main" | sudo tee /etc/apt/sources.list.d/zerotier.list sudo apt update sudo apt install zerotier-one
Il faudra créer un compte sur Zerotier afin d'obtenir l'ID du réseau créé.
Puis l'on rejoint le réseau virtuel créé sur Zerotier avec cette commande :
sudo zerotier-cli join ID
-On remplace ID par l'ID du réseau créé via l'interface en ligne.
Et dans le réseau Zerotier créé il faudra cocher la case afin d'activer la connexion et obtenir une adresse IP sous la mention “Manager IPs”
Il sera ainsi possible, comme pour Tailscale, de se connecter au système du Raspberry Pi via cette adresse, que ce soit une interface web, SSH…
Installation du firmware OpenSprinkler
Le firmware OpenSprinkler libre et Open-Source, permet de gérer l'OsPI et toutes ses entrées/sorties. C'est l'interface entre le système et le matériel. Il fournit des interfaces ouvertes afin que n'importe quel logiciel tiers puisse également tirer parti de ces fonctionnalités, c'est pourquoi il est possible d'interfacer OpenSprinkler avec Home Assistant, c'est la grande force des logiciels Open Source, leur intéropérabilité, c'est à dire, leur capacité à fonctionner ensemble.
Tout le contraire de la grande majorité des fabricants de programmeurs clés en main, qui, pour des raisons commerciales, contraîgnent le plus souvent leurs utilisateurs à un écosystème fermé, le leur, afin d'un part de forcer à s'équiper de leurs propres produits, et d'autre part, payer un abonnement supplémentaire constituant alors pour eux une rente.
Le revers de la médaille d'outils Open-Source “de niche”, peut s'apparenter à une certaine complexité, par manque de moyens financiers ou de bénévoles, afin par exemple de développer des interfaces très ergonomiques.
Ces outils sont souvent maintenus bénévolement, mais, contrairement à un fabricant clé en main, bénéficient généralement d'un fonctionnement sur le long terme.
Si demain, un fabricant utilisant son propre écosystème fermé, ferme ses serveurs ou cesse le support de certains appareils, une partie de l'installation devient possiblement obsolète et bonne à jeter… Garder la main sur son matériel en tout indépendance au niveau de la domotique, est un point essentiel pour s'assurer de la disponibilité et de l'usage de son propre matériel dans la durée.
Par le passé, nombreuses ont été les situations où des entreprises étaient forcées de conserver un très vieil ordinateur sans quoi le programme clé vital dans un processus, n'aurait plus fonctionné, n'étant compatible qu'avec un vieux système. Ça pose des problèmes de maintenabilité et de sécurité.
Pour installer le firmware OpenSprinkler, il va d'abord falloir installer quelques dépendances logicielles pour son bon fonctionnement.
sudo apt install build-essential
On récupère ensuite les sources du firmware OpenSprinkler :
git clone https://github.com/OpenSprinkler/OpenSprinkler-Firmware.git
Puis on se positionne dans l'aborescence du dossier téléchargé avec GIT
cd OpenSprinkler-Firmware/
Enfin, on construit le programme à partir des sources téléchargées spécifiquement pour l'OsPi ainsi :
sudo ./build.sh ospi
Il conviendra de répondre par “yes” à la proposition de démarrage automatique.
Si l'on a besoin de mettre à jour vers le dernier firmware (uniquement en cas de problème corrigé, ou besoin spécifique) ;
-Mettre à jour le contenu du dossier OpenSprinkler-Firmware :
git pull
-Reconstruire de nouveau le firmware à partir des sources mises à jour :
sudo ./build.sh ospi
-Redémarrer le service du Firmware OpenSprinkler :
sudo /etc/init.d/OpenSprinkler.sh restart
Le firmware OpenSprinkler étant désormais installé, il sera accessible sous l'adresse http://192.168.1.130:8080 . Ce ”:8080“ correspond au port utilisé par le service, et est nécessaire pour indiquer spécifiquement d'afficher OpenSprinkler sur votre navigateur internet. Home Assistant utilisera un autre port pour l'affichage de son interface web.
À la première connexion, il vous sera demandé le mot de passe par défaut opendoor qu'il sera bienvenu de modifier afin de sécuriser votre installation.
L'interface web est à première vue très simple, ici je l'ai déjà préconfigurée pour deux électrovannes et deux prises électrique Nous A1T sous firmware open source Tasmota dont nous observerons la configuration plus tard, correspondant à deux pompes :
Dans le cas présent, on peut voir qu'aucune des station n'est activée, sans quoi le bouton serait vert, on observe également que le capteur d'humité (Sensor 1) détecte bien de l'humidité dans le sol/substrat.
Le niveau de l'eau détecté n'est pas significatif, sachant qu'aucun capteur de niveau n'a été connecté sur les ports de capteurs de l'OsPI.
OpenSprinkler permet de lancer manuellement ou de programmer les arrosages, mais étant limité dans sa modularité (pas d'interaction avec des services tiers comme Méteo France ni d'interactions avec d'autres éléments n'étant pas liés à l'arrosage), tout sera géré sous HomeAssistant, ici les stations ont simplement été préconfigurées pour être bien présentées à Home Assistant, et les prises connectées ne sont présentes et configurées que pour faciliter tout allumage/extinction de ces dernières manuellement depuis cette interface.
OpenSprinkler reste donc très utile pour contrôler n'importe quelle électrovanne/prise manuellement et rapidement, y compris sur un smartphone.
Manuellement, vous devrez toujours ouvrir une électrovanne de votre choix, avant d'allumer une pompe, pour ne pas faire forcer cette dernière.
L'utilisation des prises électriques passe par un serveur MQTT permettant la communication entre les appareils, nommé mosquitto. Pour l'installer :
sudo apt install mosquitto
Ensuite l'on configure ce dernier en éditant son fichier de configuration avec l'éditeur de texte en ligne de commande, nano :
sudo nano /etc/mosquitto/mosquitto.conf
Voici à quoi doit ressembler son contenu :
# Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example pid_file /run/mosquitto/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log port 1883 allow_anonymous true include_dir /etc/mosquitto/conf.d
On demande l'enregistrement/mise à jour du fichier en laissant appuyé sur la touche “CTRL” puis en appuyant sur “O”, nano proposera ensuite d'enregistrer le fichier, ce qui sera fait en appuyant sur entrée.
Pour quitter l'éditeur après enregistrement, de la même façon, on utilise le raccourci clavier CTRL+X
Il ne reste plus qu'à redémarrer le service Mosquitto afin qu'il prenne en compte cette configuration.
sudo systemctl restart mosquitto
Retour à OpenSprinkler :
Voici une configuration de base pour retrouver l'interface telle que présente, que vous enregistrerez sous le nom de fichier configuration-ospi-basique.json dans le dossier de votre choix :
{"settings":{"devt":1690123573,"nbrd":1,"en":1,"sn1":1,"sn2":0,"rd":0,"rdst":0,"sunrise":392,"sunset":1287,"eip":2728304439,"lwc":1690108509,"lswc":1690108509,"lupt":0,"lrbtc":99,"lrun":[0,99,19,1690123138],"pq":0,"pt":0,"nq":0,"mac":"","loc":"","jsp":"https://ui.opensprinkler.com/js","wsp":"weather.opensprinkler.com","wto":{"key":"","pws":""},"ifkey":"","mqtt":{"en":1,"host":"127.0.0.1","port":1883,"user":"","pass":""},"wtdata":{"wp":"Manual"},"wterr":0,"dname":"OpenSprinkler Pépinière","sbits":[0,0],"ps":[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0|]],"gpio":[5,6,7,8,9,10,11,12,13,16,18,19,20,21,23,24,25,26]},"programs":{"nprogs":0,"nboards":1,"mnp":40,"mnst":4,"pnsize":32,"pd":[]},"options":{"fwv":220,"tz":56,"hp0":144,"hp1":31,"hwv":64,"ext":0,"sdt":0,"mas":0,"mton":0,"mtof":0,"wl":100,"den":1,"ipas":1,"devid":0,"uwt":0,"ntp1":0,"ntp2":0,"ntp3":0,"ntp4":0,"lg":1,"mas2":0,"mton2":0,"mtof2":0,"fwm":1,"fpr0":100,"fpr1":0,"re":0,"sar":0,"ife":0,"sn1t":3,"sn1o":1,"sn2t":1,"sn2o":0,"sn1on":0,"sn1of":0,"sn2on":0,"sn2of":0,"wimod":169,"reset":0,"dexp":-1,"mexp":24,"hwt":255,"ms":[0,120,120,0,120,120]},"status":[0,0,0,0,0,0,0,0],"stations":{"masop":[255],"masop2":[0],"ignore_rain":[3],"ignore_sn1":[3],"ignore_sn2":[3],"stn_dis":[60],"stn_spe":[0],"stn_grp":[0,0,0,0,0,0,0,0],"snames":["Électrovanne N°1","Électrovanne N°2","S03","S04","S05","S06","Pompe N°1 - Tasmota P1","Pompe N°2 - Tasmota P2"],"maxlen":32}}
Il faudra idéalement effectuer quelques modifications propres à son propre raspberry PI, à “mac”;”“ vous remplacerez par “mac”;”l'adresse MAC de votre carte réseau“
Pour l'obtenir, l'on installe tout d'abord net-tools , puis on utilise la commande “ifconfig” pour retrouver la bonne adresse MAC correspondant à l'interface réseau de l'IP locale indiquée. Ne pas confondre avec le port réseau virtuel de Tailscale ou Zerotier, le nom de l'interface sera généralement eth0 pour une connexion filaire par Ethernet, et wlan0 pour du wifi.
Ici on peut voir devant ether l'adresse MAC (matérielle) unique de son raspberry PI, dont une partie est floutée pour des raisons de confidentialité.
Il est ensuite possible d'importer la configuration (ou de l'exporte pour sauvegarder la votre) :
Il ne restera plus qu'à cliquer sur “Fichier” et sélectionner le fichier de configuration sauvegardé configuration-ospi-basique.json pour le restaurer sur votre installation :
Vous voici désormais avec une configuration tel qu'utilisé dans ce tutoriel !
Les prises Nous A1T connectées sous firmware Tasmota
Ces prises, permettent de faire le lien entre l'alimentation des pompes (ou tout autre appareil) et la consommation énergétique, elles seront accessibles via l'interface web d'OpenSprinkler mais également HomeAssistant par la suite.
La première chose à faire sera de se connecter en Wifi directement à la prise à configurer, dont l'ID, unique pour chaque prise s'affiche après le nom “tasmota-”.
Ici, l'opération consistera à se connecter une première fois à cette dernière pour lui indiquer à quel routeur se connecter par wifi.
Ensuite en règle générale, la prise connectée est accessible depuis un navigateur internet, via l'adresse http://192.168.4.1
On choisit le réseau sur lequel la prise va se connecter, puis cette dernière redémarre, redirigeant vers l'IP que le routeur lui aura indiqué, vous devrez reconnecter votrer ordinateur à ce réseau pour continuer de paramétrer la prise, ici http://192.168.1.50.
Dans le cas d'une première utilisation, le firmware d'origine est en anglais, nous pouvons le passer en français avec une upgrade de la dernière mise à jour de Tasmota.
Il suffira d'indiquer l'adresse http://ota.tasmota.com/tasmota/release/tasmota-FR.bin.gz dans l'url OTA à renseigner de mise à jour puis de lancer la mise à jour, la prise redémarrera ensuite avec une interface web accessible en français.
Attention, en cas de branchement/débranchements répétés 6 fois d'affilé, les paramètres de la prise seront réinitialisés, et ni l'alimentation ni le bouton intégré ne seront fonctionnels, c'est un reset intégral de secours.
Il faudra alors indiquer ces paramètres dans Configuration ⇒ Autre configuration ⇒ Autres paramètres et cocher “Activer” puis enregistrer les paramètres :
{"NAME":"NOUS A1T","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
Il faudra ensuite configurer l'adresse IP du serveur MQTT, Mosquitto, installé plus tôt sur le système d'exploitation Raspberry Pi Os sur le Raspberry Pi.
Dans Configuration ⇒ Configuration MQTT, ne toucher à rien d'autre que l'IP à renseigner sauf à vouloir mettre le nez dans des paramètres de sécurité avancés :
À partir de là, la prise connectée sera en mesure d'échanger et fournir des informations avec le firmware OpenSprinkler et Home Assistant, via Mosquitto qui gèrera les informations d'entrées/sorties et interactions.
Désormais, l'on doit fixer l'adresse IP de la prise connectée dans le routeur, exactement comme ça a avait été fait sur le Pi, puis indiquer à une station OpenSprinkler en cliquant sur la roue crantée, l'adresse web à utiliser pour allumer/éteindre la prise. (C'est même faisable depuis un navigateur web).
Voici à quoi celà doit ressemble, et les commandes indiquées doivent être similaires.
Toutes les prises connectées sous firmware Tasmota fonctionneront sur ce principe au sein d'OpenSprinkler, avec chacune leur propre IP paramétrée.
Cliquez sur Soumettre pour enregistrer et effectuez les mêmes opérations pour autant de prises connectées que vous en avez l'utilité. (Pompes, luminaires, chargeurs, etc…)
Installer Home assistant
Nous pouvons enfin passer à l'installation de Home Assistant, qui est un peut le chef d'orchestre principal de toutes les interactions.
Tout d'abord, connectons nous au système d'exploitation de votre Raspberry Pi via SSH.
Ensuite, rentrons dans le vif du sujet :
mkdir homeassistant-packages
mkdir est une commande permettant de créer un dossier, dans lequel on va ensuite se placer
cd homeassistant-packages
Ensuite l'on va télécharger avec le logiciel curl la dernière version du paquet d'installation d'Home Assistant Supervised :
curl https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb --output homeassistant-supervised.deb
Ainsi que la dernière version en date du paquet os-agent pour Home Assistant pour l'architecture matérielle du Raspberry Pi 4 (ArmV7) :
curl https://github.com/home-assistant/os-agent/ releases / download /1.5.1/os-agent_1.5.1_linux_armv7.deb --output os-agent_1.5.1_linux_armv7.deb
Attention, dans le cas présent, veillez à vérifier que la version 1.5.1 soit bien la dernière version disponible en date et remplacez l'url indiquée si nécessaire.
Si vous avez un Raspberry Pi différent ou un PC (x86-64), choisissez l'architecture adaptée, il est important de comprendre que le Raspberry Pi 3 et Raspberry Pi Zero 2 W ont une architecture ARMv6, et que les sauvegardes complètes d'Home Assistant ne sont pas restaurable d'une architecture à l'autre, seuls les fichiers de configuration le seront, d'où l'importance de privilégier un set de matériel homogène plutôt que jongler entre les versions, puisqu'en cas de pépin, il suffit juste de restaurer une sauvegarde du SSD sur un autre et de l'y brancher sur le nouveau Raspberry PI, alors qu'en changeant de version, il faudra tout réinstaller. Mais si vous avez du temps et peu de moyens, avoir des versions différentes reste faisable (c'est mon cas actuellement).
On effectue tout d'abord les quelques configurations nécessaires pour préparer le bon fonctionnement de Home Assistant sur le Rapsberry Pi :
Activation de l'accès aux journaux système afin de pouvoir vérifier depuis l'interface web que tout fonctionne bien :
sudo systemctl enable systemd-journal-remote
Dans les paramètres de démarrage du noyau Linux, deux élements de sécurité doivent être activé, apparmor =1 et security = apparmor
Éditer avec nano le fichier /boot /cmdline.txt :
sudo nano /boot/cmdline.txt
Le contenu doit indiquer ces deux paramètres en fin de ligne :
console=serial0,115200 console=tty1 root = PARTUUID =10cc0308-02 rootfstype =ext4 fsck.repair= yes rootwait apparmor =1 security =apparmor
Redémarrer le Raspberry Pi afin que ces paramètres soient pris en compte, puis se re-connecter au système via SSH
sudo reboot
On passe ensuite à l'installation de ces deux paquets logiciels téléchargés qui mèneront à l'installation de Home Assistant et toutes les dépendances requises :
sudo apt install ./os-agent_1.5.1_linux_armv7.deb sudo BYPASS_OS_CHECK=true apt install ./homeassistant-supervised.deb
Comme l'on n'utilise pas une distribution Linux Debian d'origine vu qu'elle est légèrement modifiée par la fondation Raspberry Pi, homeassistant-supervised ne s'installera pas dessus si on ne lui indique pas d'ignorer le fait que ce ne soit pas une Debian d'origine.
La variable d'environnement BYPASS_OS_CHECK=true passe ce paramètre particulier au script d'installation inclut dans le paquet pour qu'il le prenne en compte.
À partir de là, il va falloir être patient, les services installés par ces deux paquets, vont se débrouiller seuls, et automatiquement télécharger la dernière version de Home Assistant via des conteneurs Docker, et de configurer la base de l'ensemble. Cela peut prendre jusqu'à 20 minutes (ou être plus rapide), et dépendra de la vitesse du média USB, la version du Raspberry PI, mais aussi de la vitesse de téléchargement de la connexion à internet.
On accède ensuite à Home Assistant avec un navigateur internet, en renseignant l'adresse IP d'u Raspberry PI, suivit de :8123
Par exemple, pour un accès local par wifi dans l'exemple donné, l'adresse est http://192.168.1.130:8123
Pour Tailscale ou Zerotier , si la machine que vous utilisez est connectée à leur réseau virtuelle, vous indiquerez l'adresse correspondant au Raspberry PI, dans le tutoriel, nous allons partir du fait que Tailscal a alloué l'adresse IP virtuelle 100.66.2.103 au sein de notre réseau privé virtuel accessible depuis Internet.
L'accès depuis n'importe quel machine connectée à ce réseau privé virtuel via internet se fera alors par l'adresse web http://100.66.2.103:8123
L'opération est similaire si vous utilisez Zerotier en plus ou à la place de Tailscale, l'idéal étant de disposer des deux au cas où un des deux services aurait un problème.
Voici à quoi ressemblera approximativement Home Assistant une fois configuré, sachant que tout est personnalisable :
La première chose à faire va consister à installer un accès SSH au sein du conteneur Home Assistant lui même.
On commence par aller voir tout en bas à gauche son profil en cliquant sur son nom d'utilisateur :
<font inherit/inherit;;#e74c3c;;inherit>Puis l'on active le mode avancé :</font>
Pour ça il faut se diriger vers le centre de téléchargement des extensions en suivant ce lien.
Cette méthode va faciliter l'installation de logiciels via ce tutoriel.
Indiquer l'IP tailscale de votre Raspberry Pi pour accéder aux liens partagés vers l'interface web de Home Assistant :
Puis cliquer sur Open Link.
Une fois la page ouverte, recherchez SSH et cliquer dessus :
Puis cliquer sur installer :
Une fois installée, configurer les interrupteurs tel quel et cliquer sur démarrer :
Une fois le service ssh démarré, cliquer sur Ouvrir l'interface utilisateur web en bas à droite :
Et voici ce qui devrait apparaître, un terminal avec accès SSH au sein du conteneur système propre à Home Assistant :
Il ne reste plus qu'à installer HACS pour pouvoir disposer d'un dépot d'extensions alternatif sur Home Assistant.
Utiliser les commandes :
cd config wget -O - https://get.hacs.xyz | bash -
HACS est désormais installé, après un redémarrage, il sera possible d'installaer l'intégration HACS et d'utiliserce dernier pour installer HASS OpenSprinkler.
Pour redémarrez, cliquez sur les 3 points verticaux en haut à gauche de l'écran dans les paramètres puis sur redémarrer :
Dans les options avancées, choisissez un redémarrage système.
Une fois le système entièrement démarré, et Home Assistant accessible via un navigateur internet, dirigez vous vers les Paramètres ⇒ Appareils et services.
Il faut indiquer à Home Assistant de prendre en compte le serveur MQTT Mosquitto, pour ça, cliquez sur + Ajouter une intégration
Recherchez MQTT puis cliquez dessus deux fois, afin de l'installer :
Voici les informations de paramétrages à indiquer, 127.0.0.1 indique que Home Assistant doit aller chercher Mosquitto directement sur le Raspberry PI sur lequel il est installé, c'est l'adresse IP locale qui redirige vers une même machine directement, contrairement aux IP attribuées sur un réseau.
Sur le même principe, il va falloir rajouter l'intégration “Tasmota” pour la prise en charge des données envoyées par les prises connectées NOUS A1T.
La prise connectée, ici un exemple avec une prise connectée au congélateur (nom paramétré directement dans les paramètres de la prise avec sa propre adresse web)
Voici ce qu'affiche désormais Home Assistant :
Il ne reste plus qu'à cliquer dans l'encart Tasmota sur “1 Appareil” pour vérifier les données fournies par la prise connectée, et que l'interrupteur d'allumage extinction fonctionne bien.
Désormais, il va falloir installer le service Météo France de la même façon :
Lors de l'installation, il sera demandé de configurer sa commune :
Cette intégration de Méteo France, permet d'accéder à une ribambelle d'informations qui permettront de créer des automatisations se basant sur des conditions actuelles et prévisions météo. Certaines informations comme la température sont désactivées par défaut, il faudra donc les activer en cliquant dessus puis en cliquant sur la roue crantées des paramètres avancés :
On clique sur “Activer” :
Puis s'affiche :
Désormais, Home Assistant a à sa disposition des informations supplémentaires de température actuelle sous forme de capteur virtuel, exploitable à loisirs :
Désormais, installer également l'intégration “Sun” afin de pouvoir s'y référer lors des automatisations.
Par la suite, nous allons installer les intégrations tierces parties liées à OpenSprinkler via HACS, précédemment installé.
Installer l'intégration HACS :
Prendre connaissance et cocher toutes les cases puis valider :
Activer l'utilisation de HACS avec un compte Github :
Indiquez le code précédemment indiqué à Github une fois connecté :
Cliquer sur Authorize HACS :
La procédure de connexion est terminée :
Il est désormais possible de rechercher et installer des intégrations tierces parties via HACS !
Pour les rechercher et les installer :
Cliquez sur Télécharger deux fois après avoir ajouté le dépôt OpenSprinkler :
Il vous sera ensuite demandé de redémarrer Home Assistant :
Dans les interfaces, sur HACS, il sera également possible d'installer une “carte” qui pourra s'affichet et être personnalisée sur l'écran d'accueil :
À noter que tout ce qui s'affiche en anglais peut être renommé en français.
L'installation de tous les composants nécessaires pour gérer OpenSprinkler et Météo France via Home Assistant est désormais terminée.
Configurer les programmes d'irrigation automatiques
Rentrons désormais dans le vif du sujet ! Tous les programmes présentés sont des exemples, conçus pour interagir les uns avec les autres sans rentrer en conflit !
Des codes YAML, permettant de copier/coller directement chaque programme, seront fournis, mais pour chacun des exemple, si jamais les ID de vos capteurs diffèrent, vous devrez les adapter ou corriger.
Voici les noms configurés pour tous les capteurs liés à OpenSprinkler, Météo France, et à l'intégration Tasmota.
Pour accéder à chacun d'entre eux, direction paramètres ⇒ Intégration ⇒ Nom de votre entité ⇒ XX entités
Noms de chaque ID pour l'intégration HASS OpenSprinkler installée via HACS :
Nom de chaque ID pour l'intégration Tasmota :
Nom de chaque entité pour l'intégration Météo-France :
Nom de chaque ID pour l'intégration Sun (renommée ici “Soleil”) :
Désormais, en ayant vérifié les correspondances, vous devriez pouvoir utiliser ces proposition d'automatisations et les adapter :
Tout se passe dans les paramètres de Home Assistant ⇒ Automatisations et scène
Après configuration, la liste des automatisations devrait ressembler à ceci :
Tous les modes des automatisations présentées sont configurés en mode redémarrage en cliquant sur les 3 points verticaux ⇒ “Modifier le mode”, et le code de l'automatisation pourra également être édité en cliquant sur “Modifier en tant que YAML”, considérez que le device ID est propre à chaque périphérique et est unique, mieux vaut d'abord configurer avec l'éditeur visuel à l'aide des captures d'écran qui suivent !
1er programme - 01 - Irrigation - Activation automatique (humidité) - Pompe 02 - Electrovanne 01
À CONFIGURER APRÈS LES AUTOMATISATIONS 02 ET 04, CAR CETTE AUTOMATISATION EN DÉPEND POUR NE PAS RENTRER EN CONFLIT AVEC !
Dans le détail, point par point, voici la configuration de visuel de chaque étape de l'automatisation :
Code Yaml :
Et voici le code YAML qu'il est possible d'éditer pour l'ensemble des actions, ou chacune d'entre elles :
alias:>- 01 - Irrigation - Activation automatique (humidité) - Pompe 02 - Electrovanne 01 description:>- Allumer automatiquement l’irrigation si le capteur d'humidité capacitif détecte un manque d'eau, que le capteur de pluie en indique l'absence, avec une option (désactivée par défaut) si le risque de pluie signalé par Météo France est inférieur à 71%, conjointement à une couverture nuageuse supérieur à 49%. trigger: - type: turned_off platform: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_1_active domain: binary_sensor alias: Si le capteur d'humidité est désactivé (ne détecte plus assez d'eau) condition: - type: is_off condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_2_active domain: binary_sensor alias: Lorsque le capteur de pluie ne détecte aucune pluie en cours ou récente enabled: true - condition: and conditions: - type: is_value condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: sensor.graulhet_rain_chance domain: sensor below: 71 alias: Valeur de chance de pluie de Graulhet inférieure à 70% enabled: false - type: is_value condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: sensor.graulhet_cloud_cover domain: sensor alias: Valeur de couverture nuageuse au dessus de 50% below: 100 enabled: false - condition: time weekday: - mon - tue - wed - thu - fri - sat - sun alias: Selon le planning enabled: false alias: Si ces conditions météorologiques sont remplies (d'après Méteo France) enabled: false action: - service: automation.turn_off data: stop_actions: true target: entity_id: automation.rafraichir_les_plants alias: Désactiver l'automatisation du rafraîchissement de la pépinière - service: automation.turn_on data: {} target: entity_id: automation.irrigation_arret_pompe_01_electrovanne_01 alias:>- Réactiver l'automatisation N°2 (arrêt automatique de l'irrigation si le capteur d'humidité détecte suffisamment d'eau) au cas où il aurait été arrêté par l'automatisation N°04 (rafraîchissement) - service: opensprinkler.run data: entity_id: binary_sensor.electrovanne_ndeg1_station_running run_seconds: 48600 alias: Ouvrir l'électrovanne N°01 (Pépinière) - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 secondes, sans risquer de faire forcer la pompe - type: turn_on device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch mode: restart
2ème programme - 02 - Irrigation - Arrêt automatique (humidité) - Pompe 02 - Electrovanne 01
Lorsque le capteur d'humidité détecte suffisamment d'eau, fermer l'électrovanne 01 puis la Prise P2 (Pompe 02) afin de mettre fin à l'automatisation 01 décrite précédemment.
Et voici le code YAML qu'il est possible d'éditer pour l'ensemble des actions, ou chacune d'entre elles :
alias: 02 - Irrigation - Arrêt automatique (humidité) - Pompe 02 - Electrovanne 01 description:>- Lorsque le capteur d'humidité détecte suffisamment d'eau, fermer l'électrovanne 01 puis la Prise P2 (Pompe 02). trigger: - type: turned_on platform: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_1_active domain: binary_sensor alias: Si le capteur d'humidité est activé (détecte suffisamment d'eau) for: hours: 0 minutes: 0 seconds: 0 condition: [] action: - type: turn_off device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 secondes, sans risquer de faire forcer la pompe - service: opensprinkler.stop data: entity_id: binary_sensor.electrovanne_ndeg1_station_running alias: Désactiver l'électrovanne N°1 (Arroseur oscillant) - service: automation.turn_on data: {} target: entity_id: automation.rafraichir_les_plants alias:>- Réactiver l'automatisation de rafraîchissement de la pépinière - Pompe 02 - Electrovanne 01 mode: restart
3ème programme - 03 - Arrosage parcelle de nuit durant 45min à Minuit - Pompe 02 - Electrovanne 01
Cette automatisation est utilisée afin d'irriger une petite parcelle 45 minutes chaque nuit à minuit à condition qu'aucune pluie n'ait été détectée.
Et voici le code YAML qu'il est possible d'éditer pour l'ensemble des actions, ou chacune d'entre elles :
alias:>- 03 - Arrosage pépinière de nuit durant 45min à Minuit - Pompe 02 - Electrovanne 01 description: Arrosage des parties 1 et 2 des jardins au goutte à goutte la nuit trigger: - platform: time at: "00:00:00" alias: À condition: - type: is_off condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_2_active domain: binary_sensor alias: Lorsque le capteur de pluie n'a pas détecté de pluie enabled: true action: - service: automation.turn_off data: stop_actions: true target: entity_id: automation.irrigation_arret_pompe_01_electrovanne_01 alias:>- Désactiver l'automatisation de l'extinction en cas d'activation du capteur d'humidité - service: opensprinkler.run data: entity_id: binary_sensor.electrovanne_ndeg1_station_running run_seconds: 48600 alias: Ouvrir l'électrovanne N°01 - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 secondes, sans risquer de faire forcer la pompe - type: turn_on device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 45 seconds: 0 milliseconds: 0 alias: Arroser durant - type: turn_off device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 seconde après extinction de la pompe - service: opensprinkler.stop data: entity_id: binary_sensor.electrovanne_ndeg1_station_running alias: Fermer L'électrovanne N°1 - service: automation.turn_on data: {} target: entity_id: automation.irrigation_arret_pompe_01_electrovanne_01 alias:>- Réactiver l'automatisation de l'extinction en cas d'activation du capteur d'humidité mode: restart
4ème programme - 04 - Rafraîchir température parcelle si + de 30°C - Pompe 02 - Electrovanne 01
Allumer automatiquement l’arroseur oscillant si la température passe au dessus de 30°C toutes les une 1/2H, pendant 1 minute, afin de rafraichir l'air ambiant.
3 objectifs : attirer les auxiliaires de culture, limiter le développement d'acariens/cochenilles, favoriser une température compatible avec une photosynthèse continue pour les plantes. À l'inverse du zéro de végétation, il existe aussi un maximum qu'il convient d'éviter autant que possible pour que les plants considèrent être toujours au printemps.
Ici est rajouté spécifiquement une gestion du soleil, l'automatisation n'est active qu'après le lever et avant le coucher du soleil. (D'où la nécessité de l'intégration “Sun”.)
Ici l'on s'aperçoit de l'importance d'avoir activé le capteur virtuel de température relayé par l'intégration Météo France. Toutefois, pour encore plus de précision et une journalisation des évènements (pluviométrie, température, vent, direction du vent…), une station météo connectée sera installée dans l'avenir.
Et voici le code YAML qu'il est possible d'éditer pour l'ensemble des actions, ou chacune d'entre elles :
alias:>- 04 - Rafraîchir température pépinière si + de 30°C - Pompe 02 - Electrovanne 01 description:>- Allumer automatiquement l’irrigation si la température passe au dessus de 30°C toutes les une 1/2H, pendant 1 minute trigger: - platform: time_pattern minutes: /30 alias: Toutes les... (Rajouter un / avant le nombre crée une répétition) enabled: true condition: - condition: sun before: sunset after: sunrise alias: Après le lever et avant le coucher du soleil uniquement enabled: true - type: is_temperature condition: device device_id: b33bd64e5e2697617dc09a39695e250e entity_id: sensor.graulhet_temperature domain: sensor above: 30 below: 55 alias: Si la température extérieure se situe entre - condition: - condition: not conditions: - condition: state entity_id: automation.irrigation_activation_pompe_01_electrovanne_01 attribute: mode state: - triggered alias: Vérifier que le programme d'irrigation n'est pas en cours. enabled: true - type: is_off condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_2_active domain: binary_sensor alias: Lorsque le capteur de pluie ne détecte aucune pluie en cours enabled: true for: hours: 0 minutes: 0 seconds: 0 - condition: state entity_id: automation.irrigation_activation_pompe_01_electrovanne_01 state: "on" alias: Si le programme d'irrigation de la pépinière est activé mais pas en cours - condition: and conditions: - type: is_value condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: sensor.graulhet_rain_chance domain: sensor below: 71 alias: Valeur de chance de pluie de Graulhet inférieure à 70% - type: is_value condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: sensor.graulhet_cloud_cover domain: sensor alias: Valeur de couverture nuageuse au dessus de 50% below: 100 enabled: false - condition: time weekday: - mon - tue - wed - thu - fri - sat - sun alias: Selon le planning enabled: false alias: Si ces conditions météorologiques sont remplies (d'après Méteo France) enabled: false action: - service: automation.turn_off data: stop_actions: true target: entity_id: automation.irrigation_arret_pompe_01_electrovanne_01 alias:>- Désactiver l'automatisation 02 (extinction en cas de détéction d'eau par le capteur d'humidité) - service: opensprinkler.run data: entity_id: binary_sensor.electrovanne_ndeg1_station_running run_seconds: 48600 alias: Ouvrir l'électrovanne N°01 - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 secondes, sans risquer de faire forcer la pompe - type: turn_on device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 1 seconds: 0 milliseconds: 0 alias: Rafraîchir durant une minute les plants - type: turn_off device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - service: opensprinkler.stop data: entity_id: binary_sensor.electrovanne_ndeg1_station_running alias: Fermer L'électrovanne N°01 - service: automation.turn_on data: {} target: entity_id: automation.irrigation_arret_pompe_01_electrovanne_01 alias:>- Réactiver l'automatisation 02 (extinction en cas de détéction d'eau par le capteur d'humidité) mode: restart
5ème programme - 05 - Irrigations jardins N°1 & 3 de nuit (1/4H chacun) à 2H00 - Pompe 02 - Electrovanne 02
Cette automatisation est utilisée afin d'irriguer au goutte à gouttes les parcelles du jardin à 2H00 du matin à condition qu'aucune pluie n'ait été détectée jusqu'à ce que le capteur de pluie soit sec (prend en compte la quantité tombée du coup), l'électrovanne est raccordé à un sélecteur mécanique Gardena 6 voies, qui change automatiquement de voie à chaque arrêt d'arrivée d'eau selon les interrupteurs mécaniques sélectionnés dessus, afin que chaque ligne ait suffisamment de pression sans dépendre de multiples électrovannes. Il suffit donc d'arrêter puis démarrer de nouveau la pompe pour qu'il passe de la première à la seconde voie, puis revienne à la seconde le lendmain et ainsi de suite.
Et voici le code YAML qu'il est possible d'éditer pour l'ensemble des actions, ou chacune d'entre elles :
alias:>- 05 - Irrigations jardins N°1 & 3 de nuit (1/4H chacun) à 2H00 - Pompe 02 - Electrovanne 02 description: Arrosage des parties 1 et 2 des jardins au goutte à goutte la nuit trigger: - platform: time at: "02:00:00" alias: À condition: - type: is_off condition: device device_id: a44b3b42fed7e481d557d0cd2d640e50 entity_id: binary_sensor.opensprinkler_sensor_2_active domain: binary_sensor alias: Lorsque le capteur de pluie ne détecte aucune pluie en cours enabled: true action: - service: opensprinkler.run data: entity_id: binary_sensor.electrovanne_ndeg2_station_running run_seconds: 48600 alias: Ouvrir l'électrovanne N°01 - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 secondes, sans risquer de faire forcer la pompe - type: turn_on device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 30 seconds: 0 milliseconds: 0 alias: Attendre 30 min (arrosage) - type: turn_off device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 1 seconds: 0 milliseconds: 0 alias: Attendre 1 minute pour le switcheur mécanique - type: turn_on device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 30 seconds: 0 milliseconds: 0 alias: Attendre 30 minute (arrosage) - type: turn_off device_id: 25468fd9dfb3b9ba4d832935a888f9cc entity_id: switch.prise_connectee_tasmota_p2_2 domain: switch - delay: hours: 0 minutes: 0 seconds: 3 milliseconds: 0 alias: Attendre 3 seconde après extinction de la pompe - service: opensprinkler.stop data: entity_id: binary_sensor.electrovanne_ndeg2_station_running alias: Fermer L'électrovanne N°2 mode: restart
Optionnel - Configurer les cartes du tableau de bord
Il est possible d'ajouter des informations accessibles rapidement d'un coup d'oeil au tableau de bord, ainsi que des interrupteurs, voici quelques exemples basiques :
Et un onglet météo :
Première carte :
Code éditable avec l'éditeur de code :
type: entities entities: - automation.automation_6 - automation.irrigation_activation_pompe_01_electrovanne_01 - automation.irrigation_arret_pompe_01_electrovanne_01 - automation.rafraichir_les_plants title: Programmes
Deuxième carte pour la prise connectée/pompe :
Code éditable avec l'éditeur de code :
type: entities entities: - entity: switch.prise_connectee_tasmota_p2_2 name: Allumage prise (direct Tasmota) icon: mdi:toggle-switch-variant - entity: sensor.prise_connectee_tasmota_p2_energy_power_2 name: Puissance utiliée (temps réel) - entity: sensor.prise_connectee_tasmota_p2_energy_today_2 name: Énergie consommée (aujourd'hui) - entity: sensor.prise_connectee_tasmota_p2_energy_yesterday_2 name: Énergie consommée (hier) - entity: sensor.prise_connectee_tasmota_p2_energy_total_2 name: Énergie consommée totale - entity: sensor.prise_connectee_tasmota_p2_energy_totalstarttime_2 name: Démarrage mesure de l'énergie - entity: sensor.prise_connectee_tasmota_p2_ip_2 title: Pompe N°2 (Tasmota P2) state_color: true
Les informations de base concernant les informations fournies par OpenSprinkler via l'OsPi et ce qui y est connecté. Le niveau de l'eau est toujours faussé ici, il est possible de le supprimer, de même que tout autre paramètre jugé inutile :
Code éditable avec l'éditeur de code :
type: entities entities: - entity: switch.opensprinkler_enabled name: Activation d'OpenSprinkler - entity: sensor.opensprinkler_last_run name: Dernier démarrage - entity: binary_sensor.opensprinkler_sensor_1_active name: Capteur d'humidité - entity: binary_sensor.opensprinkler_sensor_2_active name: Capteur de pluie - entity: binary_sensor.opensprinkler_rain_delay_active name: Status du délais pour pluie - entity: sensor.opensprinkler_flow_rate name: Débit de l'eau - entity: sensor.opensprinkler_rain_delay_stop_time name: Temps d'arrêt du délais de pluie - entity: sensor.opensprinkler_water_level name: Niveau de l'eau - entity: update.opensprinkler_card_update name: Logiciel/firmware OpenSprinkler - entity: update.opensprinkler_integration_for_home_assistant_update name: Intégration Home Assistant state_color: true
Quelques informations de base sur le routeur connecté à Home Assistant :
Code éditable avec l'éditeur de code :
type: entities entities: - entity: binary_sensor.b715s_23c_mobile_connection - entity: sensor.b715s_23c_current_download_rate - entity: sensor.b715s_23c_current_upload_rate - entity: sensor.b715s_23c_total_connected_duration title: Pépinière
Carte Météo France fournie par l'entité :
Code éditable avec l'éditeur de code :
show_current: true show_forecast: true type: weather-forecast entity: weather.graulhet theme: midnight
Autre configuration avec davantage d'informations :
Code éditable avec l'éditeur de code :
type: grid square: false columns: 1 cards: - type: entities entities: - sensor.81_weather_alert - sensor.graulhet_cloud_cover - sensor.graulhet_daily_precipitation - sensor.graulhet_freeze_chance - sensor.graulhet_next_rain - sensor.graulhet_rain_chance - sensor.graulhet_snow_chance - sensor.graulhet_uv title: Météo-France forecast for city Graulhet - Midi-Pyrénées (81) - FR - type: weather-forecast entity: weather.graulhet show_forecast: false
Accéder à OpenSprinkler et Home Assistant depuis un smartphone/tablette/stick sous Android et iOS
Deux applications Open Source libres et gratuites sont disponibles à cet effet via plusieurs plateformes :
Via le playstore :
Home Assistant pour Android (Playstore)
Open Sprinkler pour Android (Playstore)
Depuis Fdroid :
Home Assistant pour Android (Fdroid)
Pour les environnement Apple :
Open Sprinkler (iOS)
Open Sprinkler (MacOS X)
Home Assistant (iOS)
Depuis l'Amazon Appstore et pour les appareils Amazon (Fire stick…) :
Vous aurez également besoin des applications Tailscale et Zerotier pour accéder au programmateur modulaire depuis n'importe où, tant que lui a accès à Internet, et vous aussi :
Tailscale : Android / iOS | Iphone
Zerotier : Android / iOS | Iphone
Tailscale sur smartphone/tablette :
Un exemple de ce à quoi ressemblera l'interface une fois authentifié avec le compte utilisé jusque là.
Home Assistant est désormais pleinement accessible de partout depuis un smartphone du moment que Tailscale ou Zerotier selon votre choix, est activé. À noter qu'il est possible de paramétrer plusieurs URL et de glisser de l'une à l'autre avec trois doigts, permettant de multiplier les moyens de connexions et accès à plusieurs Raspberry Pi ou autre serveurs avec Home Assistant installé :
OpenSprinkler sur smartphone/tablette :
De la même façon, l'on se connecte ainsi, il est également possible de multiplier les URL de connexion :
Vous pouvez soutenir/partager mon travail, mes recherches, et contribuer au projet de pépinière écologique PEPINATURE en achetant des plants.
Visiter la page facebook : https://www.facebook.com/pepinature/
Discussion