Lionel57 Posté(e) le 7 décembre 2014 Signaler Posté(e) le 7 décembre 2014 Bonjour, Quelqu'un serait me dire pourquoi le code suivant me retourne systématiquement une erreur 400 (l'ID de la zone de chauffage est correct : si je lance "http://192.168.1.20/api/panels/heating?id=177" dans mon navigateur, j'obtiens bien le programme complet de la zone) ZoneId=177 local HC2 = Net.FHttp("192.168.1.20", 80) HC2:setBasicAuthentication("admin", "xxxxxxxx") result2 = '{"id":' .. ZoneId .. ',"properties":{"vacationTemperature": "10"}}' result,status,errorCode = HC2:PUT("/api/panels/heating?id=" .. ZoneId, result2); fibaro:debug(result .. " / " .. status .. " / " .. errorCode .. " -> " .. ZoneId) J'obtiens le résultat : [DEBUG] 10:55:44: {"type":"ERROR","reason":"id","message":"no id"} / 400 / 0 -> 177
PITP2 Posté(e) le 7 décembre 2014 Signaler Posté(e) le 7 décembre 2014 Salut Lionel, je crois qu'il y a eu un changement dans l'API de Fibaro depuis les dernières versions avant http://192.168.1.20/api/panels/heating?id=177 maintenant http://192.168.1.20/api/panels/heating/177/ de plus lorsque j'essaie de faire une modification depuis l'interface API de Fibaro j'obtiens une erreur 503 et cela me fait planter ma box ... d'ailleurs si les heureux possesseurs d'une box de test pouvaient regarder de leur côté comment envoyer un PUT pour le panneau de chauffage sans tout planter via l'API ce serait cool
Lionel57 Posté(e) le 7 décembre 2014 Auteur Signaler Posté(e) le 7 décembre 2014 Comme toi, j'avais tenté avec la nouvelle adresse, mais comme toi, un plantage, alors peut être qu'il faut attendre la 4.022
hartyem Posté(e) le 9 décembre 2014 Signaler Posté(e) le 9 décembre 2014 J'avais un problème similaire avec la fonction PUT mais maintenant ça marche (merci à JC) sous 4.021. Dans mon cas je récupère une valeur de consommation sur un HEM qui n'est pas correctement reconnu par le HC2 sous 4.021 et je l'attribue à un module relais. Le code suivant fonctionne et je récupère correctement les valeurs et statistique sur le HC2, l'API du relais s'actualise à chaque changement du HEM. local deviceID = 342 local Conso = fibaro:getValue(367.0, "value") local json = '{"id":'..deviceID..',"properties":{"power":' ..Conso..'}}' local HC2 = Net.FHttp("192.168.1.xxx", 80) HC2:setBasicAuthentication("admin", "xxxxxxx") local response, status, errorCode = HC2:PUT("/api/devices/"..deviceID, json) if tonumber(status) == 200 then else fibaro:debug("Try again "..deviceID.. " "..status) end
971jmd Posté(e) le 15 mars 2017 Signaler Posté(e) le 15 mars 2017 j'ai tester le code suivant il fonctionne uniquement avec propriété suivante: j'ai fait le teste avec : data = '{"id":'..deviceID..',"properties":{"roomID":"4"}}' et effectivement je peut changer l'emplacement du module d'une pièce à l'autre mai pour modifier : localProtectionState en valeur 2, je me demande si c'est possible vue que ce dernier n'est pas dans la liste API (PUT) en Model Schema suivante { "actions": "ACTIONS", "baseType": "", "configXml": "bool", "created": 0, "enabled": "bool", "id": 0, "interfaces": "aray", "modified": 0, "name": "", "parentId": 0, "properties": "PROPERTIES", "remoteGatewayId": 0, "roomID": 0, "sortOrder": 0, "type": "", "viewXml": "bool", "visible": "bool" } . --[[ %% properties %% globals --]] local deviceID = 16 local httpClient = net.HTTPClient(); httpClient:request('http://127.0.0.1:11111/api/devices', { success = function(response) if tonumber(response.status) == 200 then print("updated!"); else print("Response error " .. response.status) end end, error = function(err) print('Request error ' .. err) end, options = { method = 'PUT', headers = { ["content-type"] = 'application/json' }, ----"localProtectionState": "0" data = '{"id":'..deviceID..',"properties":{"roomID":"4"}}' } });
971jmd Posté(e) le 15 mars 2017 Signaler Posté(e) le 15 mars 2017 (modifié) je n'arrive pas a déterminée si le localProtectionState et dans: "properties": { "parameters": ou "properties": . . . pour info il s'agit d'un FGRM222 ce probleme est très important pour moi, j'ai des enfant en bas sage qui appuie sur l'interrupteur des VL si je parvient a passer avec une scène le localProtectionState = 2 je désactive les boutons des vl ...... localProtectionState = 0 je j'active les boutons des vl et même en mode alarme, un voleur rentre chez vous par une petit porte ou fenêtre mai n'a pas la possibilité d’ouvrir les vl pour dérobé plus de chose. Modifié le 15 mars 2017 par 971jmd
Messages recommandés