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

retour sur probleme scenario #181

Closed ingfred closed 8 years ago

ingfred commented 8 years ago

Bonjour à tous. J'avais évoqué un problème de scénario qui semblait résolu grace à l'intervention d'Idleman en personne. J'ai de nouveau eu le soucis après réinstall complète de yana. En fait c'est le premier scénario de la liste qui se lance toutes les minutes, sauf si c'est un scenario dont la cause est un date/heure. J'ai fait un scénario allume tout en lancant la commande /var/www/yana-server.plugins/siplec/radioEmission... de messieurs idleman et robin5wood. Le scenario se lance toutes les minutes... s'il est premier de la liste. J'ai tout viré et placé en premier un scenario reveil (qui lance une phrase c'est l'heure sur le client) puis refait mon scenario allume tout. Et la plus de problème. J'ai recommencé le test en placant en premier le scenario eteins tout, et la tout s'etiens toutes les minutes. Les autres scenarii placés après fonctionnent normalement (allume tout par exemple). J'ai donc l'impression que si le premier scenario n'est pas date heure, la cause prend en compte un date heure qui est toujours vrai sans tenir compte de la cause "phrase".

ingfred commented 8 years ago

Eh bien non. Ce n'est pas le premier scenar qui est en cause. Désolé pour la mauvaise description. C'est un scenar de milieu de tableau que se lance ! capture du 2016-02-07 15 10 39 il allume la lampe 3 , toutes les minutes ! a n'y rien comprendre.

ingfred commented 8 years ago

Et que celle ci ! capture du 2016-02-07 15 13 29

ldleman commented 8 years ago

Vraiment louche en effet, je vais faire des tests de mon coté voir si j'arrive a reproduire le pb.

ldleman commented 8 years ago

Yop ! Peux tu mettre à jour yana puis lancer l'url :
http://ton.url.yana/action.php?action=crontab&mode=verbose

et screenshoter le résultat ? :)

ingfred commented 8 years ago

Bonjour. Ce soir. Suis au boulot et ai débranché tout le bastringue. C'est le premier scenario sans date qui prends a priori. c'est a dire que s'il y en a un avant avec cause date, c'est le second avec cause phrase qui déclenche tout de meme. J'ai vu dans le code que tu avais commencé a regarder les capteurs pour cause dans scenario ... Quelle bonne idee.

De plus dans common.php, la ligne de debug avec tes ip n'etait pas commentée. Est ce normal ?

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

Yop ! Peux tu mettre à jour yana puis lancer l'url :

http://ton.url.yana**/action.php?action=crontab&mode=verbose**

et screenshoter le résultat ? :)

— Reply to this email directly or view it on GitHub https://github.com/ldleman/yana-server/issues/181#issuecomment-181252702.

ldleman commented 8 years ago

Je pense avoir compris le soucis, le pb ne viens pas des scnéario de date mais du fait que je stocke la derniere phrase énoncée dans une variable et que je test dans les scénar de phrases si cette variable correspond a la phrase a enoncer pour lancer le scénario.

Sauf que jamais ne je vide cette variable, du coup si tu as prononcé la phrase une fois, elle vas s'executer a chaques fois.

Fois que je revois la conception.

Oui les capteurs c'est prévu et mêmes quelques autres features mais pour le moment j'essaye de stabiliser les fonctions de base ^^.

Pour les ip, oui c'est normal, ça me sert a faire du debug sans gener les utilisateurs.

ldleman commented 8 years ago

J'ai corrigé si tu peux reesayer (après update) quand t'a une minute...

ingfred commented 8 years ago

Je teste cela rapidement. Faut commenter la ligne dans le common.php ?

ingfred commented 8 years ago

capture du 2016-02-08 12 26 20 Voila pour le screenshot

il m'a ajouté des \ avant tous les / dans le lancement des commandes du scenar : sudo \/var\/www\/yana-server\/plugins\/siplec\/radioEmission 0 1414 1 off normal ? Je ne peux pas verifier d'ici si tout ok on aura la réponse que cet AM. Merci en tous cas.

ingfred commented 8 years ago

A noter screenshot apres mise à jour, d'ou derniere phrase enonce à "" sans doute.

ingfred commented 8 years ago

Bon apetit.

ldleman commented 8 years ago

Donc ça a l'air d'avoir résolu ton premier pb. Pour common.php tu n'as rien besoin de commenter, ça active simplement un retour de debug quand c'est mon ip, pour les autres, c'est transparent. les \/ ajoutés ça ne gene normalement pas l'execution ce sont des caracteres déchappement auto ajoutés pour eviter de sortir de la chaine

ingfred commented 8 years ago

Je restesterais en arrivant à la maison, mais selon mon correspondant local la bas cela ne fonctionne plus. Les caractères d'échapement se multiplient ! au lieu de sudo /var/.... je suis arrivé à sudo \/var\/www.... puis à sudo \\/var\\/www\\/...... j'ai corrigé le scenar à la main. Il me remet les deux caractères d'échappement mais plus de multiplication autre pour l'instant;

ingfred commented 8 years ago

