Page 1 sur 2

pb LUA/JSON màj

Publié : 01 août 2017, 15:12
par jackslayter
salut, je veux changer le nom d'un device (custom sensor), je colle ce code json dans une barre d'adresse

Code : Tout sélectionner

http://192.168.1.20/json.htm?type=setused&idx=360&name=blablabla&switchtype=0&devoptions=1%3B%2520&used=true
ça marche

dans le lua,

Code : Tout sélectionner

variable=tostring("blabla")
os.execute('curl -s -i -H "Accept: application/json" "http://192.168.1.20/json.htm?type=setused&idx=360&name="'..variable..'"&switchtype=0&devoptions=1%3B%2520&used=true"')
ca ne marche pas
et si je mets

Code : Tout sélectionner

os.execute('curl -s -i -H "Accept: application/json" "http://192.168.1.20/json.htm?type=setused&idx=360&name=blabla&switchtype=0&devoptions=1%3B%2520&used=true"')
ça marche
si j’enlève le "tostring" j'ai une erreur de string.

avec cette commande c'est pareil

Code : Tout sélectionner

os.execute('curl -s -i -H "Accept: application/json" "http://192.168.1.20/json.htm?type=command&param=renamedevice&idx=360&name="'..variable..'"')
une idée ? j'ai essayé avec des " et des '
merci

Re: pb LUA/JSON màj

Publié : 01 août 2017, 15:35
par vil1driver
salut,

ahhh tu aimes ça les guillemets :mrgreen:

blabla passé en chaîne ça donne "blabla" (ajout de guillemets..)
par la dessus tu y colles un tostring donc tu obtiens ""blabla""
et en plus de cela dans le code de l'url tu rajoutes encore des guillemets name="...
ça fait ptête beaucoup :D

essai juste cela pour voir

Code : Tout sélectionner

variable='blabla'
os.execute('curl -s -i -H "Accept: application/json" "http://192.168.1.20/json.htm?type=setused&idx=360&name='..variable..'&switchtype=0&devoptions=1%3B%2520&used=true"')

Re: pb LUA/JSON màj

Publié : 01 août 2017, 15:55
par jackslayter
non rien changé, c'est comme si on ne pouvait pas mettre une variable dans "name="

Re: pb LUA/JSON màj

Publié : 01 août 2017, 16:12
par vil1driver
pourtant ça fonctionne ici

Code : Tout sélectionner

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='..variable..'&switchtype=0&devoptions=1%3B%2520&used=true"')
juste ajouter un url_encode si tu souhaites pouvoir mettre des espaces dans le nom

Re: pb LUA/JSON màj

Publié : 01 août 2017, 17:55
par jackslayter
marche pas avec

Code : Tout sélectionner

os.execute('curl --silent -s -i -H  "Accept: application/json" --data-urlencode "type=setused&idx=360&name='..variable..'&switchtype=0&devoptions=1%3B%2520&used=true" "http://192.168.1.20/json.htm"')

Re: pb LUA/JSON màj

Publié : 01 août 2017, 18:07
par vil1driver
Laisses moi deviner...

Depuis le début tu indiques blabla mais ce n'est pas ce que tu fais ?

Re: pb LUA/JSON màj

Publié : 01 août 2017, 18:10
par jackslayter
si , je veux modifier le data "name=" en y mettant une variable pour la faire varier

Re: pb LUA/JSON màj

Publié : 01 août 2017, 18:31
par vil1driver
Bah pourquoi ne pas juste reprendre mon exemple ?

Re: pb LUA/JSON màj

Publié : 01 août 2017, 18:37
par jackslayter
Je l'ai testé et cela n'a pas marché, vu que tu as parlé du URL encode et que effectivement il peut y avoir des espaces j'ai essayé cela aussi

Re: pb LUA/JSON màj

Publié : 01 août 2017, 19:47
par vil1driver
Au cas ou...

Dans l'exemple j'ai laissé un idx perso...
Tu avais bien pensé à remettre 360 ?

(et bien sur l'ip..)