henri-allauch Posté(e) le 8 janvier 2017 Signaler Posté(e) le 8 janvier 2017 (modifié) Pour préparer et tester des commandes Http sur l'api des VD ou pseudo device, j'utilise un VD de test ou je code en lua la requette à tester ( avant de la coder dans un autre language pour l'appli externe) Je m'appui souvent sur la doc obtenue par : http://IP HC2/docs/ Dans l'exemple ci dessous, j'arrive ( depuis longtemps ) à écrire dans la property power d'un fake device (wall plug ) exemple 1 idem pour modifier l'icône d'un VD exemple 2 mais je n'arrive jamais à écrire dans un label de VD exemple 3 Je ne trouve pas mon erreur. Si quelqu'un qui sait passe par là ... merci d'avance --1 Ecriture properties power fake device (wallaplug )---> OK local fakedevice = 116 local W = 1234,56 local myJson = '{"properties":{"power":'..W..'}}' local payload = "/api/devices/"..fakedevice local HC2 = Net.FHttp("127.0.0.1",11111); HC2:PUT(payload, myJson) -- 2 Ecriture properties deviceIcon d'un VD -->OK local myId = fibaro:getSelfId() local myJson = '{"properties":{"deviceIcon": 1004 }}' local payload = "/api/devices/"..myId local HC2 = Net.FHttp("127.0.0.1",11111); HC2:PUT(payload, myJson) -- 3 Ecriture properties label d'un VD -->NOK local myId = fibaro:getSelfId() local myJson = '{"properties":{"ui.LblMaison.value": '..W..' }}' local payload = "/api/devices/"..myId local HC2 = Net.FHttp("127.0.0.1",11111); HC2:PUT(payload, myJson) Modifié le 8 janvier 2017 par henri-allauch
jojo Posté(e) le 10 janvier 2017 Signaler Posté(e) le 10 janvier 2017 Vérifie le json du VD. Tu ne peux écrire que dans les properties
henri-allauch Posté(e) le 10 janvier 2017 Auteur Signaler Posté(e) le 10 janvier 2017 (modifié) Pourtant je vois bien ui.LblMaison.value ( à la valeur 10 ) dans les properties Modifié le 10 janvier 2017 par henri-allauch
pepite Posté(e) le 10 janvier 2017 Signaler Posté(e) le 10 janvier 2017 salut, Manquerait pas ta declaration de variable "local W" dans ton ecriture de label num 3 ?
jojo Posté(e) le 10 janvier 2017 Signaler Posté(e) le 10 janvier 2017 essaye ceci, en rajoutant des " local myJson = '{"properties":{"ui.LblMaison.value": "'..W..'" }}'
pepite Posté(e) le 10 janvier 2017 Signaler Posté(e) le 10 janvier 2017 j'essaierais sans variable d'abord aussi. oui peut-etre les guillemets c'est vrai, mais ca fonctionne pour le fake device avec un fibaro call tu arrives a ecrire dans le label ?ou cela ne fonctionne pas non plus ?
jojo Posté(e) le 10 janvier 2017 Signaler Posté(e) le 10 janvier 2017 regarde l'extrait du json, tu verra que pour les label ils faut les "et que pour deviceincon c'est un champ numérique 1
henri-allauch Posté(e) le 10 janvier 2017 Auteur Signaler Posté(e) le 10 janvier 2017 Merci Petite et Jojo de vos conseils. Je reprend mes essais à 0 c'est mieux avec les idées claires. Pour le moment avec un call ça marche Demain Je vais essayer avec le Put du Json en suivant aussi vos idées et je vous tiens au courant Merci fibaro:call(myId, "setProperty", "ui.LblChauffage.value", "7777,88") ecrit 7777,88 local MyVal = 2266,66 fibaro:call(myId, "setProperty", "ui.LblChauffage.value", MyVal ) ecrit 2266 local MyVal = "2266,66" fibaro:call(myId, "setProperty", "ui.LblChauffage.value", MyVal ) ecrit 2266,66
henri-allauch Posté(e) le 11 janvier 2017 Auteur Signaler Posté(e) le 11 janvier 2017 (modifié) Bon j'ai tour repris avec un vd qui passe les commandes et un qui les reçoit pour pas d'ambiguïté Résultat : --Modifier Valeur dans le VD cible OK local MyVal = "1234,56" fibaro:call(recID, "setProperty", "ui.LblTest.value", MyVal ) ------------------------------------------------------------------------------ Ecrire Value dans Fake device OK local fakedevice = 116 local W = 1234,56 local myJson = '{"properties":{"power":'..W..'}}' local payload = "/api/devices/"..fakedevice local HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:PUT(payload, myJson) ------------------------------------------------------------------------------ --Modifier Icone dans le VD cible OK local IconImperihome = 1001 local recID = 292 local myJson = '{"properties":{"deviceIcon": '..IconImperihome..' }}' local payload = "/api/devices/"..recID local HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:PUT(payload, myJson) ------------------------------------------------------------------------------ --Modifier LblValue dans le VD cible NOK Quelque soit le Json utilisé avec Status 200 OK ca semble un pb de syntaxe ? local recID = 292 local MyVal = "9876,54" local myJson = '{"properties":{"ui.LblTest.value": '..MyVal..' }}' local JoJoJson = '{"properties":{"ui.LblTest.value": "'..MyVal..'" }}' local PepiteJson = '{"properties":{"ui.LblTest.value": "1234" }}' local myJson2 = '{"properties":{"ui.LblTest.value": 100 }}' local myJson3 = '{"properties":{"ui.LblTest.value": ' ..tostring(4444) ..' }}' local payload = "/api/devices/"..recID local HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:PUT(payload, myJson3) ------------------------------------------------------------------------------ --Modifier LblValue dans le VD cible ( API call action ) OK local MyVal = "9876,54" local Param = "/api/callAction?deviceID="..recID .."&name=setProperty&arg1=ui.LblTest.value&arg2="..MyVal local HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:GET(Param) Donc j'en suis au même point il doit y avoir une astuce Modifié le 11 janvier 2017 par henri-allauch
pepite Posté(e) le 11 janvier 2017 Signaler Posté(e) le 11 janvier 2017 Bonjour, Je ne comprends pas ce qui cloche ;-) Je ne vois pas pourquoi cela ne fonctionne pas. Je cherche ;-) Avec un peu de chance un expert va passer par là ;-) 1
henri-allauch Posté(e) le 11 janvier 2017 Auteur Signaler Posté(e) le 11 janvier 2017 je crois que @Nico écrit dans un label VD depuis une appli ,J'aimerai savoir qu'elle méthode il utilise
Nico Posté(e) le 11 janvier 2017 Signaler Posté(e) le 11 janvier 2017 C'est Steven qui le fait mais je le faisais aussi lors de nos tests à l'époque pour ma passerelle Zibase (Depuis plus le besoin donc j'ai tout viré). Il faudrait retrouvé ça, je ne sais plus trop, a moins que cela ait été bloqué depuis, mais je ne crois pas, Steven fait encore comme ça.
jojo Posté(e) le 11 janvier 2017 Signaler Posté(e) le 11 janvier 2017 le json de @Pepite devrait fonctionner local PepiteJson = '{"properties":{"ui.LblTest.value": "1234" }}' TRES bête question. Es-tu sûr que le label LblTest existe bien ? As-tu vérifié dans le json ?
henri-allauch Posté(e) le 11 janvier 2017 Auteur Signaler Posté(e) le 11 janvier 2017 (modifié) @jojo Ce n'est pas une question Bête et c'est pour éviter ce genre d'étourderie que j'ai changé les noms ce matin. Oui LblTest existe bien, d'ailleurs c'est ok dans le dernier test par /api/callAction. Pour être sur, j'ai exporté le json dans un fichier dont voici le début : {"name":"Test Label Rec","type":"virtual_device","properties":{"deviceIcon":1001,"currentIcon":"1004","log":"","logTemp":"","mainLoop":"","ui.LblTest.value":"0","visible":"true", ........... Et pour lever le doute sur une erreur de saisie, je viens de copier/ coller ce ui.LblTest.value dans le PepiteJson et refait un essai Et le canard est toujours vivant ... mais la chasse continue Modifié le 11 janvier 2017 par henri-allauch 1
Steven Posté(e) le 17 janvier 2017 Signaler Posté(e) le 17 janvier 2017 Je ne me prends pas la tête avec des PUT, je fait simplement ainsi https://HC2_IP/api/callAction?deviceID=100&name=setProperty&arg1=ui.Label1.value&arg2=10 1
henri-allauch Posté(e) le 17 janvier 2017 Auteur Signaler Posté(e) le 17 janvier 2017 (modifié) OK merci encore une fois merci Steven, C'est effectivement ce que j'ai pu vérifier dans mon exemple du 11/1 J'ai mis tous les autres tests au placard et j'utilise api/callAction Modifié le 17 janvier 2017 par henri-allauch 1
pepite Posté(e) le 17 janvier 2017 Signaler Posté(e) le 17 janvier 2017 Conclusion ? Est-ce possible ou non avec un api.ptu de modifier un Label ? Avec tous les tests @henri-allauch à priori on ne peut pas.
Steven Posté(e) le 17 janvier 2017 Signaler Posté(e) le 17 janvier 2017 En effet, comme "IP" et "Port" (et certainement plein d'autre) cela ne fonctionne pas 2
Messages recommandés