Page 1 sur 2

Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 09:11
par Matthias
Bonjour à tous,

Je souhaite de l'aide pour réaliser un script LUA me permettant de désactiver mon arrosage automatique le soir en fonction d'un seuil de la pluviomètre du jour.

Ce script LUA testerait à 20h par exemple la valeur de la pluviométrie cumulée du jour et déclencherait un switch virtuel à ON si la valeur de la pluviométrie du jour dépasse un seuil prédéfini.
Le programme d'arrosage a lieu entre 21h00 et 22h30 uniquement si le switch virtuel est à OFF
Ce switch virtuel se remettrait à OFF tous les jours après l'arrosage à 23h59 par exemple.

Mon pluviomètre est un pluviomètre à bascule relié par RFXCOM à mon domoticz
pluviometre.JPG
pluviometre.JPG (31.33 Kio) Consulté 1279 fois
Mon expérience est très maigre en LUA. Merci d'avance pour votre aide.

J'essaie déjà désespérément de print la valeur de mon pluviomètre sans succès.

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 10:49
par Keros
Partage-nous le code que tu essayes pour faire le print de la valeur de ton pluviomètre : nous pourrons t'aider à analyser ce qui ne fonctionne pas.

Tu peux regarder les petits guides que j'ai écrits dans ma présentation : il y en a un pour débuter en programmation (lien dans ma signature).

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 10:50
par Matthias
Je m'auto réponds. Que pensez vous de ce code ?
Est ce la meilleure façon de l'écrire ? Vos Avis ?

Code : Tout sélectionner

commandArray={}

local executionTime = '20:00'

if (os.date('%H:%M') == executionTime and otherdevices_rain['Pluviometre'] >= 6 ) then
    
commandArray['TemporisationPluie']='On'

    end

return commandArray
@Keros, Je viens de répondre en même temps. Que penses tu de mon code ? Je vais aller surfer sur tes liens. Merci du conseil.

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 11:28
par Keros
Je ne pense pas qu'il y est une meilleure façon de l'écrire. Si 5 personnes font un code pour la même chose, il est possible qu'il y ait 5 codes différents.

Ton script me semble pas mal. Il manquerait peut-être :
  • des prints pour afficher les logs et savoir si ton programme se lance bien et quelles sont les valeurs des variables qu'il analyse.
  • et des commentaires pour te laisser des indications sur ce que fait le programme.
Je pense que tu peux construire à partir de là et aller plus loin ;)


Edit :

Je viens de voir ton image sur ton premier post, en hébergeant les images à l'extérieur du forum, il y a de fort risques qu'elles ne soient plus disponibles dans quelque temps comme ici, ou encore . Est-ce que tu peux éditer ton message et utiliser l'onglet Fichiers joints en dessous de la zone d'écriture des messages pour enregistrer les éléments sur le serveur du forum. Merci

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 12:11
par Matthias
Merci pour ton retour. Je continue d'avancer sur mon LUA.
Je suis confronté à d'autres problèmes maintenant.
Souhaitant créer un programme pour l'activation des électrovannes, j'utilise la fonction :

commandArray['MyOtherDeviceName4']='On FOR 10' -- minutes

Mais cela ne semble pas fonctionner !

Code : Tout sélectionner

commandArray = {}

local executionTime = '12:03'

if (os.date('%H:%M') == executionTime and otherdevices['TemporisationPluie'] == 'On' ) then
    
commandArray['Irrigation Erable rouge']='On FOR 10'
commandArray['Irrigation Haie Est']='On'
commandArray['Irrigation Haie Ouest']='On'
commandArray['Irrigation Piscine']='On'

end

return commandArray
Je comprends pour les images mais en théorie aucune ne doit manquer sur l'ensemble de mes posts.
Je suis très vigilant sur ce point car rien de plus pénible que de manquer d'information quelques années plus tard.
Malgré cela, je vois pour modifier mon post. Merci

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 13:27
par Keros
Essaye avec cette commande (issue des dernières lignes de cette page) :

Code : Tout sélectionner

