Lua: lancer une application du pi ???

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Lua: lancer une application du pi ???

Message par Phebus06 »

Bonjour,
Et bien voila, je veux faire mon premier programme en Lua et je me casse les dents depuis plusieurs jour sur quelque chose qui doit surement être très simple mais que je n'ai trouvé nul par dans mes recherches sur le net.
Donc voici ce que je veux faire :
Avoir un interrupteur virtuel sur domoticz qui une fois mis sur On lance un scripte Lua qui lui même exécute un lanceur rapide .desktop sur mon Rasperry Pi.
J'ai mis dans l'interrupteur virtuel la commande :
script://home/pi/domoticz/scripts/lua/script_device_WebTV_NRJ12.lua
qui fonctionne et lance mon script.
Sur le Pi j'ai créé un lanceur qui fonctionne très bien quand je double clic dessus :

[Desktop Entry]
Version=1.0
Name[fr]=WebTV_NRJ12
Comment[fr]=Utiliser en ligne de commande
Icon=/home/pi/domoticz/www/monitor/Diriger_pi/Icons/NRJ12.jpg
Type=Application
Terminal=false
Exec=xdg-open http://www.wiiz.tv/regarder_nrj12.php

maintenant je n'arrive pas à lier le tout en Lua. Si quelqu'un veut bien m'aider...
Voici ce que j'ai essayer :

commandArray = {}
if (devicechanged['WebTV_NRJ12'] == 'On') then
os.execute('/home/pi/domoticz/www/monitor/Diriger_pi./WebTV_NRJ12.desktop')
end
return commandArray

C'est ma troisième ligne mon problème...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua: lancer une application du pi ???

Message par vil1driver »

Salut,

Ne pas mettre de script lua dans action On ou action Off,
Ces scripts doivent être lancé par domoticz lui même..

Surtout que ce n'est pas utile car un script_device se lancera sur l'action de ton switch de toute façon.

D'ailleurs ton script est bien fait (à condition qu'il soit bien de type device)

A mon avis os.execute ne sait pas lancer de .desktop
Je pense qu'il est de trop...
Que donnerait

Code : Tout sélectionner

os.execute('xdg-open http://www.wiiz.tv/regarder_nrj12.php') 
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Lua: lancer une application du pi ???

Message par Phebus06 »

merci pour l'aide, malheureusement rien non plus...

quand j'ouvre un terminal sur le pi et que je met :
xdg-open /home/pi/domoticz/www/monitor/Diriger_pi/WebTV_NRJ12

et bien cela lance bien mon lanceur et la page web s'ouvre alors que quand je fais sur ma 3ème ligne :
os.execute('xdg-open /home/pi/domoticz/www/monitor/Diriger_pi/WebTV_NRJ12')

rien ne se passe .... bizard
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Lua: lancer une application du pi ???

Message par aleph0 »

Regarde du côté des path... Si ça se trouve, l'utilisateur sous lequel tourne domoticz n'a pas le bon path pour trouver xdg_open
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua: lancer une application du pi ???

Message par vil1driver »

Phebus06 a écrit : os.execute('xdg-open /home/pi/domoticz/www/monitor/Diriger_pi/WebTV_NRJ12')
Ce n'est pas ce que j'ai dit... :?
aleph0 a écrit :Regarde du côté des path... Si ça se trouve, l'utilisateur sous lequel tourne domoticz n'a pas le bon path pour trouver xdg_open
+1
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Lua: lancer une application du pi ???

Message par Phebus06 »

Pardon je me suis mal exprimé vil1driver, j'ai bien fait ce que tu m'as demandé, mais cela ne marche pas non plus...du coup j'ai aussi mis un de mes innombrable essais qui je pensais devait fonctionner.

aleph0, je suis désolé mais tu parles à un néophyte. Comment je dois faire pour vérifier les path ???
Si tu peux me donner la marche à suivre ça serai super cool. Merci
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Lua: lancer une application du pi ???

Message par aleph0 »

tu parles à un néophyte
ok, alors en un peu plus détaillé ;) :
le PATH est une variable qui contient la liste des répertoires où le système doit regarder pour trouver un exécutable. Il peut-être configuré différemment pour chaque utilisateur.

- D'abord, on va déterminer sous quel utilisateur tourne ton domoticz. Prends un terminal sur l'ordi qui fait tourner ton domoticz et lance la commande

