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 »

Toujours pareil, rien dans les logs avec la commande:

Code : Tout sélectionner

commandArray ={}
local power = os.execute('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
La commande dans un terminal

Code : Tout sélectionner

php /home/osmc/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd '{"id":1,"method":"get_prop","params":["power"]}'
affiche la réponse suivante:

Code : Tout sélectionner

Устройство 192.168.1.3 доступно и ответило:
{"result":["off"],"id":1}
MowokS
Messages : 46
Inscription : 21 mars 2018, 23:17

Re: php et os.execute

Message par MowokS »

Bon, ça se complique dès que je veux entrer des valeurs numérique pour modifier la luminosité et la température de couleur.

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_bricct","params":['100','1']}\'')
    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
Il ne digére pas la partie "params":['100','1']
voici le log:
Error: EventSystem: in AAAA: [string "--..."]:29: ')' expected near '100'
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message par vil1driver »

Pourquoi des simples quote tout à coup ?
Soit tu mets des doubles
Soit tu les échap \'
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 »

Le script php que j'tulise est comme ça, pour entre les valeurs de luminosité et temperature de couleur ça se passe avec un seul guillemet.
Du coup j'ai compris ce que tu voulais dire, et encore une fois ça a fonctionné avec le code suivant:

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_bricct","params":[\'100\',\'1\']}\'')
    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
Vous êtes un génie! :lol:
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message par vil1driver »

Essai ceci

Code : Tout sélectionner

function os.capture(cmd, raw)
  local f = assert(io.popen(cmd, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  if raw then return s end
  s = string.gsub(s, '^%s+', '')
  s = string.gsub(s, '%s+$', '')
  s = string.gsub(s, '[\n\r]+', ' ')
  return s
end

commandArray ={}

local power = os.capture('php /home/osmc/domoticz/scripts/php-miio-master/miio-cli.php --ip MONIP --token MONTOKEN --sendcmd \'{"id":1,"method":"get_prop","params":["power"]}\'', false)
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 »

Super ca fonctionne!
LUA: Устройство 192.168.1.3 доступно и ответило: {"result":["off"],"id":1}
Tu penses que c'est possible de changer la valeur du switch en fonction de la présence du mot "on" ou "off" ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: php et os.execute

Message par vil1driver »

A tester

Code : Tout sélectionner

if string.find(power, "off") =~ nil then
   print("module is off") 
  -- etc.. 
elseif string.find(power, "on") =~ nil then
   print("module is on") 
  -- etc.. 
end    

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 »

Merci pour toutes ces informations, je vais étudier tout cela de plus près quand j'aurais un peu plus de temps.
Encore merci pour ton aide précieuse, tu m'as fais avancé à pas de géant !
Répondre