Marche/arrêt pompe en blocky, asservi à température et durée du jour

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Honrap
Messages : 69
Inscription : 01 nov. 2017, 21:11

Marche/arrêt pompe en blocky, asservi à température et durée du jour

Message par Honrap »

Bonjour,

J'ai une difficulté à faire fonctionner ce script (surtout le Else de la fonction if, que j'ai pourtant l'habitude de manipuler dans d'autres langages).

Le but est de faire fonctionner une pompe de bassin uniquement pendant la journée (lever/coucher du soleil) et à condition que la température extérieure soit supérieure à la température du bassin ou que cette dernière soit supérieure ou égale à 23°c.

2018-11-11 15_16_29-Bassin Domoticz.png
2018-11-11 15_16_29-Bassin Domoticz.png (29.17 Kio) Consulté 3173 fois
Pour l'instant, la pompe respecte les seuils de température mais pas le lever/coucher du soleil.

Une fois que j'aurai vos avis/explications et que j'aurai compris :-) , je pourrai l'améliorer.
Merci à tous.

EDIT: je viens de trouver ce site https://blockly-demo.appspot.com/static ... ml?lang=fr qui pourrait aider...
https://blockly-demo.appspot.com/static ... =fr#emqfn4
Honrap
Messages : 69
Inscription : 01 nov. 2017, 21:11

Re: Marche/arrêt pompe en blocky, asservi à température et durée du jour

Message par Honrap »

Bonjour,
J'ai revu totalement le script, je pense être sur un résultat plus logique, que je publierai quand il marchera.

Pour faire simple et vérifier le fonctionnement du If else, j'ai pris cet exemple que chacun peut tester sur sa config:
2018-11-12 20_08_21-Domoticz.png
2018-11-12 20_08_21-Domoticz.png (12.59 Kio) Consulté 3137 fois
Quand il fait jour, la ligne "Il fait jour" apparaît dans la LOG, sinon "Il fait nuit".

Sur une version stable 9700, le "Il fait jour" s'affiche chaque minute, mais pas le "Il fait nuit".
Sur la beta 10199, rien ne s'affiche, comme si le script ne s'exécutait pas.

Et vous, ça donne quoi ?

Comme en version beta, on peut exporter/importer, voici le code:

Code : Tout sélectionner

<xml xmlns="http://www.w3.org/1999/xhtml"><block type="domoticzcontrols_ifelseif" id="p_!Ee,h63HhI2u[7T/a/" x="250" y="119"><mutation elseif="1"></mutation><value name="IF0"><block type="logic_operation" id="qA`s?-Ln@fXcYR/I}Uce"><field name="OP">AND</field><value name="A"><block type="logic_timeofday" id="gKz%FpGO{cQ-EFifP^nH"><field name="OP">GTE</field><value name="Time"><block type="logic_sunrisesunset" id="c_s18(:ctxEO.wKSw[*V"><field name="SunriseSunset">Sunrise</field></block></value></block></value><value name="B"><block type="logic_timeofday" id="d!yX.KtZ@~OB2!5zKOd,"><field name="OP">LTE</field><value name="Time"><block type="logic_sunrisesunset" id="9UeoBkmje]iaD3q=`axx"><field name="SunriseSunset">Sunset</field></block></value></block></value></block></value><statement name="DO0"><block type="writetolog" id="ejQwuvWeyVI|`:%:s5Xz"><value name="writeToLog"><block type="text" id="EhIme?[yLa6];`{aKddU"><field name="TEXT">Il fait jour !</field></block></value></block></statement><statement name="DO1"><block type="writetolog" id="NfXvvT}dJ.RXp{.mpH=}"><value name="writeToLog"><block type="text" id=";I`?uX0n62+eT^f?I;X4"><field name="TEXT">Il fait nuit !</field></block></value></block></statement></block></xml>
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Marche/arrêt pompe en blocky, asservi à température et durée du jour

Message par landaisbenj »

Manipuler les else est une chose, mais manipuler les else if en est une autre lol

Ici tu fait un elseif sans condition donc evidemment tu ne validera jamais le il fait nuit.
Si tu avais un else tout court cela pourrait fonctionner mais pas comme ca.
Du coup soit il comprendra qu'il y a une erreure et tout le script sera HS soit il fera en sorte d'ignorer l'erreure et dans ce cas ton script ne fait fonctionner que ce qui fonctionne.

Quelque chose comme ca doit surement mieux fonctionner:
Capture.PNG
Capture.PNG (16.01 Kio) Consulté 3114 fois
Personnellement si tu as l'habitude avec les scripts je te conseil de passer en lua, c'est un poil plus libre une fois que tu as compris le fonctionnement des tables.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Marche/arrêt pompe en blocky, asservi à température et durée du jour

Message par landaisbenj »

Je peux te conseiller aussi de creer un dummy switch (bouton virtuel) que tu appels soleil. Et tu met un timer pour qu'il passe a on au lever du soleil et off au couché. Du coup c'est plus simple a utiliser en script...

Ton script deviendrais:

Code : Tout sélectionner

Si soleil = On and (tempbassin > bassin or bassin > 23) then
   if relais = off then
      relais = on
  end
else
   if relais = on then
      relais = off
  end
end
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre