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

Story: ordre des événements #238

Closed valentin8709 closed 8 years ago

valentin8709 commented 8 years ago

Re salut! Je viens de m'apercevoir d'un bug, je ne sais pas si ça touche plusieurs utilisateurs mais voilà ce qu'il en est: pour mon réveil, j'aime bien mettre un ordre d'actions (genre Yana me réveille en parlant, petite pause, musique, petite pause, les lumières s'allument). Le problème est que lorsque j'enregistre le scénarios et que je le ré-ouvre, les actions se mélangent et impossible de les déplacer.

Y a-t-il possibilité de corriger ce bug? Je sais pas trop quel info donner pour aider, donc hésitez pas à m'orienter pour que je puisse me rendre utile!

Petite question au passage sur le plugin: dans les effets, il y a un champ "variables", est-ce une affectation? une lecture? si c'est une lecture, où peut-on créer la variable à lire? Est-ce que si je place une commande serveur toto="1" et ensuite une lecture "si toto=1" alors "blablabla" ça marche?

Merci d'avance pour vos éclaircissements =)

ldleman commented 8 years ago

Yop !

Tu n'est pas le premier a me signaler çe soucis d'ordre mais je n'arrive pas a le reproduire chez moi, peux tu exporter ton scénario et me l'envoyer ici ?

Pour les variables tu peux les assigner et les lires dans la section effet. Par exemple tu peux créer un scénatrio ayant pour cause date/heure à 17h30 et pour effet variable jourounuit = "nuit"

Dans un autre scénarios tu peux alors mettre par exemple un effet phrase : "Salut, nous sommes dans la tranche de journée {jourounuit}"

Autre particulartité des variables, certaines son créées automatiquement par des effet comme l'effet "commande" qui retournera le résultat de la derniere commande système dans une variable {cmd_result} ou encore l'effet "url" qui retournera le résultatd e la requete dans une variable {url_result}.

Il est prévu sous peu d'ajouter la lecture des variable en tant que cause également.

valentin8709 commented 8 years ago

Merci pour cette explication, c'est plutôt pas mal ça me donne tout plein d'idées pour le coup =)

Je t'ai mis le json d'export en bas du post, juste après avoir enregistré le scénario. Voici l'ordre original:

Commande: sudo mpg123 "http://translate.google.com/translate_tts?tl=fr&client=tw-ob&q=Aller, debout petit Valou" & Pause: 300 secondes Commande: sudo mpg123 "http://str4uice.streamakaci.com/4uclassicrock.mp3" & URL: https://valou.noip.me:8080/yana-server/action.php?action=hue_vocal_change_state&engine=5&state=1 URL: https://valou.noip.me:8080/yana-server/action.php?action=radioRelay_vocal_change_state&engine=2&state=1

A chaque fois que je ré-ouvre le scénarios, les causes sont mélangées de manière aléatoire, avec une tendance à mettre la pause soit au tout début, soit tout à la fin.

J'espère que ça aide, tiens moi au courant si t'as des pistes que je pourrais explorer =)

Contenu du json exporté:

