ldleman / yana-server

Interface PHP de domotique Y.A.N.A (You Are Not Alone)
http://projet.idleman.fr/yana
107 stars 59 forks source link

Variables dans scenarii #272

Closed ingfred closed 7 years ago

ingfred commented 7 years ago

Bonjour à tous. Je ne parviens pas a faire fonctionner les variables. J'ai fait un scenario test tout simple variable {HOUR} = 13 et rien ne se déclenche quand vient 13h00. Quelqu'un a t-il teste les variables ? Merci par avance. l'idée est de déclencher un scénario au coucher du soleil. Pour cela j'ai ajouté '{SUNRISE}'=>(int)(date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, 38.4, -9, 90, 1)/60), '{SUNSET}'=>(int)(date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, 38.4, -9, 90, 1)/60), '{DATEMINUTE}'=>(int)(date (U ,time())/60), dans le story.class.php et je voulais comparer le DATEMINUTE avec le SUNSET pour allumer mes lampes.

ingfred commented 7 years ago

Par contre, dans les effets tout est ok.

ldleman commented 7 years ago

Salut ingfred,

Sur mes tests jusqu'ici ça fonctionnait, je vais revérifier mais normalement on est bon :p

Peux tu me montrer comment tu utilise les variables dans le scénario et dans le code (puisque visiblement tu en as ajouté direct dans le fichier php ce qui n'est pas habituel).

Autre truc qui m'intrigue : quel est l'objectif de {DATEMINUTE} ? Ça me semble alambiqué, pourquoi ne pas comparer tout simplement le date('H:i') a ton sunset ?

Pour ce qui est des cast en int, ils sont inutiles, sauf si tu les utilise pour tronquer tes float, auquel cas la fonction round est plus appropriée.

ldleman commented 7 years ago

Je viens de capter que tu utilisais {HOUR} dans les causes, or normalement tu est sensé utiliser plutôt le bloc "date/heure" si tu veux comparer des horaires coté causes.

Je vais quand même faire un ptit correctif coté code pour prendre en compte ces variables coté causes également.

ldleman commented 7 years ago

C'est fait, tu peux mettre à jour et voir ce que ça donne ?

ingfred commented 7 years ago

Salut idle. Et merci de t'être penché sur le sujet. Pour ce qui est de ma logique alambiquée, c'est simplement que je n'ai jamais vu une ligne de PHP. donc très bricolage. Et comme je ne sais pas si les données sont typées, je craignais la galère de comparaison date/string... Je me suis dit que des entiers seraient bienvenus. Et j'ai ramené les secondes à des minutes car test des scenarii toutes les minutes. Je vient de git pull qui ne passait pas; Donc git hard reset et là le module temperature ne veut plus rien savoir. Je vais donc tout réinstaller ce soir tout propre et je te tiens au courant. A moins que tu me dise comment desactiver le module temperaturesans interface :

Fatal error: Cannot redeclare temperature_plugin_menu() (previously declared in /var/www/yana-server/plugins/temperature/temperature.plugin.php:39) in /var/www/yana-server/plugins/temperature/temperature.plugin.enabled.php on line 11

ingfred commented 7 years ago

Concernant le test en cause avec HOUR, c'était simplement pour tester ces variables.

ingfred commented 7 years ago

Reinstallé et créé scenario avec {TIME}={SUNSET.TIMESTAMP} comme cause. Mais si test toutes les minutes, il faut du bol pour tomber la bonne seconde, non ?

ingfred commented 7 years ago

Bonjour Idle. Super : Le test avec les variables en cause fonctionne. {MINUTE}=25 par exemple. Les test avec {TIME}=SUNSET.TIMESTAMP} ne passe pas. Mais verif des scenarii toutes les minutes et variables qui changent toutes les secondes. Je teste avec {MINUT}={SUNSET.TIMEMINUTE} (petit ajout dans le story.class.php}

ingfred commented 7 years ago

Petit resume. 1) Dans les effets il faut déclarer VAR1 et non {VAR1} . Dans les causes, {MINUT}=50 fonctionne mais {MINUT}={SUNSET.TIMEMINUTE} ne fonctionne pas. Je continue à jouer

ldleman commented 7 years ago

