..:: Planète-Domotique : Le Blog ::..
Domoticz Guides et Tutoriels Tous les articles

GreenIQ sous Domoticz : Être alerté des fuites et/ou arrosages non programmés

GreenIQ sous Domoticz : Être alerté des fuites et/ou arrosages non programmés

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)
  • 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 :

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.

É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
  • 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.

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 :

Email
Email
Produit
product image
Notre avis
1star1star1star1star1star
Avis des utilisateurs
5 based on 1 votes
Marque
GreenIQ
Produit
GreenIq sous Domoticz
Prix
EUr 169.00
Disponibilité
Available in Stock
0
0
Jean-Paul RADET

Bonjour, Je suis Jean Paul ! Informaticien à la retraite avec une curiosité toujours intacte, intéressé par la domotique, je publie des articles sur le Blog Planète Domotique afin d'aider la communauté.

Laisser un commentaire

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