Code : Tout sélectionner

ps -fe | grep domoticz
Tu vas avoir une réponse du style ci-dessous :

Code : Tout sélectionner

root     17645  2247  1 févr.26 ?     00:21:00 /usr/bin/python /usr/bin/gigasetelements-cli -tt -l /var/log/domoticz/gigaset.log
domoticz 26325     1  3 févr.26 ?     01:13:18 /opt/domoticz/domoticz -daemon -dbase /opt/domoticz/db/domoticz.db -userdata /opt/domoticz/ -pidfile /var/run/domoticz/domoticz.pid -www 8080 -sslwww 8443 -log /opt/domoticz/log/domoticz.log -loglevel 0
root     27765 19475  0 10:46 pts/0    00:00:00 grep --color domoticz
Repère la ligne qui corresponds à domoticz (/opt/domoticz/domoticz dans mon exemple, mais chez toi ça peut être autre chose). Le premier mot de la ligne est l'utilisateur qui exécute domoticz (domoticz dans mon exemple, j'ai pas fais très original ;) ). Pour la suite, on va supposer que l'utilisateur s'appelle domoticz. Pour TES tests, remplace le par l'utilisateur que tu viens de trouver dans les commandes ci-dessous

Passe ensuite sous cet utilisateur avec la commande

Code : Tout sélectionner

su domoticz
ou, selon ta distribution et l'utilisateur avec lequel tu est loggé pour faire les tests :

Code : Tout sélectionner

sudo su domoticz
Puis, sous cet utilisateur, tente d'exécuter xdg_open http://www.wiiz.tv/regarder_nrj12.php Si ça marche, mon hypothèse n'est pas la bonne, il faut chercher ailleurs. Si tu as un message d'erreur, tu as compris pourquoi domoticz n'arrive pas à lancer ta commande. En effet, ce que nous venons de faire manuellement est exactement ce qu'essaye de faire domoticz lorsque tu lui demandes un os.execute.

Pour la suite, on suppose donc que tu as eu un message d'erreur. Pour corriger, il faut savoir où est ton xdg_open. sort de l'utilisateur domoticz pour revenir à ton utilisateur "normal" (celui avec lequel ta commande marche) avec la commande

Code : Tout sélectionner

exit
puis tapes

Code : Tout sélectionner

which xdg_open
tu devrais avoir une réponse du style

Code : Tout sélectionner

/usr/local/bin/xdg_open
le /usr/local/bin est le path en question qu'il faut indiquer à domoticz.

Pour celà, 2 possibilités :
- la simple : Rajoute le dans ton os.execute :

Code : Tout sélectionner

os.execute("xdg_open blabla")
deviens

Code : Tout sélectionner

os.execute("/usr/local/bin/xdg_open blabla") 
(encore une fois, adapte à ce que tu as trouvé pendant les tests, je ne peux te guider plus en détail sur un RPi car mon installation n'est pas standard)
- la plus compliquée : Rajoute le chemin trouvé dans la variable environnement de l'utilisateur concerné. Dis moi ce que donne les tests précédents avant que je fasse une tartine qui sert à rien si le problème n'est pas celui là !
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Lua: lancer une application du pi ???

Message par Phebus06 »

alors la chapeau bas, j'ai compris toutes tes explications.
Vivement ce soir que j'essaie ;)
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Lua: lancer une application du pi ???

Message par Phebus06 »

donc en tapant ça dans le terminal

Code : Tout sélectionner

ps -fe | grep domoticz
j'obtiens :
terminal_1.png
terminal_1.png (84.4 Kio) Consulté 7643 fois
donc je suppose que l'utilisateur est pi

et si je fais :

Code : Tout sélectionner

su pi
alors il me demande mon mot de passe, que je met.
Puis je tape la commande :

Code : Tout sélectionner

xdg-open http://www.wiiz.tv/regarder_nrj12.php
et ça fonctionne.
Du coup je me demande si c'est le mot de passe qui empêche l'exécution de la demande dans Lua ?
Et si c'est ça, comment faire ?
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Lua: lancer une application du pi ???

Message par Phebus06 »

ahah.... si je met

Code : Tout sélectionner

sudo su pi
il ne me demande plus le code et la demande d'ouverture de la page web fonctionne...
donc il faudrait que dans le script Lua la demande soit précédée de sudo quelque part non ???
Répondre