commandArray['MyOtherDeviceName4']='On FOR 10 minutes' 
Merci pour l'image ;)

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 15:32
par Matthias
Malheureusement cela ne marche pas.

J'en suis là pour gérer mes 4 électrovannes :

Code : Tout sélectionner

commandArray = {}

local executionTimeOn1 = '20:00'
local executionTimeOff1 = '20:10'

local executionTimeOn2 = '20:20'
local executionTimeOff2 = '20:30'

local executionTimeOn3 = '20:40'
local executionTimeOff3 = '21:00'

local executionTimeOn4 = '21:00'
local executionTimeOff4 = '21:10'

local executionTimeOff5 = '22:00'

if (os.date('%H:%M') == executionTimeOn1 and otherdevices['TemporisationPluie'] == 'Off') then
commandArray['Irrigation Erable rouge']='On'

elseif (os.date('%H:%M') == executionTimeOn2 and otherdevices['TemporisationPluie'] == 'Off') then
commandArray['Irrigation Haie Est']='On'

elseif (os.date('%H:%M') == executionTimeOn3 and otherdevices['TemporisationPluie'] == 'Off') then
commandArray['Irrigation Haie Ouest']='On'

elseif (os.date('%H:%M') == executionTimeOn4 and otherdevices['TemporisationPluie'] == 'Off') then
commandArray['Irrigation Piscine']='On'

elseif (os.date('%H:%M') == executionTimeOff1 and otherdevices['TemporisationPluie'] == 'Off' ) then
commandArray['Irrigation Erable rouge']='Off'

elseif (os.date('%H:%M') == executionTimeOff2 and otherdevices['TemporisationPluie'] == 'Off' ) then
commandArray['Irrigation Haie Est']='Off'

elseif (os.date('%H:%M') == executionTimeOff3 and otherdevices['TemporisationPluie'] == 'Off' ) then
commandArray['Irrigation Haie Ouest']='Off'

elseif (os.date('%H:%M') == executionTimeOff4 and otherdevices['TemporisationPluie'] == 'Off' ) then
commandArray['Irrigation Piscine']='Off'

elseif (os.date('%H:%M') == executionTimeOff5 and otherdevices['TemporisationPluie'] == 'Off' ) then
commandArray['TemporisationPluie']='On'


end

return commandArray

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 16:03
par Keros
Cela ne marche pas > il y a quelque-chose qui ne fonctionne pas comme on le souhaite.

As-tu regardé mon petit guide pour déboguer son programme ? J'y donne à la fin 10 pistes de recherche. Peut-être que ton souci est dedans...

Pour t'aider plus profondément, il faudrait que tu mettes des prints dans ton code :
  • On connaitra les parties qui s'exécutent
  • En indiquant les valeurs des variables dans les prints, on saura avec quelles infos travaille le script.
Donne-nous ton script avec les prints et les logs correspondant qui doivent apparaîtrent dans DomoticZ.

PS1 : ne cherche pas encore à faire 5 cas d'exécutions : commence avec 1 que tu valides et ensuite tu rajouteras les autres.
PS2 : Mets stp tes scripts entre les balises code (bouton </>) plutôt que quote, c'est plus facile à lire.

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 16:16
par Matthias
Pardon, je me suis mal exprimé.
Quand je dis que ça ne marche pas, je parlais de ‘On FOR 10 minutes’

Par contre mon script tel que je l’ai mis dans le dernier post fonctionne mais à mon avis il y a moyen de faire plus simple !

Re: Programmation arrosage en fonction de la pluviométrie

Publié : 05 juin 2022, 16:41
par Keros
Oui tu peux écrire ton script de façon plus simple. Tu as la condition otherdevices['TemporisationPluie'] == 'Off' que tu utilises plusieurs fois, tu peux utiliser plusieurs niveaux de condition et la mettre au-dessus des os.date('%H:%M') == executionTimeOn1

Code : Tout sélectionner

Si Condition Pluie alors
     Si Condition Time1 alors
          Commande électrovanne 1
     Sinon si Condition Time2 alors
          Commande électrovanne 2
     Sinon si Condition Time3 alors
          Commande électrovanne 3
     Fin
Fin