Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

@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}
Posté(e)

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)

 

  • Upvote 1
Posté(e)

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 

Posté(e)

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 ;)

Posté(e)

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

Posté(e)
Je viens d'essayer ton script @Rems

 [DEBUG] 23:52:43: response ={"type":"ERROR","reason":"WRONG_TYPE","message":"properties[value]: expected string"}
Posté(e)

C'est bon j'ai compris
Il 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.

;)

Posté(e)

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

Posté(e)
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 ;)
Posté(e)

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

×
×
  • Créer...