Domotique-Home Posté(e) le 27 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shad Posté(e) le 27 mars 2014 Signaler Partager Posté(e) le 27 mars 2014 J'ai un trou de mémoire, et je peux pas regarder car je suis en pleine restauration Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 27 mars 2014 Signaler Partager 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} Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 27 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shad Posté(e) le 27 mars 2014 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 27 mars 2014 Auteur Signaler Partager Posté(e) le 27 mars 2014 Merci Lazer ça marche avec l'API HTTP. Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 27 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 28 mars 2014 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shad Posté(e) le 28 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 28 mars 2014 Auteur Signaler Partager 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" Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 28 mars 2014 Signaler Partager Posté(e) le 28 mars 2014 Merci... je ne pourrai tester que dimanche soir Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 30 mars 2014 Signaler Partager 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"} Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 31 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 31 mars 2014 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 31 mars 2014 Signaler Partager Posté(e) le 31 mars 2014 @Rems, j'ai modifié mon post avant que tu n'interviennes... désolé Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager Posté(e) le 31 mars 2014 @i-magin pas de problèmes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique-Home Posté(e) le 31 mars 2014 Auteur Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés