Aller au contenu

Messages recommandés

Posté(e)

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

 

Allez messieurs ... à  bientôt.

  • 4 semaines après...
Posté(e)

 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.

Posté(e)

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);
  •  
Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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

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

Posté(e)

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 ?

Posté(e)

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

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

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

 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.

Posté(e)

@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"))
Posté(e)

@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

Posté(e)

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:

×
×
  • Créer...