Aller au contenu
jojo

Test Icone Utilisée Dans Un Vd

Recommended Posts

Prends .. aucun soucis .. de plus, c'est pas du code donc je mords pas dans des cas pareil  :P

 

Allez messieurs ... à  bientôt.

Partager ce message


Lien à poster
Partager sur d’autres sites

je site toujours l'auteur quand je prend un bout de code d’ailleurs tu dois etre dans la télécommande universel V1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Je viens de m'apercevoir que l'icône du module virtuel (en début de page 2) ne change plus quand je change l'état du module "fil pilote" directement.

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour à  tous,

 

Mer revoila en mode boulet ;-)

 

Je pensais avoir fait ce qu'il fallait pour recup mes icônes de VD après reboot, ben en faisant la mise à  jour en 4.042, j'ai du me tromper quelque part.

 

Je fais appel à  vous, qu'avez-vous utiliser alors ? sachant que je prefererais éviter le mainloop des VD ;-)

 

une scene qui fait appel a chaque bouton de vos VD pour remettre a jour l'icone ? avec ca par exemple : mais lourd a chque nouveau VD faut ajuster la scene

-- On reprend l'id de l'icone du module virtuel en cours
local icon_id = fibaro:get(fibaro:getSelfId(), "deviceIcon");

-- Puis on en fait ce qu'on veux 
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon_id);
  •  

Partager ce message


Lien à poster
Partager sur d’autres sites

Ben moi pas comprendre la question :(

 

Chez moi, si je fais une mise à  jour, tout mes icônes de VD sont affichés correctement sans que je fasse quoi que ce soit.

Partager ce message


Lien à poster
Partager sur d’autres sites

quel est ton secret ?

 

Lol je n'ai pas ete très clair hihi

 

Après la mise a jour en 4.042, au redémarrage, j'ai quelques VD qui n'ont plus d'icône perso mais les 'beaux carrés bleus" de FIbaro.

 

Je dois bien me tromper quelque part mais où ? 

 

J'ai mis pourtant des icones derriere les boutons mais après redémarrage, icone bleu lol

Partager ce message


Lien à poster
Partager sur d’autres sites

A ben oui, les icônes derrière les boutons ne sont affiché QUE si tu cliques sur le bouton, ce qui est normal et voulu.

 

Tu dois mettre une icône sur le module virtuel lui-même pour qu'il s'affiche après un reboot.

Partager ce message


Lien à poster
Partager sur d’autres sites

bon ben voila, je savais bien que le boulet c'etait moi hihi

 

Ou alors comment remettre l'icone avant le redemarrage ?

Recup le "currentIcon", le garder quelquepart et le remettre avec un call ? pas pratique lol

Partager ce message


Lien à poster
Partager sur d’autres sites

En effet, pas pratique, mais pas vraiment le choix. Chaque fois que tu cliques sur un bouton d'un VD, il faudrait que tu stockes dans un Variable Global le numéro du VD et du currentIcon ... lourd tout cela mais réalisable.

-- On récupère la liste des VD/Icones stocké dans la variable globale "Icones"
-- et on le transforme en tableau exploitable
local icones = json.decode(fibaro:getGlobalValue("Icones"))
-- On ajoute/modifie la valeur du couple VD/Icone
icones[fibaro:getSelfId()] = fibaro:getValue(id, "currentIcon")
-- On remet cela en json dans la variable globale "Icones"
fibaro:setGlobal("Icones", json.encode(icones))

.

.

Puis la scène pour les remettre

--[[
%% autostart
--]]

-- On récupère la liste des VD/Icones stocké dans la variable globale "Icones"
-- et on le transforme en tableau exploitable
local icones = json.decode(fibaro:getGlobalValue("Icones"))
-- On parcours toutes les entrées et on met l'icone àjour
for k,v in ipaires(icones) do
   fibaro:call(k, "setProperty", "currentIcon", v)
end

Bien évidement, je n'ai rien testé et cela n'est qu'une suggestion.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout cela pour une icône moi je lache l affaire ☺ je suis entrain de voir pour faire cela dans une scene avec autostart

Envoyé avec mon SmartPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

en fait faudrait mettre le code dans chaque VD puis après la scene gere tout ;-)

 

vive le copier/coller dans tous les boutons des VD ;-) ..ou dans le Main Loop ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je test une autre solution

Partager ce message


Lien à poster
Partager sur d’autres sites

On peut faire une recherche des vd via l api et attribué un icone en fonction du nom du vd

Envoyé avec mon SmartPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

pepite,

Dans le tuto que j'ai écris àl'époque

http://www.domotique-fibaro.fr/index.php/topic/4149-afficher-les-valeurs-dune-variable-dans-un-vd-sour-hc2/

j'explique comment au redémarrage de la box, il clique sur le bon bouton de tous les VD qui gèrent mes variables.

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici une proposition : 

 

Il faut juste mettre en entête, les ID des Modules virtuels (ex. 194 currentIcon).

 

Donc chaque fois que le currentIcon du module virtuel va changer, cette scène va stocker l'information dans une variable globale. Au démarrage de la box, elle va chercher la variable globale et va écrire les valeurs stockées dans les modules virtuels.

 

En bref, elle écoute les changements de currentIcon et les restaure au redémarrage.

 

Il faut créé la variable globale.

--[[
%% autostart
%% properties
104 currentIcon
--]]

local variableGlobale = "Icones"

local trigger = fibaro:getSourceTrigger()

if (trigger.type == "autostart" or trigger.type == "other") then
  
  fibaro:debug("Mise à  jour des icones sur les VD")
  
  local icones = json.decode(fibaro:getGlobalValue(variableGlobale))
  -- On parcours toutes les entrées et on met l'icone à  jour
  for k,v in pairs(icones) do
    fibaro:debug(string.format("Module : %s - currentIcon %s", k, v))
    fibaro:call(tonumber(k), "setProperty", "currentIcon", v)
  end  
  
elseif (trigger.type == "property") then
  
  local prop = trigger.propertyName
  local device = trigger.deviceID
  local val = fibaro:getValue(device, prop)
  
  fibaro:debug(string.format("Module Virtuel %s (%d) propriété %s = %s", fibaro:getName(device), device, prop, val))
  
  local icones = json.decode(fibaro:getGlobalValue(variableGlobale))
  if (not icones) then
    icones = {}
  end
  -- On ajoute/modifie la valeur du couple Virtual Device/Icone
  icones[device] = val
  -- On remet cela en json dans la variable globale "Icones"
  fibaro:setGlobal(variableGlobale, json.encode(icones))

end
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes, Steven, voila j'ai teste,petit bug dans le debug :

[DEBUG] 21:34:01: Mise àjour des icones sur les Virtual Device
[ERROR] 21:34:01: line 19: bad argument #1 to 'pairs' (table expected, got number)
[DEBUG] 21:34:07: Mise àjour des icones sur les Virtual Device

Partager ce message


Lien à poster
Partager sur d’autres sites

Tiens, je pensais l'avoir corrigé celle là. C'est pairs au lieu de ipairs.... Juste enlever le i.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Steven,

 

J'avais essaye aussi mais idem ;-)

[DEBUG] 09:12:55: Mise à  jour des icones sur les Virtual Device
[ERROR] 09:12:55: line 19: bad argument #1 to 'pairs' (table expected, got number)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Personne n'a de réponse ou d'idée pour mon problème: l'icône du module virtuel ne change plus quand je change l'état du module "fil pilote" directement. Voici le code mis en place dans la mainloop (qui fonctionnait au début).

local Qubino_ID = 302
-- Tables des icones
local icone = {
[99] = 1027,
[50] = 1134,
[40] = 1135,
[0] = 1030,
[20] = 1029,
[30] = 1028
}
 
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon",
icone[tonumber(fibaro:getValue(Qubino_ID, "value"))])
 
local temp = fibaro:getValue(279, "value")
fibaro:log(temp .." °C" )
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value",temp.. " °C")
 

Les trois dernières lignes m'affiche la température de la zone dans une étiquette et en bas de la case du module dans l'interface HC2. Les Id n'ont pas changé mais ça ne fonctionne plus.

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite

Tu dois avoir quelque chose de bizzare dans ta variable globale qui fait que le json.decode ne te renvoi pas un tableau mais un chiffre. Je te laisse vérifier.

 

@Did

Si tu es sà»re des valeurs et des id d'icones, tu peux essayer ceci :

fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon",
tostring(icone[tonumber(fibaro:getValue(Qubino_ID, "value"))]))

au lieu d'envoyer un numéro d'icone, on lui envoi le numéro sous forme de chaine .. me semble que j'avais eu ce soucis.

 

Sinon, ajoute cette ligne a la fin pour controler les valeurs :

fibaro:debug("Quibino value = " .. fibaro:getValue(Qubino_ID, "value"))

Partager ce message


Lien à poster
Partager sur d’autres sites

@steven,

 

Effectivement ca doit etre cela vu le debug mais je ne vois pas d'ou cela vient

DEBUG] 10:50:28: Module Virtuel Mode_Maison (24) propriété currentIcon = 1007
[ERROR] 10:50:28: line 37: attempt to index local 'icones' (a number value)

ma ligne 37 :

icones[device] = val

Alors la, vous n'allez pas me croire, ca fonctionne au TOP Steven, bon j'ai pas encore redemarré mais aucun doute..

 

Ce qui n'allait pas : le nom de ma Variable GLobale etait : "Icones", me suis as embete, j'ai repris ce que tu avais mis Steven

Je l'ai modifiée en "icones" (sans la majuscule) et la tout est OK :-(

 

Une explication pour ma culture svp ? la majuscule "I" est-elle interpretee autrement ?

 

MErci encore Steven

Partager ce message


Lien à poster
Partager sur d’autres sites

Le lua est sencible a la case

Icones est icones sont 2 variables

Envoyé avec mon SmartPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

Icones est icones sont 2 variables

 

Si "Icônes est icônes" alors c'est le même, mais c'est vrai que Icônes et icônes c'est pas pareil ! :98:

Partager ce message


Lien à poster
Partager sur d’autres sites

×