Merci pour ces tests. Je reprends dans l'ordre : 1 ) Pour désactiver un plugin sans accès a l'interface tu peux supprimer sa ligen dans le fichier plugin/plugin.states.json. 2 ) Effectivement une égalité stricte de timestamp ne sert a rien vu que le cron passe toutes les minutes, je pensais plus a une comparaison inférieure / supérieure, mais je viens de m'apercevoir que je n'ai pas encore mis en place ce time de comparaison pour le moment (dans ma tête c'était fait ça ^^) 3 ) Donc pour le moment tu peux faire ta comparaison avec {HOUR}:{MINUT} = {SUNSET.TIME} je verrais plus tard pour ajouter {SUNSET.MINUT} et {SUNSET.HOUR} (et du coup supprimer {SUNSET.TIME} qui sera recreable en additionnant les deux).

4) Pour les effets sans "{}" je l'ignorais, je vais mater ça ce n'est pas normal merci d'avoir signalé.

ingfred commented 7 years ago

Bonjour idle. Pour info, Je ne parviens pas à mettre un égalité de variable dans les causes, type {HOUR}:{MINUT} = {SUNSET.TIME} De plus SUNSET.TIME n'est pas declaré (j'ai evidement fait le test avec une autre variable. Bonne journée.

Le 31/08/2016 11:44, Idleman a écrit :

Merci pour ces tests. Je reprends dans l'ordre : 1 ) Pour désactiver un plugin sans accès a l'interface tu peux supprimer sa ligen dans le fichier plugin/plugin.states.json. 2 ) Effectivement une égalité stricte de timestamp ne sert a rien vu que le cron passe toutes les minutes, je pensais plus a une comparaison inférieure / supérieure, mais je viens de m'apercevoir que je n'ai pas encore mis en place ce time de comparaison pour le moment (dans ma tête c'était fait ça ^^) 3 ) Donc pour le moment tu peux faire ta comparaison avec {HOUR}:{MINUT} = {SUNSET.TIME} je verrais plus tard pour ajouter {SUNSET.MINUT} et {SUNSET.HOUR} (et du coup supprimer {SUNSET.TIME} qui sera recreable en additionnant les deux).

4) Pour les effets sans "{}" je l'ignorais, je vais mater ça ce n'est pas normal merci d'avoir signalé.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ldleman/yana-server/issues/272#issuecomment-243713522, or mute the thread https://github.com/notifications/unsubscribe-auth/AH-edtLsPwacuclUbyMIzPrMBoL847Maks5qlUzugaJpZM4Ju6Do.

ldleman commented 7 years ago

j'ai ajouté sunset.hour, sunset.minut, sunrise.hour,sunrise.minut . Peux tu faire un update de yana et essayer avec ça ?

ingfred commented 7 years ago

Yes. Tu as pu regarder pour les comaraison de variables ?

Le 02/09/2016 08:05, Idleman a écrit :

j'ai ajouté sunset.hour, sunset.minut, sunrise.hour,sunrise.minut . Peux tu faire un update de yana et essayer avec ça ?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ldleman/yana-server/issues/272#issuecomment-244290880, or mute the thread https://github.com/notifications/unsubscribe-auth/AH-edr1hFLJu4YYIsqUEd4TCkoegNJK_ks5ql7y4gaJpZM4Ju6Do.

ingfred commented 7 years ago

Re. J'ai evité le gitpull qui au vu de mes quelques bidouilles. J'ai simplement changé l'ancien Story.Class.php par le nouveau. et lancé le test. En pj la capture d'écran. Je te teins au courant. Encore merci.

Concernant Cerber tu peux clore mon issue si ce n'est pas fait. Je ferais un petit topo sur github yana si tu est ok.

Le 02/09/2016 08:05, Idleman a écrit :

j'ai ajouté sunset.hour, sunset.minut, sunrise.hour,sunrise.minut . Peux tu faire un update de yana et essayer avec ça ?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ldleman/yana-server/issues/272#issuecomment-244290880, or mute the thread https://github.com/notifications/unsubscribe-auth/AH-edr1hFLJu4YYIsqUEd4TCkoegNJK_ks5ql7y4gaJpZM4Ju6Do.

ingfred commented 7 years ago

Bonjour. Avec le test {MINUT}={SUNSET.MINUT} pas d'effet. Avec {MINUT}=25 par exemple le test passe. La comparaison de variable semble poser probleme.

ldleman commented 7 years ago

Effectivement je n'ai jamais mis en place le parsing des variables coté valeur testé, j'ai fait la maj si tu veux tester

ingfred commented 7 years ago

Bonjour Idle. Un grand merci. Que ce soit avoir des variables déclarées dans les effets ou des variables predeclarées (SUNSET.MINUT}, tout fonctionne. C'est génial !

ldleman commented 7 years ago

Parfait, merci pour tes infos et tes tests :), je clos , bonne continuation :)