Page 2 sur 3
Re: php et os.execute
Publié : 10 nov. 2018, 18:39
par MowokS
Je fais des copier/coller, et promis je m'applique!

J'ai modifié mes posts comme tu me l'a conseillé.
C'est effectivement plus lisible.
Re: php et os.execute
Publié : 10 nov. 2018, 18:56
par vil1driver
merci pour les balises code, mais pour le copier/coller je ne comprends pas pourquoi le code que tu postes n'est pas identique au mien..
je ne dis pas que mon code est bon mais ce que tu sembles avoir testé n'est pas ce que j'ai proposé

Re: php et os.execute
Publié : 11 nov. 2018, 10:10
par MowokS
Mea Culpa!
Effectivement j'ai modifié ton code en travaillant en parallèle avec le mien pour éditer la partie IP et TOKEN, et j'ai pris trop large dans ma selection, sans voir que tu avais remplacé les doubles quotes par des simples.
Encore désolé.
Donc voilà ta version dans mon script:
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
et le resultat dans le log
2018-11-11 10:09:00.427 Error: EventSystem: in status: [string "commandArray ={}..."]:2: ')' expected near 'id'
Bon dimanche
Re: php et os.execute
Publié : 11 nov. 2018, 10:27
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é : 11 nov. 2018, 10:39
par MowokS
Avec:
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
Rien dans les logs.
Même manip sur une commande de switch:
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
En activant mon switch:
2018-11-11 10:33:12.946 Status: User: mowoks initiated a switch command (62/status tv/On) , rien d'autre.
Dans les deux cas l’éditeur de script ne révèle aucune erreur de saisie.
Re: php et os.execute
Publié : 11 nov. 2018, 10:47
par vil1driver
La partie {...} est obligatoirement entre quote ?
As tu testé sans ?
Re: php et os.execute
Publié : 11 nov. 2018, 11:00
par MowokS
J'ai tenté sans comme ci dessous:
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
Rien dans les logs.
Je pense que je vais continuer à utiliser les commandes via un script bash.
Le truc c'est que je voulais tester cette config comme j'ai un probléme de remonter de statut comme j'en avais fais part sur un autre topic (
https://easydomoticz.com/forum/viewtopi ... =10&t=7403), entre ce que je passe via un script dans un terminal, et l'appel à ce meme script dans os.execute.
Re: php et os.execute
Publié : 11 nov. 2018, 11:06
par vil1driver
Je disais de supprimer les ' autour des {
Pas de supprimer les {
Mais je pense être tombé sur le code php que tu utilises et il met bien en exemple les '
On ne doit donc pas pouvoir s'en passer
Et sinon par curiosité la commande hors d'un script, dans un terminal directement fonctionne ?
Re: php et os.execute
Publié : 11 nov. 2018, 11:53
par MowokS
Ok c'est réglé!
En suivant ton conseil je me suis connecté au serveur et j'ai copié collé le code.
Le chemin n'etait pas bon, dans mon cas ce n'etait pas /home/pi mais /home/osmc... j'ai donc repris l'ensemble de nos manipulation jusqu'au saint graal!
Code : Tout sélectionner
commandArray = {}
if devicechanged['status tv'] == 'On' then
os.execute('php /home/osmc/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd \'{"id":1,"method":"set_power","params":["on"]}\'')
elseif devicechanged['status tv'] == 'Off' then
os.execute('php /home/osmc/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd \'{"id":1,"method":"set_power","params":["off"]}\'')
end
return commandArray
La lampe s'allume et s'eteint!
Par contre le script suivant ne donne rien:
Code : Tout sélectionner
commandArray ={}
local power = os.execute('/usr/bin/php /home/osmc/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd \'{"id":1,"method":"get_prop","params":["power"]}\'')
print(power)
return commandArray
Excellent, je vais pouvoir remplacer une grande partie de mes scripts bash par les commandes php directement dans les evenements.
Merci pour ta patience vil1driver, j'avoue avoir manqué de rigueur.
Maintenant je vais pouvoir lancer un nouveau topic pour finir mon script de remonter de statut
Bon dimanche à toi
Re: php et os.execute
Publié : 11 nov. 2018, 12:17
par vil1driver
Dans celui qui fonctionne tu met php
Dans l'autre /usr/bin/php
Essai juste php