-
Compteur de contenus
14 646 -
Inscription
-
Dernière visite
-
Jours gagnés
190
Tout ce qui a été posté par jojo
-
i-magin, Merci pour ta précision. Plein d'espoir àla lecture de ton feedback, j'ai collé le code de la VD_Update dans la scène. Et zut, ça ne fonctionne toujours pas. Je crois avoir compris : on ne pourrait pas faire de pressButton depuis une scène... Je t'este cela ce WE
- 20 réponses
-
- variables
- virtual device
-
(et 1 en plus)
Étiqueté avec :
-
Pour la HCL, j'avais en son temps fait un tuto pour afficher une icône dans un virtual device une icône en fonction de la valeur d'une variable globale, et de pouvoir modifier sa valeur (également depuis son smartphone), quelle se mette à jour lors d'un restart de la box, etc pour une HCL En passant sous HC2, j'avais gardé le même principe, et pour chaque VD (et donc chaque variable), la main loop tournait en continu pour vérifier que l'icône correspond bien à la valeur de la variable. Ce n'est vraiment pas optimal. Je vais vous expliquer ici la solution que j'ai mise en place pour que la charge sur la box soit moins importante. Merci à Steven, i-magin et mprinfo qui m'ont aidé pour débugger Création des variables Je prendrai dans mon exemple 2 variables globales : Auth_PS3 avec 2 valeurs possibles : "Autorisé" et "Interdit" Auth_TV avec 2 valeurs possibles : "Autorisé" et "Interdit" (mais les valeurs pourraient être différentes que pour la 1° variable, ou avoir plus que 2 valeurs) Modules virtuels Chaque variable a son module virtuel. Il a pour objectif d'afficher une icône différente en fonction de la valeur de la variable. Pour facilement les retrouver, j'ai créé une section "Section Virtuelle" et dedans une pièce "Variables". Chaque VD a le nom suivant : "Var_xxxx" où xxxx est le nom de la variable globale. Dans notre exemple : "Var_Auth_PS3" et "Var_Auth_TV". L'icône par défaut du VD est et doit rester l'horrible cube bleu (facile ainsi de repérer si la VD est à jour) J'ai créé les boutons suivants : Bouton 1 : Autorisé / Interdit Il permet simplement de faire le switch de la valeur de la variable. C'est le bouton par défaut du VD. Il n'y a pas d'icône associée. -- nom de la variable à modifier local variable = "Auth_PS3" if fibaro:getGlobal(variable) == "Interdit" then fibaro:call(fibaro:getSelfId(), "pressButton", "3") else fibaro:call(fibaro:getSelfId(), "pressButton", "4") end Label : Statut afficher en texte la valeur de la variable Bouton3 : Autorisé c'est le bouton qui est appelé pour mettre la variable à "Autorisé" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Autorisé') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Autorisé') Bouton4 : Interdit c'est le bouton qui est appelé pour mettre la variable à "Interdit" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Interdit') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Interdit') N.B. l'ID de ce bouton ne peut pas être appelée par le bouton Switch, mais seulement son numéro QUI CHANGE si vous changez l'ordre. C'est débile, mais c'est comme ça … Utilisation On clique sur le bouton principal, et il switch la valeur de la variable On peut utiliser Google Calendar pour lui dire d'appuyer directement sur le bouton "Autorisé" ou "Interdit" Vous devez modifier les scènes qui modifiaient directement la variable, en la faisant appuyer sur le bouton de la VD qui modifie la variable et met à jour l'icône de la VD (car il n'y a plus le mainloop qui contrôle en continu la valeur de la variable) Limitations et solution : Lors du redémarage de la box, ou Lors de la sauvegarde du VD (parce que vous avez fait une petite modif, ou …) L'icône qui est affichée pour le VD, est l'icône par défaut du VD. Le cube bleu, pas cool … Donc pour pallier à ce problème, j'ai créé un VD supplémentaire "Var_Update" Dont voici le code : un GRAND merci à mprinfo qui m'a beaucoup aider pour faire qqch de plus sympa et générique ---------------------------------- -- User Settings ---------------------------------- -- la Table doit avoir la structure suivante : -- 1/ nom de la variable globale entre " -- 2/ ID du VD qui affiche la valeur de la VG -- 3/ n° du premier bouton qui doit être appuyé -- (qui correspond à la première valeur de la variable) -- 4/ n° du dernier bouton qui doit être appuyé -- (qui correspond à la dernière valeur de la variable -- on suppose que tous les boutons se suivent de 1 en 1) -- 5/ valeurs possibles de la variable entre " -- (elles doivent être listées dans l'ordre des boutons de la VD) local Table = {"Auth_PS3", 23, 3, 4, "Autorisé", "Interdit", "Auth_TV", 289, 3, 4, "Autorisé", "Interdit", "Auth_VMCEtage", 290, 3, 4, "Autorisé", "Interdit", "Auth_TerrPar", 291, 3, 4, "Autorisé", "Interdit", "Auth_LumHallNuit", 362, 3, 4, "Autorisé", "Interdit", "ECS", 292, 3, 4, "Oui", "Non", "DayPart", 130, 3, 4, "After SunRise", "After SunSet", "Noel", 363, 3, 4, "Oui", "Non", "Saison", 133, 3, 6, "Printemps", "Eté", "Automne", "Hiver", "Chauffage", 351, 3, 5, "0", "1", "2", "Vacances", 293, 3, 4, "Oui", "Non" } ---------------------------------- -- DO not change bellow this line ---------------------------------- local i = 1 while Table[i] ~= nil do local VG_Nom = tostring(Table[i]) fibaro:debug("----------------------------") fibaro:debug("Nom de la variable Globale = " ..VG_Nom) local VD_id = tostring(Table[i+1]) local Btn_Deb = tonumber(Table[i+2]) local Btn_Fin = tonumber(Table[i+3]) local NbrVal = (Btn_Fin - Btn_Deb) + 1 --Nbr de valeur possibles de la variable fibaro:debug('NbrVal = ' ..NbrVal) i = i + 4 local VG_Val = fibaro:getGlobalValue(VG_Nom) fibaro:debug('Valeur de la variable Globale = ' ..VG_Val) for j = 1,NbrVal do if VG_Val == Table[i+j-1] then fibaro:debug(VG_Nom.. ' = ' ..VG_Val) fibaro:debug("Il faut appuyer sur le bouton : " ..Btn_Deb.. " de la VD_id " ..VD_id) fibaro:call(VD_id, "pressButton", Btn_Deb) end Btn_Deb = Btn_Deb + 1 end -- for i = i + NbrVal end -- while Pour retrouver l'ID du VD, vous avez plusieurs solutions : Le toolkit de Krikroff l'API : http://<IP Box>:<Port Box>/api/virtualDevices vous exportez le VD, et dans l'URL vous voyez ?id=xxx vous éditez le VD, et dans l'URL vous voyez ?vid=xxx Il vérifie la valeur de la variable et appuie sur le bouton correspondant à l'icône. D/Variable. Donc maintenant, quand je vois qu'une des icônes associée à mes variables est l'icone standard, je clique sur le bouton, et tout est remis au carré. Cela évite d'avoir un main loop qui tourne pour chaque variable 99% du temps pour rien. On a donc trouvé une parade à la deuxième limitation ;-) Pour la première limitation (mise à jour après un restart de la box) la solution est facile : Créer une scène qui appelle la VD "Var_Update" / bouton 1 au démarrage de la box. --[[ %% autostart --]] fibaro:sleep (10*1000) fibaro:call(361, "pressButton", "1") où 361 est l'ID du Vd "Var_Update" Merci à Steven qui finalement à trouvé la solution du sleep au début de la scène, ainsi qu'à i-magin et mprinfo pour leurs bonnes idées
- 20 réponses
-
- 3
-
- variables
- virtual device
-
(et 1 en plus)
Étiqueté avec :
-
logique ... Si je mets [[%% autostart --]] dans ma scène, j'ai une erreur. C'est plutôt --[[%% autostart --]]. Mais soit, c'est ce que j'ai mis dedans. Et pour être sà»r qu'il n'y avait pas un caractère bizarre, j'ai fait un copier/coller de ton entête du GEA. Et ça ne fonctionne toujours pas... Ou je dois être plus patient attendre 10 min ?
-
merci à tous les 3 pour vos idées. @Steven, avec ou sans " pour le bouton 1, ça ne fonctionne pas @i-magin : ça a l'air compliqué comme ça, mais les codes sont simples, et le but est de faire le moins de maintenance possible si on veut changer d'icône, rajouter une variable, ... je vais expliquer en détail la solution quand elle sera au point @mprinfo : j'ai un fibaro:debug dans la scène, et je croyais qu'elle démarrait, car il y avait une ligne dans le débug, mais en fait c'était son démarrage automatique lorsqu'on sauve la scène. Lorsque la box redémarre, la scène ne démarre pas. => est-ce que le --[[%% autostart --]] est également activé lors d'un RESTART de la box ? Il semblerait que non, mais qu'il serait bien activé uniquement lors d'une sauvegarde de la scène
-
alors là , je ne comprends PLUS RIEN: le debug de la scène montre qu'elle s'est lancée au démarrage de la HC2 mais le VD n'a pas fait son travail et quand je lance la scène manuellement, ça fonctionne ==> je vais dormir
-
oui, mais moi j'ai une femme, des enfants (je ne sais pas toi), mais tout le chauffage de la maison et des douches dessus + lampes + TV + PS3 => je n'ai pas le droit àl'erreur (je me fait déjàassez chambrer comme ça avec ma domotique de m****)
-
le plus important, c'est que ça fonctionne chez toi. Ca doit être la v4, et je n'y passerai pas pour ça ! (téméraire, Belge, mais pas encore assez fou) C'est presque prêt. Je partage la solution demain
-
ça ne fonctionne pas ! je suis encore en 3.600. Peut-être que le autostart ne fonctionne qu'à partir du v4.x ?
-
Besoin daide Pilotage Atlantic Alféa Extensa Duo +
jojo a répondu à un(e) sujet de mikael2235 dans Support
si la réponse fut non sans appel, cela veut probablement dire que cette PAC ne permet pas d'être commandée par un contact sec => ni Nest, ni FGS221 (panneau de chauffage)- 26 réponses
-
et voici le json de la VD, qui montre que c'est bien le bouton 1 { id: 361, name: "Var_Update", roomID: 15, type: "virtual_device", properties: { deviceIcon: 1124, ip: "", port: 80, currentIcon: "1124", mainLoop: "", saveLogs: "1", rows: [ { type: "button", elements: [ { id: 1, lua: true, waitForResponse: false, caption: "Update Icons", name: "UpdateIcons", empty: false, msg: "local variables = { Auth_PS3 = 23, Auth_TV = 289 } variable = 'Auth_PS3' if fibaro:getGlobal(variable) == 'Autorisé' then fibaro:call(variables[variable], "pressButton", "3") else fibaro:call(variables[variable], "pressButton", "4") end variable = 'Auth_TV' if fibaro:getGlobal(variable) == 'Autorisé' then fibaro:call(variables[variable], "pressButton", "3") else fibaro:call(variables[variable], "pressButton", "4") end", buttonIcon: 1124, favourite: false, main: true
-
oui
-
où est l'erreur ? J'ai créé une scène --[[ %% autostart --]] fibaro:call(361, "pressButton", "1") qui appelle le VD 361, qui, lorsque appelé manuellement, met bien à jour mes icônes. d'ailleurs, lorsque je lance la scène manuellement, tout va bien. Mais elle ne semble pas démarrer après un restart de la HC2
-
Besoin daide Pilotage Atlantic Alféa Extensa Duo +
jojo a répondu à un(e) sujet de mikael2235 dans Support
si ta PAC autorise de démarrer avec un contact sec, tu as plusieurs possibilités : thermostat NEST thermostat Netatmo thermostat .. une sonde de température Fibaro et une FGS221 via un panneau de chauffage (mais si ta box est morte, glagla)- 26 réponses
-
vérifie quand-même la compatibilité avec ta HC2. Je deviens méfiant ...
-
-
moi je 'ai fait (c'était d'ailleurs la première chose que j'ai faite) avec un FGS-221 pour mes deux portes de garage => zéro risque avec une porte. tu peux y aller, et prend le 221, tu seras tranquille et aura une réseve au cas où
-
je ne suis pas aller voir jusque là. Mais une sorte de WallPluf dimmable, est-ce utile ? alors, je préfère pour le même prix la multiprise greenwatch ou qqch comme ça
-
prend un FGS221, il est au même prix que le FGS211, mais tu as 2 sorties, même si tu n'en n'utilise qu'une seule. La 2° tu pourrais l'utiliser comme une module virtuel gratuit De toute gaçon il y a 0 puissance qui passera dans le module
-
oui, mais quel serait l'avantage par rapport àun Wall Plug Fibaro, outre qu'il fait 3300W au lieu de 2500W ?
-
pepite, j'ai une idée comment faire cela au plus simple. Je mets en oeuvre chez moi, je teste, et je partage
-
double réponse, double merci
-
quand j'ai commencé avec ma HCL, j'ai eu le même soucis ... J'ai cherché longtemps avant de trouver le bouton save. Donc tu fais tes modif, puis tu cliques sur la petite sur la barre d'icônes àdroite de l'écran. N'hésite pas d'utiliser ce bouton.
-
as-tu un code pour que la scène détecte un redémarrage de la box et se lance automatiquement ? Car en effet ce serait beaucoup plus propre que je faire ma bidouille pour les 10 VD liés aux 10 variables pour lesquelles j'affiche des icônes
-
Steven me donnait juste un exemple de comment je pouvais assigner une icone à un VD. Pour ton info, voici ce que j'ai fait pour que le VD remette bien la bonne icône après un redémarrage de la box -- nom de la variable à vérifier local variable = "Auth_PS3" -- ID des icônes local icone1 = 1097 local icone2 = 1096 local virtualID = fibaro:getSelfId() local currentIcon = fibaro:get(virtualID, "currentIcon") if (currentIcon == "0" or currentIcon == "1") then if fibaro:getGlobal(variable) == "Interdit" then fibaro:call(virtualID, "setProperty", "currentIcon", icone1); else fibaro:call(virtualID, "setProperty", "currentIcon", icone2); end fibaro:call(virtualID, "setProperty", "ui.Statut.value", ""..fibaro:getGlobal(variable)) end
-
oui, erreur de copy/coller