Raz Posté(e) le 21 février 2015 Signaler Posté(e) le 21 février 2015 Est-il possible de lire ou de changer les parametres d'un module avec une scene LUA.? Example: je souhaite changer le parametre 4 (Auto off for relay 1. 0 = Auto off disabled) d'un relais FGS221 suivant different conditions (si condition == true then parameter4 = 0 (pas d'auto off), si condition == false them parameter4 = 300 (auto off apres 5 minutes)
Moicphil Posté(e) le 21 février 2015 Signaler Posté(e) le 21 février 2015 Salut Dans une scène je ne sais pas si c'est possible, sinon, tu peux créer un module virtuel avec le code ci-dessous et plusieurs boutons selon les paramètres voulus. Ensuite appeler ces boutons dans ta scène. . local deviceID = xxx; -- id du module à paramétrer local json = '{"id":'..deviceID..',"properties":{"parameters":[{"id": 0,"size": 1,"value": 2}]}}'; local HC2 = Net.FHttp("127.0.0.1", 11111); local response, status, errorCode = HC2:PUT("/api/devices/"..deviceID, json) if tonumber(status) == 200 then fibaro:debug("Security locked"); else fibaro:debug("err ID: "..deviceID.. " status: "..status); end
jojo Posté(e) le 22 février 2015 Signaler Posté(e) le 22 février 2015 @raz, Je viens de finaliser un VD qui permet de modifier les paramètres d'un device Cela devrait pouvoir t'aider Lien dans ma signature
Raz Posté(e) le 7 mars 2015 Auteur Signaler Posté(e) le 7 mars 2015 merci @moicphil et @jojo, et désolé de ce retour tardif, mais je n'avais pas acces a ma HC2 avant. Mes competences ne sont pas tres grandes, et j'ai besoin de quelques infos suplementaires. Je ne cherche pas à modifier une proprieté, mais un parametre. En modifiant le json, je comprends que c'est possible, mais je n'y arrive pas.Pour etre plus clair: Je cherche à modifier dans une scene (donc automatiquement, suivant un trigger et des conditions, pas en manuel dans un virtual device) le parametre 4 et 5 d'un relais, Je vois le contenu du parametre dans le json est regardant par l'API par "<IP>/api/devices?id=" - mais comment puis-je mettre le contenu du parametre4 dans une variable?- apres avoir modifié la valeur de cette variable, comment je peux l'écrire dans le device?en symbolique, un truc du genre local json = GetJson(deviceID); local Param4 = json.properties.parameters.id(4).value; Param4 = Param4 + 10; json.properties.parameters.id(4).value = Param4; WriteJson(deviceID, json)
jojo Posté(e) le 7 mars 2015 Signaler Posté(e) le 7 mars 2015 fait exactement ce que Lazer a expliqué. Pour les paramètres 4 & 5, l'unité est en 1/10 s => 300s = 3000 si tu es en v3.x local DeviceID = 57 -- id du module àparamétrer local DeviceParID = 5 -- # du paramètre local DeviceParSize = 2 local DeviceParVal = 3000 -- valeur du paramètre local json = '{"id":'..DeviceID..',"properties":{"parameters":[{"id": ' ..DeviceParID.. ',"size": ' ..DeviceParSize.. ',"value": ' ..DeviceParVal.. '}]}}' fibaro:debug(json) local HC2 = Net.FHttp("127.0.0.1", 11111); local response, status, errorCode = HC2:PUT("/api/devices?id="..DeviceID, json) si tu es en v4.x local DeviceID = 57 -- id du module àparamétrer local DeviceParID = 5 -- # du paramètre local DeviceParSize = 2 local DeviceParVal = 3000 -- valeur du paramètre local json = '{"id":'..DeviceID..',"properties":{"parameters":[{"id": ' ..DeviceParID.. ',"size": ' ..DeviceParSize.. ',"value": ' ..DeviceParVal.. '}]}}' fibaro:debug(json) local HC2 = Net.FHttp("127.0.0.1", 11111); local response, status, errorCode = HC2:PUT("/api/devices/"..DeviceID, json)
jojo Posté(e) le 7 mars 2015 Signaler Posté(e) le 7 mars 2015 question pour Lazer : comment puis-je lire la valeur actuelle d'un paramètre d'un device ? (juste l'inverse de ceci)
Lazer Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 Jojo, pourquoi moi ? Tu ne voulais pas plutôt parler de Moicphil ?
jojo Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 Sorry Lazer, tu as raison : MOICPHIL svp
Moicphil Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 En interrogeant le device, tu as toute sa config : Exemple sur un FGS : 192.168.0.xxx/api/devices/xx // 20150308110215 // http://192.168.0.100/api/devices/83 { "id": 83, "name": "Sdb Haut", "roomID": 14, "type": "com.fibaro.binarySwitch", "baseType": "com.fibaro.actor", "enabled": true, "visible": true, "isPlugin": false, "parentId": 373, "remoteGatewayId": 0, "interfaces": [ "zwave" ], "properties": { "parameters": [ { "id": 1, "lastSetValue": 255, "size": 1, "value": 255 }, { "id": 3, "lastSetValue": 0, "size": 1, "value": 0 }, { "id": 4, "lastSetValue": 0, "size": 2, "value": 0 }, { "id": 6, "lastSetValue": 0, "size": 1, "value": 0 }, { "id": 13, "lastSetValue": 0, "size": 1, "value": 0 }, { "id": 14, "lastSetValue": 0, "size": 1, "value": 0 }, { "id": 15, "lastSetValue": 0, "size": 1, "value": 0 }, { "id": 16, "lastSetValue": 1, "size": 1, "value": 1 }, { "id": 30, "lastSetValue": 3, "size": 1, "value": 3 }, { "id": 31, "lastSetValue": 2, "size": 1, "value": 2 }, { "id": 32, "lastSetValue": 3, "size": 1, "value": 3 }, { "id": 33, "lastSetValue": 1, "size": 1, "value": 1 }, { "id": 39, "lastSetValue": 600, "size": 2, "value": 600 } ], "associationSet": [ { "devices": [ 1 ], "groupID": 1 }, { "devices": [ 1 ], "groupID": 2 }, { "devices": [ 1 ], "groupID": 3 } ], "associationView": [ { "devices": [ 1 ], "groupID": 1 }, { "devices": [ 1 ], "groupID": 2 }, { "devices": [ 1 ], "groupID": 3 } ], "zwaveCompany": "Fibar Group", "zwaveInfo": "3,3,42", "zwaveVersion": "", "pollingTimeSec": 0, "configured": "true", "dead": "false", "deviceControlType": "20", "deviceIcon": "1026", "emailNotificationID": "0", "emailNotificationType": "0", "endPointId": "0", "liliOffCommand": "", "liliOnCommand": "", "log": "", "logTemp": "", "manufacturer": "", "markAsDead": "true", "model": "", "nodeId": "40", "parametersTemplate": "80", "productInfo": "", "pushNotificationID": "0", "pushNotificationType": "0", "remoteGatewayId": "0", "saveLogs": "true", "smsNotificationID": "0", "smsNotificationType": "0", "useTemplate": "true", "userDescription": "", "value": "false" }, "actions": { "reconfigure": 0, "turnOff": 0, "turnOn": 0 }, "created": 1425589356, "modified": 1425589356, "sortOrder": 52 } . Reste maintenant à faire le code, pour récupérer ce qu'il y a dans "parameters".
jojo Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 Merci Moicphil, mais c'est justement au niveau du code pour récupérer ce qu'il y a dans "parameters" que j'ai un problème. Pour info, je suis Jojo et pas Steven ou Krikroff
Moicphil Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 Bah, moi pareil, j'ai peu de compétences en la matière...je vais regarder quand même...
Moicphil Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 En essayant de partir avec cette base, ça va, je vois tout, mais je n'arrive pas à isoler 'parameters" pff!!! http://www.domotique-fibaro.fr/index.php/topic/3352-lua-manipulation-dun-json/?p=47740
Lazer Posté(e) le 8 mars 2015 Signaler Posté(e) le 8 mars 2015 Je pense que le seul moyen est de parcourir la table "parameters" en testant les éléments un par un, jusqu'àtomber sur celui qui contient l'ID désiré.
jojo Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Merci pour vos recherches. Cela m'a permis d'avancer. Pour un device particulier, j'ai ceci : [DEBUG] 22:10:00: {{id=1,lastSetValue=0,value=0,size=2},{id=2,lastSetValue=1,value=1,size=1},{id=3,lastSetValue=0,value=0,size=1},{id=5,lastSetValue=255,value=255,size=1},{id=7,lastSetValue=255,value=255,size=1},{id=9,lastSetValue=0,value=0,size=1},{id=12,lastSetValue=8,value=8,size=1},{id=13,lastSetValue=0,value=0,size=1},{id=14,lastSetValue=0,value=0,size=1}} en modifiant juste la dernière ligne du code référencé : fibaro:debug(table.tostring(monTableau.properties.parameters)) il "n'y a plus qu'a" faire un find dans cette chaîne de caratère, comme proposé par Lazer 1
jojo Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 bon, ben voilà , j'ai fait le brouillon du code pour retrouver la valeur d'un paramètre pour un device (et qui fonctionne) C'est un canon pour tuer une mouche : 80 lignes de code, mais il faudra encore rajouter des tests pour éviter les plantages. Je ferai un VD (similaire à Device Properties) pour pouvoir modifier un paramètre d'un device. Mais maintenant, dodo ... Merci Moiphil et Lazer pour vos idées et liens; et surtout Ofwood pour la conversion des json en string
jojo Posté(e) le 9 mars 2015 Signaler Posté(e) le 9 mars 2015 Pour donner un avant goût : [DEBUG] 23:23:59: Mes Paramètres = {{id=2,lastSetValue=0,value=0,size=1},{id=3,lastSetValue=10,value=10,size=2},{id=4,lastSetValue=1,value=1,size=1},{id=5,lastSetValue=2,value=2,size=1},{id=101,lastSetValue=224,value=224,size=4},{id=102,lastSetValue=1,value=1,size=4},{id=103,lastSetValue=0,value=0,size=4},{id=111,lastSetValue=10,value=10,size=4},{id=112,lastSetValue=1800,value=1800,size=4},{id=113,lastSetValue=4,value=4,size=4}} [DEBUG] 23:23:59: ParamSearch = {id=101 [DEBUG] 23:23:59: ParamStart = 152 158 [DEBUG] 23:23:59: ParamSearchNext = {id=102 [DEBUG] 23:23:59: ParamEnd = 195 [DEBUG] 23:23:59: Param = {id=101,lastSetValue=224,value=224,size=4}, [DEBUG] 23:23:59: Value = value=224 [DEBUG] 23:23:59: ParamValueCur = 224
jojo Posté(e) le 11 mars 2015 Signaler Posté(e) le 11 mars 2015 le VD se trouve ici : http://www.domotique-fibaro.fr/index.php/topic/4052-module-virtuel-ajuster-les-param%C3%A8tres-dun-device/
Raz Posté(e) le 15 mars 2015 Auteur Signaler Posté(e) le 15 mars 2015 J'ai essayé le virtual device et il marche bien. Bravo jojo Comme je l'ai dit, je souhaite pouvoir changer ce parametre à partir d'une scene, donc je pense: - que dans ma scene j'apelle le virtual device avec fibaro:call(VirtualDeviceID, "pressButton", "6"); mais comme le même button fait la lecture et l'ecriture, comment je peux faire? Separer le code du button 6 dans 2 buttons differents? - changer un peu le code dans le virtual device, pour que local DeviceID = 189 local ParamID = 4 local ParamValueNew = 35 ne soit pas fixe, mais soit lu à partir de variable global, comme ca le même virtual device peut etre utiliser pour different device, parameter et value. Ou est il possible de transmettre ces parametre de maniere plus simple lors du call du virtual device (par exemple quelque chose du style fibaro:call(VirtualDeviceID, "SetValue", "DeviceID", "189")?
jojo Posté(e) le 15 mars 2015 Signaler Posté(e) le 15 mars 2015 en fait j'ai fait ce VD sur base de ta demande initiale, mais le VD fait beaucoup plus que ce que tu veux faire. Ce que tu veux faire est parfaitement décrit par Moicphil dans sa réponse initiale, c'est d'ailleurs son code que j'ai pompé.
latoupie Posté(e) le 15 mars 2015 Signaler Posté(e) le 15 mars 2015 @jojo tu vas finir développeur chez Fibaro comme beaucoup d'autres ici. Chapeau bas les gars,.
971jmd Posté(e) le 26 octobre 2020 Signaler Posté(e) le 26 octobre 2020 Le 07/03/2015 à 18:36, jojo a dit : fait exactement ce que Lazer a expliqué. Pour les paramètres 4 & 5, l'unité est en 1/10 s => 300s = 3000 si tu es en v3.x local DeviceID = 57 -- id du module àparamétrer local DeviceParID = 5 -- # du paramètre local DeviceParSize = 2 local DeviceParVal = 3000 -- valeur du paramètre local json = '{"id":'..DeviceID..',"properties":{"parameters":[{"id": ' ..DeviceParID.. ',"size": ' ..DeviceParSize.. ',"value": ' ..DeviceParVal.. '}]}}' fibaro:debug(json) local HC2 = Net.FHttp("127.0.0.1", 11111); local response, status, errorCode = HC2:PUT("/api/devices?id="..DeviceID, json) si tu es en v4.x local DeviceID = 57 -- id du module àparamétrer local DeviceParID = 5 -- # du paramètre local DeviceParSize = 2 local DeviceParVal = 3000 -- valeur du paramètre local json = '{"id":'..DeviceID..',"properties":{"parameters":[{"id": ' ..DeviceParID.. ',"size": ' ..DeviceParSize.. ',"value": ' ..DeviceParVal.. '}]}}' fibaro:debug(json) local HC2 = Net.FHttp("127.0.0.1", 11111); local response, status, errorCode = HC2:PUT("/api/devices/"..DeviceID, json) Salut J'essaye de modifier un paramètre sur depuis la HC3 sans succès Paramètre 11 du module walli dimmer "id": 11, "lastReportedValue": 0, "lastSetValue": 0, "size": 1, "value": 0 en "id": 11, "lastReportedValue": 7, "lastSetValue": 7, "size": 1, "value": 7 merci de votre aide
mprinfo Posté(e) le 26 octobre 2020 Signaler Posté(e) le 26 octobre 2020 Le client net.fhttp n'existe pas sur hc3 Il n'existe en fait que sur hc2 pour les VD Regarde ici comment je modifie le paramètre 29 d'un module volets https://r.tapatalk.com/shareLink/topic?url=https://www.domotique-fibaro.fr/topic/14263-etalonnage-automatique-des-volets-avec-module-fibaro/&share_tid=14263&share_fid=79825&share_type=t&link_source=app Envoyé de mon BLA-L29 en utilisant Tapatalk
971jmd Posté(e) le 26 octobre 2020 Signaler Posté(e) le 26 octobre 2020 je suppose que la partie qui nous intéresse est : for i = 1, #calibrage do local Nom = calibrage[i][1] local id = tonumber(calibrage[i][2]) if fibaro:getValue(id, "value") ~= 99 then local DeviceAPI = api.get ("/devices/"..id) DeviceAPI.properties.parameters[9].value = 1 api.put("/devices/"..id, DeviceAPI) end end
mprinfo Posté(e) le 26 octobre 2020 Signaler Posté(e) le 26 octobre 2020 Vu que tu connais ton IDApi.put devrait suffire Envoyé de mon BLA-L29 en utilisant Tapatalk
Messages recommandés