Aller au contenu

Modification Propriété Caption Label VD


Messages recommandés

Posté(e) (modifié)

Bonjour à tous !!

 

rapide question qui a déjà sans doute été posé, mais j'ai pas trouvé de réponses... 

 

Peut on modifier le texte d'une étiquette d'un VD ?

ATENTION je parle pas de la valeur de l'étiquette ! "ui.label.value" ! ça c'est ok !

 

mais bien de son "caption" !

par exemple quand on crée une étiquette dans un VD, il met dans le champs étiquette la valeur "étiquette"

Et c'est celle-là que j'aimerai pouvoir modifier en dur.

 

J'ai essayé ui.label.caption mais sans résultat...

Modifié par jjacques68
Posté(e) (modifié)

J'avance un peu mais j'ai pas le résultat voulu : 

 

voici que je fais :

 

--lecture des infos du VD
local ApiVd = api.get("/devices/496")

--affichage de la valeur actuelle
print("AVANT", ApiVd.properties.rows[3].elements[1].caption)

--modification le la valeur
ApiVd.properties.rows[3].elements[1].caption = "1"
print("PENDANT", ApiVd.properties.rows[3].elements[1].caption)

--envoi des modif
api.put("/devices/496", ApiVd)

--relecture des infos
ApiVd = api.get("/devices/496")

--affichage de la nouvelle valeur pour confirmation
print("APRES", ApiVd.properties.rows[3].elements[1].caption)

J'ai aucun message d'erreur, mais j'ai aucune modification qui est faite !!! :( 

 

Voici le debug : il semblerait que ça coince avec le api.put !!!

[DEBUG] 23:26:24: AVANT	essai
[DEBUG] 23:26:24: PENDANT 1
[DEBUG] 23:26:26: APRES	essai

 

Modifié par jjacques68
Posté(e)

Dans l'idée ce que tu veux faire est bon. C'est plus ou moins ce que je fais pour mon VD Yamaha en cours d'écriture.

 

Mais par contre il faut recharger ta page Web (et appli mobile), car l'API ne permet pas de détecter un changement du titre d'un label, mais seulement sa valeur.

Posté(e)

Je dis peut être une sonnerie mais en changeant la valeur ?

Mettre une valeur bidon, puis immédiatement remettre la bonne valeur.

l'API en détectant un changement de valeur va faire une mise à jour, voire si cela inclus "l’étiquette" du bouton !!!

Posté(e)

@Lazer et @Berale24, merci pour votre participation.

 

j’ai pourtant bien penser à rafraîchir les pages et application.

Mais rien y fait.

je constate qu’il se passe bien qqch, car après le PUT, le VD est complètement rechargé.

Mais le caption du label ne veut rien savoir, il garde sa valeur.

c’est comme si cette propriété était en lecture seule !

Posté(e)

Je ne sais pas là, je n'ai pas testé la modification du titre des label.

J'ai juste testé l'ajout de boutons dans un VD (c'est la main lioop qui ajoute des boutons dans son propre VD... à la sauvegarde, la main loop est immédiatement tuée et relancée immédiatement).

Ce qui est certain, c'est qu'il faut recharger la page web et l'appli mobile pour "voir" la modification.

Posté(e)

@Lazer, je vais re tester, mais il me semble que je le faisais à chaque essai...

la je peux pas, mais je te tiens au jus.. 

 

ok pour l’affichage, mais ce qui me dérange aussi c’est que je si je relis l’api du VD après le put, je retrouve l’ancienne valeur.

Posté(e)

OK donc tu as un souci à l'enregistrement alors, car chez moi à la relecture de l'API, le code LUA voit bien la modification, idem si je vais chercher manuellement le JSON via l'API HTTP.

Posté(e)

pourtant comme dis, le VD se recharge immédiatement après !

Donc le PUT fait quelque chose...

ah moins que je me sois trompé dans la grammaire du code ? je suis pas un spécialiste des PUT/GET...

Posté(e)

Tu t'es probablement planté dans la grammaire du code au moment de faire le PUT.

Maintenant ça me revient, j'avais constaté ce comportement, le VD redémarre, même si le PUT a échoué.

 

Plus tard je pourras te partager mon code que j'ai utilisé.

Posté(e)

Je pense que j'ai trouvé ton problème, à priori tu n'utilises pas la bonne API :

 

Sans te partager ton mon code qui est brouillon, voici l'extrait utile :

local s_id = tostring(fibaro:getSelfId())
local HC2 = Net.FHttp("127.0.0.1", 11111)

-- Lecture
local response, status, errorCode = HC2:GET("/api/virtualDevices/"..s_id)
local jsonTable = json.decode(response)

-- Ecriture
local payload = json.encode(jsonTable)
local response, status, errorCode = HC2:PUT("/api/virtualDevices/"..s_id, payload)

 

Pour trouver cela, j'ai simplement utilisé les outils de dev F12 du navigateur.

  • Like 1
Posté(e)

oui en effet j’utilise la dernière version (3 ou 4 je sais plus) il me semble (sujet présent quelque part sur le fofo).

Mais j’ai déjà utilisé ma méthode pour d’autre modification (comme la durée des de réveil des device, désactiver le notif mail des batteries, et j’en passe...)

 

je viens de me rendre compte que tout ça était pour des modules physique et non pour des VD...

 

je n’ai pas la HC2 sous la main, mais je testerai ta méthode...

 

sans tirer de conclusion trop ative, cela voudrait dire que l’on peut pas modifier les VD avec cette API ?

×
×
  • Créer...