{"story":{"id":"6","date":"1463660090","user":"","label":"R\u00e9veil matin","state":"1","log":"====== Execution 19\/05\/2016 08:30======\n4 effets \u00e0 executer\n> Execution de l\\'effet \"command\"\n\tcommande server lanc\u00e9e : sudo mpg123 \"http:\/\/translate.google.com\/translate_tts?tl=fr&client=tw-ob&q=Aller, debout petit Valou\" &\n> Execution de l\\'effet \"sleep\"\n\tPause de 3000 secondes\n> Execution de l\\'effet \"command\"\n\tcommande server lanc\u00e9e : sudo mpg123 \"http:\/\/str4uice.streamakaci.com\/4uclassicrock.mp3\" &\n> Execution de l\\'effet \"url\"\n\tExecution url d\u00e9finie \u00e0 : \"https:\/\/valou.noip.me:8080\/yana-server\/action.php?action=hue_vocal_changestate&engine=5&state=1\"\n"},"causes":[{"id":"11","story":"6","sort":"0","type":"time","values":"{\"type\":\"time\",\"undefined\":\"=\",\"minut\":\"30\",\"hour\":\"8\",\"day\":\"\",\"month\":\"_\",\"year\":\"*\",\"union\":\"\"}","union":"","operator":""}],"effects":[{"id":"23","story":"6","sort":"0","type":"command","union":"","values":"{\"type\":\"command\",\"target\":\"server\",\"value\":\" sudo mpg123 \\"http:\\/\\/translate.google.com\\/translate_tts?tl=fr&client=tw-ob&q=Aller, debout petit Valou\\" &\",\"union\":\"\"}"},{"id":"24","story":"6","sort":"1","type":"sleep","union":"","values":"{\"type\":\"sleep\",\"value\":\"300\",\"union\":\"ET\"}"},{"id":"25","story":"6","sort":"2","type":"command","union":"","values":"{\"type\":\"command\",\"target\":\"server\",\"value\":\"sudo mpg123 \\"http:\\/\\/str4uice.streamakaci.com\\/4uclassicrock.mp3\\" &\",\"union\":\"ET\"}"},{"id":"26","story":"6","sort":"3","type":"url","union":"","values":"{\"type\":\"url\",\"value\":\"https:\\/\\/valou.noip.me:8080\\/yana-server\\/action.php?action=hue_vocal_change_state&engine=5&state=1\",\"union\":\"ET\"}"},{"id":"27","story":"6","sort":"4","type":"url","union":"","values":"{\"type\":\"url\",\"value\":\"https:\\/\\/valou.noip.me:8080\\/yana-server\\/action.php?action=radioRelay_vocal_change_state&engine=2&state=1\",\"union\":\"ET\"}"}]}

ldleman commented 8 years ago

J'ai fait une ptite update, tu peu ressayer ? :)

valentin8709 commented 8 years ago

Wahou l'update est sympa avec toutes les précisions sur les variables =D et merci pour autant de réactivité! Cependant le bug n'est pas résolu =/ Les commandes se mélangent toujours. Tu veux que je t'envoie autre chose? Des logs ou autre qui pourraient t'aider?

valentin8709 commented 8 years ago

Désolé un petit oubli: j'ai le message suivant: Attention! Le fichier /var/www/yana-server\nerve doit être présent et lancé pour que les causes types 'gpio' fonctionnent.

J'ai pourtant bien rajouté les droits d'exécution, et l'ai lancé à la main pour voir (avec la réponse suivante "Launch nerves..."). D'ailleurs, c'est quoi ces "nerves"?

ldleman commented 8 years ago

Pour le pb d'ordre, essaye de vider ton cache avant de réessayer car le fix est coté client (javascript) Pour le message /var/www/yana-server\nerve je l'ai corrigé une heure après le premier commit mais t'as été trop rapide a update :D, met a jour ça devrait fonctionner.

Nerve se sont les "nerfs" de yana :D, c'est le programme qui vas surveiller les gpio et transmettre instantanément leurs état a la centrale php domotique.

C'est utilisé par le gestionnaire de scénario mais ça peut aussi être utilisé dans d'autres plugins via la méthode Gpio::listen

ldleman commented 8 years ago

Si tu peux faire un git pull et réesayer, je crois que j'ai ciblé le problème (et n'oublie pas de vider ton cache avant de tester :p)

valentin8709 commented 8 years ago

ça fonctionne, trop génial =D Merci pour ta réactivité! Juste un détail: j'ai le warning "Important! Consultez la rubrique installation ..." qui reste affiché. Je sais pas si c'est important mais en tout cas ça ne gène pas du tout.

ldleman commented 8 years ago

Oui je n'ai pas spécialement prévu de clauses pour qu'il disparaisse ^^, je n'ai aucun moyen de tester que nerve est lancé et programmé en crontab donc je le laisse au cas ou quelques utilisateurs soient distrait (ce qui n'arrive jamais bien entendu :D).

Je clos le ticket, n’hésite pas a rouvrir si problème