IPX800V5 commande JSON - domoticz

log

curl -i -X PUT -H 'Content-Type:application/json' -d '{"on":"true"}' http://192.168.100.139/api/core/io/65536?ApiKey=apikey 

2022-02-17 11:12:49.148 Error: EventSystem: in IPX_gardien: C:\Program Files (x86)\Domoticz\scripts\lua\JSON.lua:1234: C:\Program Files (x86)\Domoticz\scripts\lua\JSON.lua:808: can't parse JSON at byte 1 of: HTTP/1.1 400 Bad Request
2022-02-17 11:12:49.148 Access-Control-Allow-Origin: *
2022-02-17 11:12:49.148 Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
2022-02-17 11:12:49.148 Access-Control-Allow-Headers: Content-Type, Origin, X-Requested-With, Accept
2022-02-17 11:12:49.148 Connection: close
2022-02-17 11:12:49.148 Content-Type: application/json
2022-02-17 11:12:49.148
2022-02-17 11:12:49.148 {"Status":"Invalid JSON format","GceError":{"group":"0xf0","code":"0x300c"}}

bonjour
voici mon code LUA (directement ecrit sous domoticz, avec un trigger ‹ Device ›). Mon domoticz tourne sur un raspebrry.
test1 et test2 sont les noms de mes devices de type interrupteurs sous domoticz
65536 et 65537 les N° des relais sous mon IPX800v5

Debug = "NO" -- Turn debugging on ("YES") or off ("NO")

-----configuration
local url = 'http://192.168.1.xx/' -- url locale IPX800V5
local apikey = 'xxxxxxxxxxxxxxxxxxx' -- APIKEY pour acceder à l'IPX800v5
----- fin configuration 
commandArray = {}
----- commande relais 1
if (devicechanged['test1'] == "On")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":true}' "..url.."api/core/io/65536?ApiKey="..apikey.."")
end
if (devicechanged['test1'] == "Off")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":false}' "..url.."api/core/io/65536?ApiKey="..apikey.."")
end

----- commande relais 2
if (devicechanged['test2'] == "On")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":true}' "..url.."api/core/io/65537?ApiKey="..apikey.."")
end
if (devicechanged['test2'] == "Off")
then
os.execute("curl -X PUT -H 'Content-Type: application/json' -d '{\"on\":false}' "..url.."api/core/io/65537?ApiKey="..apikey.."")
end
return commandArray

chez toi à la fin de ta ligne cmd tu écris directement apikey alors que moi il est entre « …apikey… »
ca vient peut-être de la ?

2 « J'aime »

Bonjour,

Je reviens sur ce sujet ou je suis également perdu. Moi je tourne sous windows Homeseer 4. Je n’ai pas de problème avec une IPX800 V4 mais pour mon autre domicile j’ai acheté une V5. J’arrive à lire les etats des relais mais je n’arrive pas à les commander.

Si on lit la doc CGE
GCE_API.put(‹ api/core/io/65536 ›, { toggle: true }) // toggle IO state
GCE_API.put(‹ api/core/io/65536 ›, { on: true }) // set ON
GCE_API.put(‹ api/core/io/65536 ›, { on: false }) // set OFF

le code que j’ai mis dans le script Homeseer en VB est
s ="{on: true} "
text_ip800 = hs.URLAction(« http://192.168.1.45/65543?ApiKey=xxxxxxxxxxxx",« PUT »,s," »)

le xxx etant evidemment remplacé par le vrai mdp

J’ai mis la doc de la fonction hs.URLACTION en PJ.

J’ai aussi essayé des command line powershell mais la syntaxe n’est pas la bonne, par contre j’arrive à lire les données IPX800 V5

Quelqu’un peut m’aider ?

Merci d’avance

J’ai essayé pas mal de variante du style
s =« { on: true } »
text_ip800 = hs.URLAction(« http://192.168.1.35/api/core/io/65543?ApiKey=xxxxxx",« PUT »,s," »)

sans succès. Je pense que la chaine de caractère est fausse.

Des idées ?

Il me semble qu’il n’est pas possible d’envoyer directement une requête PUT en utilisant uniquement la barre d’adresse de Firefox. La barre d’adresse est principalement conçue pour entrer des URL et accéder à des sites web. Pour envoyer une requête PUT ou toute autre requête HTTP avec un corps de message, il faut un outil plus approprié tel qu’un client HTTP ou un environnement de développement web comme Postman, cURL, ou des extensions de navigateur spécifiques pour tester les API REST comme RESTClient pour Firefox.