Aller au contenu
971jmd

modifier un paramètre en mode Json

Recommended Posts

salut à tous 

 

le sujet enregistrer un Json est fermer, je souhaite de laide sur le sujet 

 

j'ai tester le code suivant mai rien ne fonctionne  :(


 

local DeviceID = 14 -- id du module àparamétrer
local DeviceParID = 1 -- # du paramètre
local DeviceParSize = 0


local json = '{"id":"..DeviceID..","properties":{"parameters":[{"id": "1","size": "1","value":"0"}]}}"
fibaro:debug(json)
local HC2 = Net.FHttp("127.0.0.1", 11111);
local response, status, errorCode = HC2:PUT("/api/devices/"..DeviceID, json)

 

Exemple, je souhaite modifier le paramètre suivant d'un WP

 

 "properties": {
    "parameters": [
      {
        "id": 1,
        "size": 1,
        "value": 1
      },

 

merci de votre aide

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai pas testé, mais : un truc du genre

 

MonDevice = api.get("/devices/"..DeviceID)
MonDevice[DeviceParID].value = 0
api.put("/devices/"..DeviceID, MonDevice)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

non ça ne fonctionne pas 

 

MonDevice  c'est quoi exactement, ça correspond à ID du module ? 

Partager ce message


Lien à poster
Partager sur d’autres sites

nan pardon, MonDevice est une variable locale qui reçoit tout le contenu de DeviceID !!

Partager ce message


Lien à poster
Partager sur d’autres sites

tu peux faire un debug de MonDevice

 

MonDevice = api.get("/devices/"..DeviceID)
print(json.encode(MonDevice))
MonDevice[DeviceParID].value = 0
api.put("/devices/"..DeviceID, MonDevice)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ah attend je suis allé trop vite je crois

 

MonDevice = api.get("/devices/"..DeviceID)
print(json.encode(MonDevice))
MonDevice.parameters[DeviceParID].value = 0
api.put("/devices/"..DeviceID, MonDevice)

j'ai oublié "parameters"

Modifié par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

voici le debug 

il affiche bien les paramètre du module mai erreur sur la fin

.

[DEBUG] 16:23:16: {"sortOrder":13,"modified":1584714642,"remoteGatewayId":0,"baseType":"com.fibaro.FGWP","type":"com.fibaro.FGWP101","created":1584714642,"properties":{"manufacturer":"","smsNotificationID":0,"pushNotificationID":0,"nodeId":3,"configured":true,"userDescription":"","isLight":true,"emailNotificationID":0,"remoteGatewayId":0,"zwaveInfo":"3,3,52","useTemplate":true,"model":"","endPointId":0,"pushNotificationType":0,"zwaveCompany":"Fibargroup","parameters":[{"size":1,"value":1,"id":1},{"size":1,"value":1,"id":16},{"size":1,"value":63,"id":34},{"size":1,"value":0,"id":35},{"size":2,"value":600,"id":39},{"size":1,"value":80,"id":40},{"size":1,"value":15,"id":42},{"size":1,"value":30,"id":43},{"size":1,"value":10,"id":45},{"size":2,"value":3600,"id":47},{"size":1,"value":0,"id":49},{"size":2,"value":300,"id":50},{"size":2,"value":500,"id":51},{"size":1,"value":6,"id":52},{"size":2,"value":25000,"id":60},{"size":1,"value":1,"id":61},{"size":1,"value":8,"id":62},{"size":1,"value":1,"id":63},{"size":2,"value":65535,"id":70}],"emailNotificationType":0,"deviceControlType":2,"zwaveVersion":"25.25","energy":55.38,"deviceGroup":[],"pollingTimeSec":0,"dead":false,"firmwareUpdate":{"updateVersion":"25.25","info":"","status":"UpToDate","progress":0},"logTemp":"","value":false,"saveLogs":true,"icon":{"source":"HC","path":"fibaro\/icons\/com.fibaro.FGWP_EU\/plug0.png"},"deadReason":"","log":"","deviceGroupMaster":0,"color":"off","serialNumber":"","updateVersion":"","showEnergy":true,"productInfo":"1,15,6,0,16,0,25,25","power":0,"deviceIcon":124,"parametersTemplate":"718","smsNotificationType":0,"markAsDead":true,"categories":["lights","ambience"]},"actions":{"reconfigure":0,"reset":0,"turnOn":0,"retryUpdate":1,"startUpdate":1,"updateFirmware":1,"abortUpdate":1,"turnOff":0},"isPlugin":false,"interfaces":["deviceGrouping","energy","fibaroFirmwareUpdate","light","power","zwave","zwaveMultiChannelAssociation"],"enabled":true,"name":"Suspension Cuisine","id":14,"parentId":13,"visible":true,"roomID":4}
[DEBUG] 16:23:16: 2020-04-18 16:23:15.922856 [ fatal] Unknown exception: /opt/fibaro/scenes/363.lua:14: attempt to index field 'parameters' (a nil value)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

bon et avec le properties maitntenant :

 

MonDevice.properties.parameters[DeviceParID].value = 0

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ça fonctionne chef mai si je quand je souhaite modifier le paramètre ID 16  ça fonctionne pas 

 

{ "id": 16, "lastReportedValue": 1, "lastSetValue": 1, "size": 1, "value": 1 },

 

 

je je décompose le code:

 

DeviceID correspond à ID du module ok

mai  DeviceParID   je c'est pas trop

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ben j'ai récupérer le nom de cette variable dans ton code du premier poste !

il est = 1 !

Partager ce message


Lien à poster
Partager sur d’autres sites

soit du mets la variable à 16 soit tu fais

 

MonDevice.properties.parameters[16].value = 0

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

oui j'ai  tester comme ça mes j'ai pas de modification du paramètre ID 16, il reste à 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ah attention, l'id du paramètre "16" n'est pas forcément le numéro 16 !

des numéros sont sauté !

Partager ce message


Lien à poster
Partager sur d’autres sites

pour il  apparaît dans le debug

 

{"value":1,"id":16,"size":1,"lastSetValue":1,"lastReportedValue":1}

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est le numéro 2

 

MonDevice.properties.parameters[2].value = 0

 

Partager ce message


Lien à poster
Partager sur d’autres sites

si tu regardes dans le tableau de paramètre :

 

id 1 = numéro 1 dans le table

id 16 = numéro 2

id 34 = numéro 3

Partager ce message


Lien à poster
Partager sur d’autres sites

tu a raison c'est bien le n2

 

Partager ce message


Lien à poster
Partager sur d’autres sites

si tu veux automatiser ça, va falloir créer une boucle et tester le l'ID du paramètre...

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai même tester le changement de 2 paramètres en même temps est ça fonctionne :60:

 

Modifié par 971jmd
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

par contre ça veut dire qu'on a changé le paramètre numéro 16... suis entrain de regardé ce que c'est...

Partager ce message


Lien à poster
Partager sur d’autres sites

ce serait l'id 61 qu'on a mis à 0 !

faut vérifier ce que c'est et le corriger si besoin !

Partager ce message


Lien à poster
Partager sur d’autres sites

×