Page 1 sur 3
php et os.execute
Publié : 10 nov. 2018, 15:20
par MowokS
Bonjour à tous,
j'arrive à passer une commande php dans un script bash:
php miio-cli.php --ip AdresseDeLampoule --token IciMaCléToken --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'
Du coup je lance ce batch en lua avec la commande os.execute('bash monscript.sh').
Je souhaiterais lancer directement ma commande php avec os.execute sans passer par le script bah mais je n'y arrive pas, les -- ainsi que les { } semblent ne pas passer.
Est ce possible de faire une commande qui ressemblerait à
os.execute('php miio-cli.php --ip AdresseDeLampoule --token IciMaCléToken --sendcmd '{"id":1,"method":"get_prop","params":["power"]}')?
La commande exact qui fonctionne dans mon script bash est la suivante:
#!/bin/bash
cd /home/pi/domoticz/scripts/php-miio-master/
php miio-cli.php --ip MONIP --token MON TOKEN --sendcmd '{"id":1,"method":"set_power","params":["on"]}' > /dev/null ;;
Par avance merci de votre aide.
Re: php et os.execute
Publié : 10 nov. 2018, 15:50
par vil1driver
Salut,
Il faut être rigoureux avec les "
Ceci par exemple est étrange
Même chose avec '
Tu ouvres 2 fois et ne fermes qu'1fois..
Probablement mettre également le chemin complet pour php
Re: php et os.execute
Publié : 10 nov. 2018, 16:59
par MowokS
bonjour et merci pour ta réponse, il s'agit d'une erreur de recopie, désolé. Je vais modifier mon post.
Cordialement
Re: php et os.execute
Publié : 10 nov. 2018, 17:10
par vil1driver
il faut bosser le copier/coller dans ce cas
il s'empêche que tu ne fermes toujours pas le premier ' ouvert et que tu n'as pas indiqué le chemin complet de php (typiquement /usr/bin/php)
essai de ne pas t'arrêter la la première phrase des réponses faites

Re: php et os.execute
Publié : 10 nov. 2018, 17:15
par MowokS
Merci vil1driver, j'ai édité mon post en espérant être plus clair.
J'ai encore beaucoup à apprendre dans l'art du copier/coller, mais je ne désespère pas

Re: php et os.execute
Publié : 10 nov. 2018, 17:22
par vil1driver
essai ceci (si c'est plus parlant)
la fin (avant la dernière parenthèse) c'est 2 ' et non pas un "
Code : Tout sélectionner
commandArray ={}
local power = os.execute('/usr/bin/php /home/pi/domoticz/scripts/php-miio-master/miio-cli.php --ip AdresseDeLampoule --token IciMaCléToken --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'')
print(power)
return commandArray
Re: php et os.execute
Publié : 10 nov. 2018, 17:58
par MowokS
En suivant ta recommandation, j'ai créé un evenement device, portant le nom de "status"
Code : Tout sélectionner
commandArray ={}
local power = os.execute('/usr/bin/php /home/pi/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'')
print(power)
return commandArray
voici le log:
2018-11-10 17:53:40.153 Error: EventSystem: in status: [string "commandArray ={}..."]:2: ')' expected near '{'
2018-11-10 17:53:40.192 Error: EventSystem: in status: [string "commandArray ={}..."]:2: ')' expected near '{'
2018-11-10 17:53:40.234 Error: EventSystem: in status: [string "commandArray ={}..."]:2: ')' expected near '{'
Re: php et os.execute
Publié : 10 nov. 2018, 18:08
par vil1driver
et comme ceci ?
Code : Tout sélectionner
commandArray ={}
local power = os.execute('/usr/bin/php /home/pi/domoticz/scripts/php-miio-master/miio-cli.php --ip AdresseDeLampoule --token IciMaCléToken --sendcmd "{'id':1,'method':'get_prop','params':['power']}"')
print(power)
return commandArray
Re: php et os.execute
Publié : 10 nov. 2018, 18:25
par MowokS
voici le script lua:
Code : Tout sélectionner
commandArray ={}
local power = os.execute('/usr/bin/php /home/pi/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd "{"id":1,"method":"get_prop","params":["power"]}"')
print(power)
return commandArray
Pas de message d'erreur dans le champ de saisi, rien dans les logs.
J'ai passé le script en TIME pour voir, toujours rien.
J'ai essayé un autre script device avec une autre commande suivant ton conseil:
Code : Tout sélectionner
commandArray = {}
if devicechanged['status tv'] == 'On' then
os.execute('/usr/bin/php /home/pi/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd "{"id":1,"method":"set_power","params":["on"]}"')
end
return commandArray
Aucun message dans les logs, rien ne se passe
Re: php et os.execute
Publié : 10 nov. 2018, 18:38
par vil1driver
sérieusement tu tapes tout à la main sans usage de copier/coller ?
et svp, utilises les balises code dans tes réponse pour poster du code