
Voici un article destiné aux possesseurs du « GreenIQ » équipé d’un débitmètre. L’intérêt premier du débitmètre est de connaître sa consommation d’eau. Suivre les évolutions de ce débitmètre en permanence permet, en outre, d’être avisé des consommations d’eau « hors planning d’arrosage » afin de mettre en évidence les éventuelles fuites ou arrosages manuels.
Cet article va vous expliquer comment fonctionne ce système d’alerte et comment l’adapter à vous besoins.
Note : pour le fun et aussi pour les besoins de cet article, on parlera ici de WFC (Water Flow Control)
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
- WFC_OnOff, variable de type « Entier »
- WFC_FlowCtr, variable de type « Décimal »
La variable WFC_OnOff va indiquer au système si le Water Flow Control (WFC) est actif ou non.
La variable WFC_FlowCtr quant à elle servira à archiver la valeur du débitmètre lors des contrôles de débit.
Variables
Étape 2 – Activation/Désactivation du WFC
Cas de la désactivation
If Time = 6h25 et Day = « Lundi, Mercredi ou Vendredi »
Do Set WFC_OnOff = 0
Blockly
- Le script se nomme « WFC_Off » et est programmé en Blockly, choisi pour sa simplicité
- L’objectif de ce script est de suspendre le WFC pendant les périodes normales d’arrosage
- Bien sûr, ce choix d’horaire (6h25) est fonction du planning de chacun et doit être adapté en conséquence. Dans le cas présent, le WFC est désactivé 5mn avant le début d’arrosage
Cas de la réactivation
return {
on = {
timer = {
'at 09:05 on mon, thu, fri'
}
},
execute = function(domoticz, timer)
local OldCompteur = domoticz.variables('WFC_FlowCtr').value
local NewCompteur = domoticz.devices('Consommation').counter
local bavard = true
if bavard then domoticz.log("Compteur de consommation = " .. NewCompteur) end
-- Activation du Water Flow Control et sauvegarde de l'état du compteur
domoticz.variables('WFC_OnOff').set(1)
domoticz.variables('WFC_FlowCtr').set(NewCompteur)
if bavard then
domoticz.log("Water Flow Control passé à 1")
domoticz.log("Compteur du Water Flow Control passé de " .. OldCompteur .. " à " .. NewCompteur)
end
end
}
- Le script se nomme « WFC_On » et est programmé en dZvents
- Son objectif est double
- il réactive le WFC après les périodes normales d’arrosage
- il archive la valeur du débitmètre dans la variable WFC_FlowCtr en fin d’arrosage
- Bien sûr, ce choix d’horaire (9h05) est fonction du planning de chacun et doit être adapté en conséquence. Dans le cas présent, le WFC est réactivé 5mn après la fin d’arrosage
- L’instruction à modifier en fonction du planning de chacun est celle-ci : ‘at 09:05 on mon, thu, fri’ – voir ici pour plus d’info : Documentation Domotiz dzVents, section Timer
Remarque
Il est à noter qu’il n’y a que deux seuls moments où la variable « WFC_OnOff » est modifiée : c’est en début de cycle d’arrosage et en fin de cycle d’arrosage.
Dit différemment : le WFC est actif en permanence sauf pendant les arrosages programmés
Étape 3 – Contrôle des fuites et/ou arrosages manuels
return {
on = {
timer = {
'every 5 minutes',
}
},
execute = function(domoticz, timer)
local WFCStatus = domoticz.variables('WFC_OnOff').value
-- Cette procédure ne s'exécute que lorsque le Water Flow Control est actif (égal à 1)
if WFCStatus == 1 then
-- On récupère la valeur actuelle du compteur d'eau pour la comparer à la valeur archivée
local CompteurMem = domoticz.variables('WFC_FlowCtr').value
local CompteurNow = domoticz.devices('Consommation').counter
if CompteurNow > CompteurMem then
-- Là on a une consommation non prévue !
local Jour = os.date("%d-%m-%Y")
local Heure = os.date("%X")
local Horo = " le " .. Jour .. " à " .. Heure
local Texte = ""
local bavard = false
if bavard then
domoticz.log("Status du Water Flow Control = " .. WFCStatus)
domoticz.log("Valeur de consommation en mémoire = " .. CompteurMem .. 'm3')
domoticz.log("Valeur de consommation actuelle = " .. CompteurNow .. 'm3')
end
-- Envoi de l'information
Texte = "Anomalie détectée" .. Horo .. ' - FUITE ou ARROSAGE MANUEL - Le compteur de consommation d′eau a augmenté depuis les 5 dernières minutes (de ' .. CompteurMem .. 'm3 à ' .. CompteurNow .. 'm3)'
if bavard then domoticz.log("--> Message = " .. Texte) end
-- Archivage de la nouvelle consommation
domoticz.variables('WFC_FlowCtr').set(CompteurNow)
-- Par courriel
domoticz.email("GreenIq - ALERTE Consommation", Texte, 'homegmjpr@gmail.com')
end
end
end
}
- Le script se nomme « WFC_Check » et est programmé en dZvents
- Il est automatiquement démarré par le système toutes les 5 minutes et son fonctionnement est le suivant :
- il s’assure que le WFC est bien actif,
- si ce n’est pas le cas il s’arrête immédiatement
- dans l’affirmative, il interroge la valeur du débitmètre et la compare à celle archivée dans la variable WFC_FlowCtr
- en cas de différence entre la valeur instantanée du débitmètre et celle archivée dans la variable, il entreprend les actions suivantes :
- archivage de la nouvelle valeur du débitmètre dans WFC_FlowCtr pour ne pas réémettre la même alerte en permanence
- envoi d’un courriel d’alerte et arrêt du script
- en cas d’égalité des deux valeurs il s’arrête immédiatement.
- il s’assure que le WFC est bien actif,
Conclusion, remarques, adaptation
Cette programmation fonctionne parfaitement; j’ai bien reçu quelques alertes, pour la détection de fuites, cet été, et ai entrepris les actions nécessaires. Les alertes se déclenchent aussi, sans problème, lors d’arrosages manuels !
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
- Un contrôle basé sur les variations instantanées du compteur du débitmètre serait possible mais « consommateur de ressources pour le Raspberry ». En conséquence, le choix a été fait de ne réaliser ce contrôle que toutes les 5 minutes. L’instruction à modifier pour effectuer des contrôles plus ou moins rapprochés est celle-ci : ‘every 5 minutes’ – voir ici pour plus d’info : Documentation Domotiz dzVents, section Timer
Et pour terminer, voici un exemple de courriel reçu en cas de fuites d’eau ou d’arrosage manuel :






