Page 1 sur 2
Pb avec os.execute
Publié : 18 janv. 2016, 15:19
par vrolland
Bonjour à tous,
J'ai un petit problème sur un script lua qui lance un script shell via la fonction os.execute
le code lua ressemble a ça :
Code : Tout sélectionner
commandArray = {}
if (devicechanged['test'] == 'On') then
print ('confort')
os.execute('/home/pi/domoticz/scripts/bash/ipx800.sh 1 4 confort')
end
if (devicechanged['test'] == 'Off') then
print ('eco')
os.execute('/home/pi/domoticz/scripts/bash/ipx800.sh 1 4 eco')
end
return commandArray
Dans les logs de domoticz, lorsque j'actionne mon interrupteur "test", je vois bien le "eco ou le "confort" passer...mais le script n'est pas exécuté.
Je lance sans problème la ligne de commande via une console ssh avec l'utilisateur "pi".
A savoir que j'ai un autre script dans ce même répertoire qui est lancé par un autre script lua sans problèmes, la seule
différence à mes yeux c'est qu'il y a moins d'arguments dans l'autre appel...
Auriez vous une idée svp ?
Merci d'avance.
Vincent
Re: Pb avec os.execute
Publié : 18 janv. 2016, 15:40
par Neutrino
bonjour,
essaye plutôt
Code : Tout sélectionner
os.execute('sh /home/pi/domoticz/scripts/bash/ipx800.sh 1 4 confort')
et dis nous si c'est mieux.
Re: Pb avec os.execute
Publié : 18 janv. 2016, 16:16
par vrolland
Salut,
Merci pour ta réponse.
Le "sh" ne change rien, j'ai toujours les "eco" ou "confort" dans les logs de domoticz mais les relais sur mon ipx800 ne changent pas d'état.
Je rappelle que le script fonctionne correctement lorsqu'il est lancé manuellement (avec le chemin complet...pas d'erreur la dessus !) c'est le lancement
via domoticz qui pause problème mais aucun infos dans les logs, c'est dommage !
Aurai je trop d'arguments ?
Re: Pb avec os.execute
Publié : 18 janv. 2016, 16:33
par Neutrino
Ton script ipx800.sh commence par quelle ligne ?
Sh est peut-être à remplacer par bash (dans le lua ).
Re: Pb avec os.execute
Publié : 18 janv. 2016, 17:06
par vrolland
le script commence par #!/bin/bash
Re: Pb avec os.execute
Publié : 18 janv. 2016, 17:29
par Neutrino
Alors je dirais
Code : Tout sélectionner
os.execute('bash /home/pi/domoticz/scripts/bash/ipx800.sh 1 4 confort')
Re: Pb avec os.execute
Publié : 18 janv. 2016, 17:35
par rimram31
A ta place, je décortiquerais le script -> le remplir de debug echo "Coucou, ça c'est fait ..." >> /tmp/debug_log un peu partout pour voir ce qui marche ou pas. Entre un script exécuté en étant user pi et domoticz, ce qui peut changer c'est l'environnement d'exécution, effectivement shell par défaut mais tu préfixes #!/ mais aussi par exemple la variable PATH ou autre.
Le seul moyen de savoir ce qui se passe c'est de mettre des debug dans le script lui-même.
Re: Pb avec os.execute
Publié : 18 janv. 2016, 17:38
par vrolland
Neutrino a écrit :Alors je dirais
Code : Tout sélectionner
os.execute('bash /home/pi/domoticz/scripts/bash/ipx800.sh 1 4 confort')
Merci pour ton aide c'est ça, le bash en début de ligne, j'y aurais pas pensé surtout que j'ai un autre os.execute dans un autre script qui fonctionne sans.
Re: Pb avec os.execute
Publié : 19 mai 2017, 12:18
par Lamusicadomi
Bonjour,
J'ai le même problème avec un script faisant appel à un acript en .sh :
Code : Tout sélectionner
#!/bin/bash
os.execute('bash home/pi/domoticz/scripts/http/FenetreParentFROST.sh')
J'ai essayé sans mettre "bash" mais rien y fait. Systématiquement j'ai la même erreur, à savoir :
./FPOFF: ligne 2: erreur de syntaxe près du symbole inattendu « 'bash home/pi/domoticz/scripts/http/FenetreParentFROST.sh' »
./FPOFF: ligne 2: `os.execute('bash home/pi/domoticz/scripts/http/FenetreParentFROST.sh')'
De plus sous domoticz si je lance au niveau de l'interrupteur le shell FenetreParentFROST.sh, il ne se passe rien en action...
Je vous indique le code de script shell :
Code : Tout sélectionner
#!/bin/bash
# la commande me permettant d'obtenir une cle token
# curl https://api.myfox.me/oauth2/token -d 'grant_type=password&client_id=CLIEN_ID&client_secret=CLIENT_SECRET&username=USERNAME&password=PASSWORD'
# je mets le resultat de mon appel URL dans la variable CLETOKEN
cletoken=$(curl https://api.myfox.me/oauth2/token -d 'grant_type=password&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&username=USERNAME&password=PASSWORD')
# J'extrait la cle token de la reponse
codetoken=${cletoken:17:40}
# j'affiche les resultats pour verif
#echo "$cletoken"
#echo ${cletoken:17:40}
# Ci-dessous les adresses URL suivant les commandes
# Je ferme le radiateur de Chambre Parents
#curl https://api.myfox.me:443/v2/site/siteID/device/deviceID/heater/off?access_token="$codetoken"
# Liste des devices
curl https://api.myfox.me:443/v2/site/siteID/device/heater/items?access_token="$codetoken"
Pouvez vous m'aider sachant que le script shell fonctionne très bien en terminal... ?
A bientôt !
Re: Pb avec os.execute
Publié : 19 mai 2017, 12:47
par vil1driver
Salut,
as tu vu dans les exemples ci dessus le / avant home ?