Aller au contenu

Question Pour Les Pro ;)


Domotique-Home

Messages recommandés

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

@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

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
Lien vers le commentaire
Partager sur d’autres sites

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

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

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.

;)

Lien vers le commentaire
Partager sur d’autres sites

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

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

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

×
×
  • Créer...