Domotique-Home Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 Bonjour, J'ai une question pour les spécialistes de LUA HC2 Est il possible de changer les propriétés d'un module avec le script LUA. J'ai essayé fibaro:call(143,"setProperty","name","test"); -- ou fibaro:call(143,"setProperty","Disabled",0); mais ça ne doit pas être la bonne solution merci
Shad Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 J'ai un trou de mémoire, et je peux pas regarder car je suis en pleine restauration
Steven Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 @Shad C'est toi qui est en restauration ou ta box ? :-) @Rems J'ai testé mais sans succès. "Name" ne fait pas partie des "Properties" donc que ta première commande ne fasse rien cela me semble normal. La deuxième avec disabled ne fait rien non plus. Pour Shad, si cela te parle pendant ton lifting, voici un exemple de HC2:GET("/api/devices?id=65"); J'avais le temps de tester mais pas forcément les compétences pour répondre :-) {"id":65,"name":"Entrée","roomID":5,"type":"dimmable_light","properties":{"UIMessageSendTime":"0","classConfigure":"2,0,0,2,2,0,0,2,2,0,0","classGeneric":"38","classSupport":"38,39,43,112,114,115,122,133,134,142,239","classVersion":"1,1,1,1,1,1,1,2,1,1,1","dead":"0","deviceControlType":"23","deviceIcon":"15","disabled":"0","emailNotificationID":"0","emailNotificationType":"0","endPoint":"0","isBatteryOperated":"0","isLight":"1","liliOffCommand":"éteindre entrée","liliOnCommand":"allumer entrée","log":"","logTemp":"","needConfigure":"5","nodeID":"20","parametersTemplate":"235","parentID":"1","pollingRetryError":"0","pollingTime":"","pollingTimeNext":"","pollingTimeSec":"0","productInfo":"1,15,1,0,16,10,2,2","pushNotificationID":"0","pushNotificationType":"0","requestNodeNeighborState":"0","requestNodeNeighborStateTimeStemp":"0","saveLogs":"1","sceneActivation":"0","sceneDimingDuration":"0","showChildren":"1","smsNotificationID":"0","smsNotificationType":"0","sortOrder":"999","unit":"","useTemplate":"1","userDescription":"","value":"0","zwaveCompany":"Fibar Group","zwaveInfo":"3,3,52","zwaveVersion":"2,2","parameters":[{"id":1,"size":1,"value":255,"lastSetValue":255},{"id":6,"size":1,"value":0,"lastSetValue":0},{"id":7,"size":1,"value":1,"lastSetValue":1},{"id":8,"size":1,"value":1,"lastSetValue":1},{"id":9,"size":1,"value":1,"lastSetValue":1},{"id":10,"size":1,"value":0,"lastSetValue":0},{"id":11,"size":1,"value":1,"lastSetValue":1},{"id":12,"size":1,"value":99,"lastSetValue":99},{"id":13,"size":1,"value":1,"lastSetValue":1},{"id":14,"size":1,"value":1,"lastSetValue":1},{"id":15,"size":1,"value":0,"lastSetValue":0},{"id":16,"size":1,"value":1,"lastSetValue":1},{"id":17,"size":1,"value":1,"lastSetValue":1},{"id":18,"size":1,"value":0,"lastSetValue":0},{"id":19,"size":1,"value":0,"lastSetValue":0},{"id":20,"size":1,"value":110,"lastSetValue":110},{"id":30,"size":1,"value":3,"lastSetValue":3},{"id":39,"size":2,"value":600,"lastSetValue":600},{"id":41,"size":1,"value":0,"lastSetValue":0}],"associationView":[{"groupID":1,"devices":[1]},{"groupID":2,"devices":[1]},{"groupID":3,"devices":[1]}],"associationSet":[{"groupID":1,"devices":[1]},{"groupID":2,"devices":[1]},{"groupID":3,"devices":[1]}]},"actions":{"firmwareUpdate":1,"pollingTimeSec":1,"requestNodeNeighborUpdate":0,"setValue":1,"turnOff":0,"turnOn":0},"created":1395848805,"modified":1395848805,"sortOrder":18}
Lazer Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 Essaye de passer par l'API HTTP. Quelques exemples trouvé sur le forum officiel : HC2 = Net.FHttp("192.168.1.1") HC2:setBasicAuthentication("admin", "admin") payload = {id=27, properties={userDescription="testing"}} payload = json.encode(payload) HC2:PUT("/api/devices", payload) -- preparing lua table with new device room ID payload = {id=99, roomID="0"} payload = json.encode(payload) response, status, errorCode = HC2:PUT("/api/devices?id=99", payload) 1
Shad Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 Attend pour être sur tu parles bien un module VIRTUEL??? @Steven: oui j'enleve l'alpha de ma box.
Domotique-Home Posté(e) le 27 mars 2014 Auteur Signaler Posté(e) le 27 mars 2014 Merci Lazer ça marche avec l'API HTTP.
i-magin Posté(e) le 27 mars 2014 Signaler Posté(e) le 27 mars 2014 Si vous avez la méthode pour modifier dynamiquement l’intitulé d'un bouton virtuel (champ "label" dans l'interface Fibaro et "caption" avec le toolkit de @Krikroff), je suis preneur ! Cela peut-être utile pour un bouton "Toggle" d'un multimédia
Domotique-Home Posté(e) le 28 mars 2014 Auteur Signaler Posté(e) le 28 mars 2014 Bonjour, Je n'ai pas l’accès a ma box pour le moment il faut tester un truck dans le genre: HC2:setBasicAuthentication("admin", "admin") payload = {id=XXX, properties={rows={elements={id=1,caption="test_caption",name="test_name"}}}} payload = json.encode(payload) HC2:PUT("/api/devices", payload) je vais regarder ce soir mais un mon avis le choix des "id" dans la balise elements va poser problème
Shad Posté(e) le 28 mars 2014 Signaler Posté(e) le 28 mars 2014 Ou encore plus simple pour un label depuis un virtual device: fibaro:call(id, "setProperty", "ui.lblbutton1.value", your_text) De mémoire pour les captions faut passez par l'api
Domotique-Home Posté(e) le 28 mars 2014 Auteur Signaler Posté(e) le 28 mars 2014 effectivement ça peut fonctionner. a tester par contre cela ne fonctionne pas avec toutes les propriétés, certaines sont bloquées, comme "disabled"
i-magin Posté(e) le 28 mars 2014 Signaler Posté(e) le 28 mars 2014 Merci... je ne pourrai tester que dimanche soir
i-magin Posté(e) le 30 mars 2014 Signaler Posté(e) le 30 mars 2014 Je viens d'essayer ton script @Rems [DEBUG] 23:52:43: response ={"type":"ERROR","reason":"WRONG_TYPE","message":"properties[value]: expected string"}
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 Bonjour @i-magine J'ai regardé ce matin car ce week end je me suis amuser a configurer HC2 dans SARAH. effectivement ça marche avec des modules classique mais pas avec les VD.
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 C'est bon j'ai comprisIl faut utiliser /api/virtualDevices et non /api/devices En plus les données a changer se trouvent dans un tableau. Alors en décode on modifie et on encode. voila un exemple: local deviceID = XXX --ID de ton VD local NewCaption = "New_Caption" -- nouveau Label local NewName = 'NewID' -- Nouvelle ID HC2 = Net.FHttp("192.168.XXX.XXX") HC2:setBasicAuthentication("admin", "ton mot de passe") response ,status, errorCode = HC2:GET("/api/virtualDevices?id="..deviceID) fibaro:debug("status = " .. status) fibaro:sleep(1000) jsonTable = json.decode(response) fibaro:debug(response) fibaro:debug(jsonTable.properties.rows[1].elements[1].caption) fibaro:debug(jsonTable.properties.rows[1].elements[1].name) jsonTable.properties.rows[1].elements[1].caption = NewCaption jsonTable.properties.rows[1].elements[1].name = NewName json = json.encode(jsonTable); response2 ,status2, errorCode2 = HC2:PUT("/api/virtualDevices?id="..deviceID, json) J'ai mis les debug pour une meilleur compréhension.
i-magin Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 J'ai testé ton script, voici le debug : [DEBUG] 15:27:04: status = 401 [ERROR] 15:27:05: line 13: Expected value but found T_END at character 1 La ligne 13 correspond à : jsonTable = json.decode(response) Par contre, la modification du "name" du périphérique virtuel fonctionne avec l'utilisation de "virtualDevices" comme tu le conseilles HC2 = Net.FHttp("192.168.1.xx") HC2:setBasicAuthentication("admin", "xxxxxxx") payload = {id=xxx, name="testname"} payload = json.encode(payload) response, status, errorCode = HC2:PUT("/api/virtualDevices?id=xxx", payload) Correctif ! Le script de @Rems fonctionne bien : un copié-collé loupé et du coup un caractère du mot de passe oublié ! Merci @Rems
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 fibaro:debug(jsonTable.properties.rows[1].elements[1].caption) fibaro:debug(jsonTable.properties.rows[1].elements[1].name) il faut modifier les valeur en rouge au besoins. dans mon exemple j'ai un bouton simple, rows[1] correspond a ce bouton si par exemple tu veux modifier les valeurs d'un deuxième bouton simple (deuxieme ligne) il faut mettre rows[2].elements[1] etc.. si tu veux modifier une troisième ligne avec deux bouton: rows[3].elements[1] pour 1er bouton et rows[3].elements[2] pour le second de la meme ligne Ligne 1 = UN BOUTON alors rows[1].elements[1] Ligne 2 = UN BOUTON alors rows[2].elements[1] Ligne 3 = DEUX BOUTONS alors rows[3].elements[1]=bouton 1 et rows[3].elements[2]=bouton 2 Je voudrais bien publier une copie d’écran mais je n'ai plus droit pas assez de place
i-magin Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 En résumé, il est bien possible de modifier l'intitulé d'un bouton de module virtuel Mais, cela ne présente pas grand intérêt, la modification n'apparaissant pas immédiatement sur les applications mobiles (ni sur PC) ... nécessité de rafraîchir les données réseau Espérons que la V4 ouvrira ce genre de possibilités
i-magin Posté(e) le 31 mars 2014 Signaler Posté(e) le 31 mars 2014 @Rems, j'ai modifié mon post avant que tu n'interviennes... désolé
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 Oui il est possible de quasiment tout modifier mais effectivement il faut un rafraîchissement des donnée. pour le moment vivement la V4
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 @i-magin pas de problèmes.
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Posté(e) le 31 mars 2014 @Rems, j'ai modifié mon post avant que tu n'interviennes... désolé @i-magin pas de problèmes.
Messages recommandés