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

GreenIQ sous Domoticz : Envoyer des messages de début et fin d’arrosage

GreenIQ sous Domoticz : Envoyer des messages de début et fin d’arrosage

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

Étape 2 – Écriture du script de remise à zéro des 2 compteurs

If 	Time = 0 
Do 	Set CtrZ1On = 0
	Set CtrZ4Off = 0
  • 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 :

Produit
product image
Notre avis
1star1star1star1star1star
Avis des utilisateurs
5/5 basé sur 1 votes
Marque
Wizelec
Produit
GreenIQ sous Domoticz
Prix
EUR 169.00
Disponibilité
En 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 *