php et os.execute

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 <\>.
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message par MowokS »

Je fais des copier/coller, et promis je m'applique! :lol:
J'ai modifié mes posts comme tu me l'a conseillé.
C'est effectivement plus lisible.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message 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é :?
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
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message 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
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
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message par vil1driver »

La partie {...} est obligatoirement entre quote ?
As tu testé sans ?
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
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message 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 ?
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
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message 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 :D
Bon dimanche à toi
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message par vil1driver »

Dans celui qui fonctionne tu met php
Dans l'autre /usr/bin/php

Essai juste 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
Répondre