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

server command #201

Open Canevame opened 8 years ago

Canevame commented 8 years ago

Bonjour,

C est surement une question bete mais comment faire executer un script python par yana sur le serveur?

ingfred commented 8 years ago

tu as essayé avec les scenarii ? avec commande serveur "python tonfichier.py"

Canevame commented 8 years ago

merci pour ta reponse, non ca je n ai pas essayé, j ai utilisé le plugin modele pour y inclure des commandes php exec et autres ce n est pas concluant, surtout que je suis une brele en php :) Je n ai jamais utilisé les scenar ca fonctionne comment? je cree un scenar qui execute directement python ?

Canevame commented 8 years ago

en tout cas creer une nouvelle commande vocale de marche pas avec server_command et gpio non plus, mais bizzarement une commande vocale server command avec "gpio -g write 25 1" fonctionne bien comme si je la tapais dans un shell.

Canevame commented 8 years ago

Ca ne marche pas non plus avec les scenar, aucune commande python ou meme un simple ls ne marche, que ca soit avec sudo ou pas ni sudo -u www-data enfin rien ! J' utilse x2go pour me connecter sur le rpi et je me demande si le fait que je sois sur le DISPLAY 51:0 au lieu de 0:0 si j etais directement sur le RPI y fait quelque chose ?

Canevame commented 8 years ago

ERREUR: Impossible de parser la réponse: Error reading JObject from JsonReader. Path '', line 1, position 1.

ldleman commented 8 years ago

Ton problème peux venir de pas mal de choses, perso je pencherais sur les permissions, toutes commande que tu fera depuis yana s'executera avec l'utilisateur de ton serveur http (donc www-data), il est possible que cleui ci n'ai pas les droits pour executer ta commande (verifie au cas ou).

Le plus simple est effectivement d'utiliser le plugin commande vocale ou le plugin scénario ce qui t'évite le moindre développement.

Concernant ton message d'esseur peux tu me donner la manip exacte que tu fait (commande tapée, plugin utilisé etc..) que je vois de quoi il s'agit ?

Canevame commented 8 years ago

je me doutais un peu que ca s' execute sur www-data, je suppose que ca vient aussi des permissions ou alors faut-il indiquer le chemin complet de la commande python(usr/bin) et du script que je veux lancer? pour l' instant je l ai copié dans le rep plugins/modele de yana. Au niveau permissions j ai rajouté avec sudo visudo à la fin du texte existant:

pi ALL=(ALL) NOPASSWD:ALL www-data ALL=(ALL) NOPASSWD:ALL

J'ai fait une simple scenario cause phrase genre: test python effet: commande serveur: sudo -u www-data DISPLAY=:50.0 python testQT.py

je viens de remarquer que ca ne marche pas avec sudo -u www-data en ligne de commande directe j ai le message: no protocol specified, testQT.py: cannot connect to X server :50.0

J' ai essayé avec DISPLAY car je me connecte sur le rpi avec x2go et la commande echo $DISPLAY me renvoie :50.0 en ligne de commande un sudo -u www-data sans DISPLAY me renvoie la meme erreur.

Apparement, meme en ligne de commande, je ne peux pas me connecter sur le serveur d affichage avec www-data, alors que si je fais avec sudo -u pi ca fonctionne, meme sans rajouter DISPLAY=:50.0

Dans la commande serveur scenario sur yana j ai essayé plusieurs combinaisons avec sudo -u pi, sudo -u www-data, sans mettre sudo, avec DISPLAY ou pas etc mais rien ne fonctionne, meme une simple commande ls -l ne fait rien. J' avoue que je suis perdu :)

Canevame commented 8 years ago

encore une chose: mon programme python affiche un widget QT4 ca joue? sinon j essaye de lancer un sudo -u www-data lxterminal, tjs en ligne de commande ca ne marche pas non plus mais un bete script qui fait un print "hello world" ca fonctionne... tjs en ligne de commande bien sur, avec yana ca ne fonctionne pas

ingfred commented 8 years ago

Personellement, j'ai créé un dossier pg dans yana-server dans lequel j'ai mis les radioEmission qui sont en c. Droit sur les dossiers comme d'hab et propriètaire/groupe www.data pour le dossier et son contenu et tout est ok. Commande lancée avec sudo.

Canevame commented 8 years ago

j'ai fait aussi un repertoire pg avec les droits pour www-data et copié dedans le contenu du repertoire plugins/radiorelay de yana pour avoir les radioemissions, Si j ouvre un shell sous www-data et que je lance python monprog.py ca fonctionne mais ca ne marche tjs pas avec yana ... dans l historique de client Yana il reconnait bien la commande vocale mais ensuite erreur: impossible de parser la reponse: error reading jobject from jsonreader. path ",line 1,position 1