Aller au contenu

Messages recommandés

Posté(e) (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é par henri-allauch
Posté(e)

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 ?

Posté(e)

regarde l'extrait du json, tu verra que pour les label ils faut les "et que pour deviceincon c'est un champ numérique

  • Upvote 1
Posté(e)

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

 

Posté(e) (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é par henri-allauch
Posté(e)

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

  • Upvote 1
Posté(e)

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.

Posté(e)

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 ?

Posté(e) (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é par henri-allauch
  • Upvote 1
Posté(e)

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

  • Upvote 1
Posté(e) (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é par henri-allauch
  • Upvote 1
×
×
  • Créer...