Page 1 sur 1

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

Publié : 11 nov. 2018, 15:24
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é 3176 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

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

Publié : 12 nov. 2018, 20:13
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é 3140 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>

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

Publié : 13 nov. 2018, 17:28
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é 3117 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.

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

Publié : 13 nov. 2018, 17:31
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