Aller au contenu

Problème Avec La Méthode Put


Lionel57

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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  :60:

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

  • 2 ans après...

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"}}'
    }
  });

 

Lien vers le commentaire
Partager sur d’autres sites

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é par 971jmd
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...