
Cet article a été rédigé par un membre de la communauté.
Merci à lui pour l’article et sa contribution.
Merci Lucas et à l’équipe de Planète Domotique d’avoir ressuscité notre cher GreenIQ et de nous donner les moyens de nous le réapproprier. Félicitations !
Aujourd’hui, je voudrais apporter ma contribution à propos des notifications de début et fin d’arrosage qui n’étaient pas géniales dans l’ancien système.
Ce que je vais développer ici pourra facilement être adapté selon les besoins de chacun. Pour l’instant, je ne gère que les notifications par courriel mais je vais faire évoluer ma solution vers le push sur Smartphone … plus tard.
Le Planning
Zone 1 | Zone 2 | Zone 3 | Zone 4 | ||||
Début | Fin | Début | Fin | Début | Fin | Début | Fin |
06:30 | 06:33 | 06:36 | 06:39 | 06:42 | 06:45 | 06:48 | 06:51 |
07:10 | 07:13 | 07:16 | 07:19 | 07:22 | 07:25 | 07:28 | 07:31 |
07:50 | 07:53 | 07:56 | 07:59 | 08:02 | 08:05 | 08:08 | 08:11 |
08:30 | 08:33 | 08:36 | 08:39 | 08:42 | 08:45 | 08:48 | 08:51 |
Mon terrain est divisé en quatre zones d’arrosage que je balaye en quatre fois, entre 6h30 et 9h00, en petites séquences, pour laisser le temps à l’eau de pénétrer dans le sol.
En conséquence, mes alertes idéales sont :
● 1ère fois que la vanne de la zone 1 passe à ON
Envoi du message « Début d’arrosage
● 4ème fois que la vanne de la zone 4 passe à OFF
Envoi du message « Fin d’arrosage »
Pré-requis
- Avoir configuré un serveur SMTP dans Domoticz (Réglages/Paramètres/Onglet Email)
Configuration SMTP
- savoir déclarer des variables (Réglages/Plus d’options/Variables utilisateur)
- savoir créer et/ou modifier des scripts (Réglages/Plus d’options/Événements)
Remarque concernant les scripts
Le système Domoticz, utilisé pour faire fonctionner le GreenIQ, accepte plusieurs langages de programmation :
- le Blockly
- le dzVents
- le LUA
- le Python
- et d’autres … plus d’infos sur le site Domoticz
Ils sont plus ou moins complexes et passer de l’un à l’autre ne pose aucun problème. Pour ce qui nous concerne, seuls le « Blockly » et le « dzVents » seront utilisés.
Mise en œuvre
Étape 1 – Création de 2 variables de type « compteur »
- CtrZ1On, variable de type « Entier »
- CtrZ4Off, variable de type « Entier »
Ces 2 variables sont destinées à compter le nombre de fois où une électrovanne va changer d’état. « CtrZ1On » va permettre de compter le nombre de fois où l’électrovanne 1 va passer à On tandis que « CtrZ4Off » permettra de compter le nombre de fois où l’électrovanne 4 va passer à Off.
Les variables
Étape 2 – Écriture du script de remise à zéro des 2 compteurs
If Time = 0
Do Set CtrZ1On = 0
Set CtrZ4Off = 0
Script Blockly
- Le script se nomme « RazCtrZ1et4OnOff » et est programmé en Blockly, choisi pour sa simplicité
- L’objectif de ce script est de remettre les 2 compteurs « CtrZ1On » et « CtrZ4Off » à zéro chaque jour à minuit afin de gérer les alertes journalières. Sans cette action, ces compteurs s’incrémenteraient indéfiniment et le système d’alerte ne fonctionnerait qu’une seule fois.
Étape 3 – Scripts liés aux changements d’état des électrovannes 1 et 4
L’objectif des 2 scripts suivants est de faire « +1 » dans les compteurs « CtrZ1On » ou « CtrZ4Off ». Le principe en est le suivant :
- à chaque fois que l’électrovanne 1 passe à On, on fera « +1 » dans le compteur « CtrZ1On »
- à chaque fois que l’électrovanne 4 passe à Off, on fera « +1 » dans le compteur « CtrZ4Off »
Ces scripts sont « exécutés » automatiquement par le système selon que l’électrovanne concernée passe à On ou Off. (Section « on devices » du script).
- Le premier script se nomme « Plus1CtrZ1 » et est programmé en dzVents
return {
on = {
devices = {
'Zone 1 - Côté appentis'
}
},
execute = function(domoticz, switch)
local bavard = true
local CtrZ = domoticz.variables('CtrZ1On').value
if (switch.state == 'On') then
CtrZ = CtrZ + 1
domoticz.variables('CtrZ1On').set(CtrZ)
if bavard then domoticz.log("--> CtrZ1On passée à " .. CtrZ) end
end
end
}
- Le second script se nomme « Plus1CtrZ4 » et est programmé, lui aussi, en dzVents
return {
on = {
devices = {
'Zone 4 - Côté salon'
}
},
execute = function(domoticz, switch)
local bavard = true
local CtrZ = domoticz.variables('CtrZ4Off').value
if (switch.state == 'Off') then
CtrZ = CtrZ + 1
domoticz.variables('CtrZ4Off').set(CtrZ)
if bavard then domoticz.log("--> CtrZ4Off passée à " .. CtrZ) end
end
end
}
Étape 4 – Envoi des messages
L’objectif de ces 2 derniers scripts est d’envoyer les messages de début et fin d’arrosage selon le principe suivant :
- dès que l’électrovanne 1 est passée une fois à On (Compteur « CtrZ1On ») alors
Envoi du message « Début d’arrosage » - dès que l’électrovanne 4 est passée quatre fois à Off (Compteur « CtrZ4Off ») alors
Envoi du message « Fin d’arrosage »
Ces scripts sont « exécutés » automatiquement par le système à chaque changement de valeur des compteurs « CtrZ1On » ou « CtrZ4Off ». (Section « on variables » du script)
- Le premier script, en charge de l’envoi du message de début d’arrosage, se nomme « SendNotifStartArrosage » et est programmé en dzVents
return {
on = {
variables = {
'CtrZ1On',
}
},
execute = function(domoticz, variable)
local CtrZ1 = variable.value
-- Compteur de "On" sur la zone 1 égal à 1 = envoi du message "début d'arrosage"
if CtrZ1 == 1 then
local Jour = os.date("%d-%m-%Y")
local Heure = os.date("%X")
local Horo = " le " .. Jour .. " à " .. Heure
local Texte = ""
local bavard = true
if bavard then domoticz.log("CtrZ1On = " .. CtrZ1) end
-- Envoi de l'information de début d'arrosage
Texte = "L′arrosage de notre pelouse a démarré" .. Horo
if bavard then domoticz.log("--> Message = " .. Texte) end
-- Par courriel
domoticz.email("GreenIq - Début d'arrosage", Texte, 'xxxxxxxx@gmail.com')
end
end
}
- Le second script, quant à lui, en charge de l’envoi du message de fin d’arrosage, se nomme « SendNotifStopArrosage » et est programmé en dzVents
return {
on = {
variables = {
'CtrZ4Off',
}
},
execute = function(domoticz, variable)
local CtrZ4 = variable.value
-- Compteur de "Off" sur la zone 4 égal à 4 = envoi du message "fin d'arrosage"
if CtrZ4 == 4 then
local Jour = os.date("%d-%m-%Y")
local Heure = os.date("%X")
local Horo = " le " .. Jour .. " à " .. Heure
local Texte = ""
local bavard = true
if bavard then domoticz.log("CtrZ4Off = " .. CtrZ4) end
-- Envoi de l'information de fin d'arrosage
Texte = "L′arrosage de notre pelouse s′est terminé" .. Horo
if bavard then domoticz.log("--> Message = " .. Texte) end
-- Par courriel
domoticz.email("GreenIq - Fin d′arrosage", Texte, 'xxxxxxxx@gmail.com')
end
end
}
Conclusion, remarques, adaptation
Cette programmation fonctionne parfaitement ; je reçois bien mes messages trois fois par semaine, même en vacances. Aucune modification n’est à envisager si vous arrosez à une fréquence différente de la mienne (tous les jours, deux fois par semaine … ou autre) puisque les 2 compteurs « CtrZ1On » et « CtrZ4Off » sont remis à zéro chaque jour.
Quelques commentaires techniques :
- La variable « bavard » sert à générer des traces dans la « Log » (Réglages/Log). Pensez à remettre « bavard » à false lorsque toute l’installation a été testée et validée
- Pour les puristes, les dates et heures renvoyées par les messages sont les dates et heures d’exécution des scripts « SendNotifStartArrosage » et « SendNotifStopArrosage » il peut donc y avoir un décalage avec les dates et heures réelles du passage des vannes à l’état On / Off
Concernant l’adaptation :
- les noms des variables/scripts sont totalement libres ; par exemple pour un arrosage en 3 fois sur 5 zones on pourrait imaginer deux compteurs nommés « CtrZ1On » et « CtrZ5Off ». Dans ce cas, il faudra modifier tous les scripts en conséquence et ne pas oublier de modifier l’instruction « if CtrZ4 == 4 then » par « if CtrZ5 == 3 then » dans la procédure « SendNotifStopArrosage »
- bien sûr, dans les scripts d’envoi de messages, ne pas oublier de saisir votre adresse courriel réelle 😉
Et pour terminer, voici un exemple des courriels reçus :





