
neliger
Membres confirmés-
Compteur de contenus
190 -
Inscription
-
Dernière visite
Tout ce qui a été posté par neliger
-
Bienvenue ! Welcome !
-
Bienvenue ! Welcome !
-
Bienvenue !
-
Ok, je comprend mieux. Pour le code distribué à tous, on va rester sur le pré-requis que la box ne soit pas boguée ^^ @mprinfo : si tu le veux bien je me reconnecterais à ta box ce soir, il faut que je comprenne ce problème de typage de la valeur de dimmer.
-
@trankill666 : pour cette modif là je ne l'ajouterais pas dans le module car cela dépend du nom des modules chez les utilisateurs, donc pas assez portable. Le isLight n'était pas correct pour toi ?
-
Je ne met pas à jour tant que je ne comprend pas. Précisément, je ne vois pas pourquoi type(v.properties.value) peut retourner string pour un dimmer alors que d'après mes tests c'était un numérique. D'ailleurs une comparaison avec une chaine retournait une erreur de type.
-
Encore Un Nouveau Sur Le Forum
neliger a répondu à un(e) sujet de phillm dans Nouveau ? Présentez-vous
Bienvenue ! -
Bienvenue !
-
Bienvenue ! Juste une limitation à connaitre avant de choisir : la HC2 permet d'exécuter du code Lua, pas la HCL.
-
Topic unique Fibaro - Motion Sensor - Fgms-001
neliger a répondu à un(e) sujet de Moicphil dans Modules Fibaro
Je pense qu'en s'en donnant les moyens, Fibaro pourrait devenir l'Apple de la domotique. -
Bienvenue !
-
Bienvenue !
-
Grâce à un petit test fait chez mprinfo, j'ai pu corriger le test d'allumage et le rétablir aussi avant de demander une extinction. Le code n'est pas très élégant mais avec les problèmes de typage que m'impose le lua, je suis allé au plus simple. J'ai modifié le sujet pour remplacer par la version 1.2 dont voici la source. Code du bouton ------------------------------ -- Ne pas modifier ci-dessous ------------------------------ -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local json = json.decode(reponse) -- Boucle sur les modules for k, v in ipairs(json) do -- Il s'agit d'un module lumière if(type(v.properties.isLight) == "string") then -- Etat de la lumière local EtatLumiere = "eteinte" if(type(v.properties.value) == "string") then if(v.properties.value == "true") then EtatLumiere = "allumee" end else if(v.properties.value > 0) then EtatLumiere = "allumee" end end -- La lumière est allumée, extinction if(EtatLumiere == "allumee") then fibaro:call(v.id, "turnOff") end end end Boucle principale ----------------------------------------------------------- -- Toutes lumières v1.2 ----------------------------------------------------------- -- Extinction de l'ensemble des lumières de la maison ----------------------------------------------------------- -- Changelog -- 1.2 : Correction du test d'état prenant en charge les -- modules variateurs et rétablissement de la -- condition pour l'extinction -- 1.1 : Extinction inconditionnelle et prise en charge des -- modules variateurs ----------------------------------------------------------- ------------------------------ -- Variables à renseigner ------------------------------ -- Identiants des icônes local IconeAllume = 107 local IconeEteint = 108 -- Intervalle de mise à jour automatique (en secondes) local IntervalleMAJ = 10 ------------------------------ -- Ne pas modifier ci-dessous ------------------------------ while true do -- Variable du compteur local compteurLumieres = 0 -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local json = json.decode(reponse) -- Boucle sur les modules for k, v in ipairs(json) do -- Il s'agit d'un module lumière if(type(v.properties.isLight) == "string") then -- Etat de la lumière local EtatLumiere = "eteinte" if(type(v.properties.value) == "string") then if(v.properties.value == "true") then EtatLumiere = "allumee" end else if(v.properties.value > 0) then EtatLumiere = "allumee" end end -- La lumière est allumée, incrémentation if(EtatLumiere == "allumee") then compteurLumieres = compteurLumieres + 1 end end end -- Mise à jour de l'icône if(compteurLumieres > 0) then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", IconeAllume) else fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", IconeEteint) end -- Attente de la prochaine mise à jour automatique fibaro:sleep(IntervalleMAJ*1000) end
-
Erreur de débutant que de juste retirer la condition dans le bouton. Il faut que j'étudie les valeurs pour adapter les deux conditions. Je demande à mprinfo s'il peut me redonner l'accès à sa box.
-
Je vient de modifier le post pour donner la version 1.1 du module virtuel incluant la modification.
-
@mprinfo : un rapide test sur ta box m'a permis de comprendre ce qu'il se passe. En fait, c'est la valeur du dimmer qui peut prendre différentes valeurs, je propose donc de ne plus tester l'état des lumières, et d'envoyer l'ordre d'extinction systématiquement en remplaçant la ligne 18 du bouton par ceci : fibaro:call(v.id, "turnOff");
-
Bienvenue !
-
Là, en mode partage, sans pouvoir débogguer sur la HC, ça ne va pas le faire.
-
Si vous remplacez la ligne 18 du code du bouton original par la ligne ci-dessous, ça éteint la lumière dimmable lors de l'appuis sur le bouton ? if(v.properties.value == "true") then fibaro:call(v.id, "turnOff"); fibaro:call(v.id, "setValue", 0); end
-
Etrange, le isLight est bien là, turnOff() aussi, je ne vois pas ce qui manque dans le code d'origine.
-
Je ne sais pas si v.properties.dimmable_light existe, par contre je suis un peu méfiant sur le coup, car je pense que certains utilisent des dimmer pour d'autres application que la lumière.
-
@mprinfo : Je ne connaissais pas l'existance de cette doc sur l'API de la box, merci.
-
@Plap3014 : à‡a m'intéresse de prendre en charge les dimmer, mais je n'en ai aucun de configuré, je ne peux donc pas faire de tests. Je vais me documenter. @trainkill666 : Malheureusement non. Je n'ai commencé qu'hier à m'intéresser aux modules virtuels, et je peine à trouver une documentation riche. Je fonctionne en lisant tous les bouts de code que je trouve à droite à gauche et en faisant du debug frénétique pour "deviner" les choses pour lesquelles je n'ai pas trouvé de documentation. Je constate aussi beaucoup de limitations dans ce que l'on peut faire, y compris au niveau de l'interface.
-
Pas de soucis, je commente beaucoup pour que tout le monde puisse y retrouver des informations utiles. Code du bouton ------------------------------ -- Ne pas modifier ci-dessous ------------------------------ -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local json = json.decode(reponse) -- Boucle sur les modules for k, v in ipairs(json) do -- Il s'agit d'un module lumière if (type(v.properties.isLight) == "string") then -- La lumière est allumée, extinction if(v.properties.value == "true") then fibaro:call(v.id, "turnOff"); end end end Boucle principale ----------------------------------------------------------- -- Toutes lumières v1.0 ----------------------------------------------------------- -- Extinction de l'ensemble des lumières de la maison ----------------------------------------------------------- ------------------------------ -- Variables à renseigner ------------------------------ -- Identiants des icônes local IconeAllume = 107 local IconeEteint = 108 -- Intervalle de mise à jour automatique (en secondes) local IntervalleMAJ = 10 ------------------------------ -- Ne pas modifier ci-dessous ------------------------------ while true do -- Variable du compteur local compteurLumieres = 0 -- Récupération de la liste des modules local HC2 = Net.FHttp("127.0.0.1", 11111) local reponse = HC2:GET("/api/devices") local json = json.decode(reponse) -- Boucle sur les modules for k, v in ipairs(json) do -- Il s'agit d'un module lumière if (type(v.properties.isLight) == "string") then -- La lumière est allumée, incrémentation if(v.properties.value == "true") then compteurLumieres = compteurLumieres + 1 end end end -- Mise à jour de l'icône if(compteurLumieres > 0) then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", IconeAllume) else fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", IconeEteint) end -- Attente de la prochaine mise à jour automatique fibaro:sleep(IntervalleMAJ*1000) end
-
Toutes lumières Ce module virtuel vérifie périodiquement l'état des modules lumière de la maison, et change d'icône en fonction de leur état (au moins une allumée, aucune allumée). Son bouton permet d'éteindre en un clic toutes les lumières de la maison. Contexte Je cherchais à savoir d'un coup d'oeil s'il restait une lumière allumée dans la maison, et à pouvoir y remédier sans chercher le module dans l'interface. Je prévoit également de me servir du bouton d'extinction généralisée de ce module virtuel dans d'autres modules virtuels ou scènes, afin de centraliser les bouts de code intéressants et d'éviter de les dupliquer, cela facilitera la maintenance. J'ai créé les icônes moi-même pour éviter tout problème de droits. Installation - Importez le module virtuel - Ajoutez les icônes fournies - Adaptez les Id d'icônes au début du code de la boucle principale - Si l'intervalle par défaut (10 secondes) ne vous convient pas, vous pouvez le modifier au début du code de la boucle principale Note : incompatible avec les systèmes inférieurs à 4.x Changelog 1.2 : Correction du test d'état prenant en charge les modules variateurs et rétablissement de la condition pour l'extinction 1.1 : Extinction inconditionnelle et prise en charge des modules variateurs Téléchargement Toutes_Lumières-1.2.vfib