Tu as ajouté une fonction d'import ? Super idée. Par contre petit bug, le fichier json à l'export comprend les caractère d'échappement multipliés :+1: {"story":{"id":"4","date":"1454943593","user":"","label":"allume tout","state":"1","log":"====== Execution 08\/02\/2016 16:07======\n3 effets \u00e0 executer\n> Execution de l\'effet \"command\"\n\tcommande server lanc\u00e9e : sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 1 on\n> Execution de l\'effet \"command\"\n\tcommande server lanc\u00e9e : sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 2 on\n> Execution de l\'effet \"command\"\n\tcommande server lanc\u00e9e : sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 3 on\n"},"causes":[{"id":"15","story":"4","sort":"0","type":"listen","values":"{\"type\":\"listen\",\"operator\":\"=\",\"value\":\"allume tout\",\"union\":\"\"}","union":"","operator":"="}],"effects":[{"id":"25","story":"4","sort":"0","type":"command","union":"","values":"{\"type\":\"command\",\"target\":\"server\",\"value\":\"sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 1 on\",\"union\":\"\"}"},{"id":"26","story":"4","sort":"1","type":"command","union":"","values":"{\"type\":\"command\",\"target\":\"server\",\"value\":\"sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 2 on\",\"union\":\"ET\"}"},{"id":"27","story":"4","sort":"2","type":"command","union":"","values":"{\"type\":\"command\",\"target\":\"server\",\"value\":\"sudo\\/var\\/www\\/yana-server\\/plugins\\/siplec\\/radioEmission 0 1414 3 on\",\"union\":\"ET\"}"}]}

ingfred commented 8 years ago

Pour info php 5.6.17. Au cas ou cela aurait une influence

ingfred commented 8 years ago

Erreur database hier en lancant un scenar à la main. tout crasché Yana. je reinstalle

juliendiotworldtour commented 8 years ago

Bonjour @ldleman, comment vas tu?

Voici mon scénario douche (jutilise des relais inversé, donc l'état du GPIO est inversé) :

Cause: Phrase = lance la douche

Effet Phrase = la douche commencera dans 5 seconde GPIO 0 inactif (ma lampe s'allume) Pause 125 secondes GPIO 5 actif (5 secondes d'attente avant le lancement de la pompe) Pause 5 secondes GPIO 5 inactif (la pompe tourne) Pause 20 secondes GPIO 5 actif (la pompe se coupe) Pause 40 secondes GPIO 5 inactif (la pompe tourne) Pause 60 secondes GPIO 5 actif (la pompe se coupe) GPIO 0 actif (la lampe se coupe)

Tous se mélange dans le scénario ci-dessus. Les pauses se mettent les unes à la suite des autres ainsi que les GPIO à chaque fois que je veux éditer à nouveau mon scénario douche. Ils ne restent pas dans l'ordre que je leur ai imposé. Aussi, Story me pilote les GPIO 0 et 5 l'un après lautre et non simultanément. Par conséquent mon scénario n'est pas du tout ce que je veux.

En revanche si je supprime le GPIO 0, Story me pilote parfaitement le GPIO 6 avec les temporisations imposées.

Comment modifier Story pour qu'il accepte de piloter plusieurs relais de façon asynchrone?

Merci! Julien

ldleman commented 8 years ago

@juliendiotworldtour es tu sûr d'avoir ton plugin story a jour ? Ça ressemble beaucoup a d'anciens bugs réglés depuis un moment. J'ai fait le teste an local, l'ordre est bien conservé et les temps ont l'air respectés : 01

02

@ingfred je vais regarder pour les caractères d'échappement.

juliendiotworldtour commented 8 years ago

Bonsoir @Idleman, j'essaye de nouveau ce soir, quitte à refaire une maj, et je te dis cela ! En fais je veux vraiment faire fonctionner de 2 façons différentes 2 relais simultanément et non l'un après l'autre. Est ce que tu as des tuyaux à me donner pour mieux réussir mon scénario ou est il bon tel que rédigé dans mon précédent commentaire ? Merci beaucoup !

juliendiotworldtour commented 8 years ago

Rebonsoir @ldleman , voici mon retour: J'ai bien vérifié, YANA est à jour. Toutefois mes relais s'allume toujours l'un après l'autre et non ensemble. Pour l'instant j'ai d'abord mon cycle du GPIO 0 qui commence (125 secondes), et seulement une fois que ce cycle est fini le GPIO 6 débutent ses différents cycles. Dans l'idéal, j'aimerai que le GPIO 0 ait un cycle actif de 125 secondes au cours duquel le GPIO 6 est OFF 5 secondes, ON 20 secondes, 0FF 40 secondes et ON 60 secondes (le cumul donne 125 secondes). Les 2 s'arrêtent donc en même temps.

Penses tu que je puisse écrire 2 scénarios avec la même commande vocale? ceci permettrai d'avoir 1 scénario par relai et par conséquent je pourrais résoudre mon problème

juliendiotworldtour commented 8 years ago

C'est bon @ldleman , j'ai ENFIN réussi!!! voici le scénario à taper:

Cause: Phrase YANA lance la douche Effet: GPIO 0 Inactif Pause 5 secondes GPIO 6 inactif Pause 20 secondes GPIO 6 actif Pause 40 secondes GPIO 6 inactif Pause 60 secondes GPIO 6 actif GPIO 0 actif

TU NE PEUX PAS SAVOIR A QUEL POINT JE SUIS HEUREUUUUUUUUX!!!!!

Un très grand merci à toi :+1:

ingfred commented 8 years ago

Bonjour. Après réinstall, tout ok. Ajout tout de même de caractères d'échappement. Je n'ai pas encore testé les sauvegardes.

ldleman commented 8 years ago

@juliendiotworldtour content que ça fonctionne (oui je sais réponse tardive ^^) @ingfred oki doki, je clos pour faire un peu de ménage, n'hésite pas a rouvrir un post si le problème persiste