Page 2 sur 2

Re: pb LUA/JSON màj

Publié : 01 août 2017, 20:05
par jackslayter
oui oui bien sur ;)

Re: pb LUA/JSON màj

Publié : 01 août 2017, 20:14
par jackslayter
bon , en faite ça marche pas car il y a un espace dans la variable.
en mettant %20 au lieu de l'espace ça marche.

merci pour ton aide

Re: pb LUA/JSON màj

Publié : 01 août 2017, 21:37
par vil1driver
Donc j'avais vu juste, tu ne testais pas avec le mot blabla :|

Pas simple d'aider si le problème est mal défini...

Pas de quoi ;)

Re: pb LUA/JSON màj

Publié : 02 août 2017, 07:58
par jackslayter
désolé.
par contre j'ai une bonne nouvelle , je suis arrivé à changer l’icône d'un custom sensor à la volé !

Re: pb LUA/JSON màj

Publié : 02 août 2017, 08:44
par vil1driver
oui le problème d'encodage des espaces et caractères spéciaux dans l'url est courant..

la fonction utile est la suivante

Code : Tout sélectionner

-- encode du texte pour le passer dans une url
function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end
donc intégrée dans l'exemple cela donne

Code : Tout sélectionner

-- encode du texte pour le passer dans une url
function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end
curl = '/usr/bin/curl -m 15 '
domoticzIP = '192.168.22.100'   --'127.0.0.1'
domoticzPORT = '8080'
domoticzURL = 'http://'..domoticzIP..':'..domoticzPORT
domoticzUSER = ''      -- nom d'utilisateur
domoticzPSWD = ''      -- mot de pass
variable='blabla'
os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=setused&idx=473&name='..url_encode(variable)..'&switchtype=0&devoptions=1%3B%2520&used=true" &')
ou de manière plus allégée

Code : Tout sélectionner

-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940)
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

variable='blabla'
os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=setused&idx=473&name='..url_encode(variable)..'&switchtype=0&devoptions=1%3B%2520&used=true" &')
tu remarqueras que j'ai ajouté & après l'url pour que le script n'attende pas le résultat de la commande pour se terminer.. (exécution en arrière plan)

Re: pb LUA/JSON màj

Publié : 02 août 2017, 09:28
par jackslayter
merci

Re: pb LUA/JSON màj

Publié : 02 août 2017, 10:28
par vil1driver
Dans ta commande le devoption sert à quoi ?

Re: pb LUA/JSON màj

Publié : 02 août 2017, 10:44
par jackslayter
je crois que c'est pour le nom de l'axe des ordonnées