neliger Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 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 5
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Merci pourrais tu mettre le code si cela ne te dérange pas Super travail
neliger Posté(e) le 28 mars 2015 Auteur Signaler Posté(e) le 28 mars 2015 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 2
Plap3014 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Bonsoir, ton module fonctionne très bien avec mes interrupteurs de type On/Off. j'ai dans ma config des variateurs (Dimmer), que devons nous rajouter dans ton code pour pouvoir les inclure aussi? Merci, Patrick
trainkill666 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Merci neliger, j'ai enfin trouver comment lister les modules de manière simple et efficace en 3 lignes et ceci grâce à toi, le json semble permettre beaucoup de chose, aurais-tu un petit lien listant toutes les api pour le HC2 ?
neliger Posté(e) le 28 mars 2015 Auteur Signaler Posté(e) le 28 mars 2015 @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.
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 pour une début je dirai que c'est plutôt très bien lol A priori il n'y aura plus d'évolution pour les VD car un jour viendra ou on aura des plugins heu j'ai dis une bêtise ?
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 donc pour connaitre la liste de mes volets /api/devices?type=com.fibaro.blind tu ferais comment car niveau API je suis une bille moi j'avais fais cela local NombreModule = 2000 local VoletsID = {} for i = 3, NombreModule do local theType = fibaro:getType(i) local Var_Name = fibaro:getName(i) -- Si égale à'blind' if (theType == 'com.fibaro.FGRM222') then local t_id = #VoletsID + 1 table.insert(VoletsID, t_id, tonumber(i)) fibaro:debug('Volets ID ' ..i .." = "..Var_Name) end end
trainkill666 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 @Plap3014 : àtester : if (type(v.properties.dimmable_light) == "string") then
Plap3014 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Est-ce que je rajouter simplement la ligne après la tienne dans les 2? Juste ta ligne ne fonctionne pas et j'ai pas d'erreur.... ??? Merci
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 comme aide on peut utiliser IP de la box/docs/ j'ai déjàtrouver quelques réponse mes questions a cette endroit mais comme je dis je suis une bille avec les api 1
neliger Posté(e) le 28 mars 2015 Auteur Signaler Posté(e) le 28 mars 2015 @mprinfo : Je ne connaissais pas l'existance de cette doc sur l'API de la box, merci.
trainkill666 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 (modifié) @Plap3014 : je ne sais pas si ça fonctionne car je n'ai pas de dimmer : --Code retiré car ne fonctionnant pas. Modifié le 8 avril 2015 par trainkill666
neliger Posté(e) le 28 mars 2015 Auteur Signaler Posté(e) le 28 mars 2015 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.
trainkill666 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 C'est pas faux, je ne fait que répondre à la question de Plap3014 . Si dimmable_light fonctionne, à lui d'affiner le code. Ton code valide le bug de la maj 4.040, sous l'appli android, je n'ai plus d'éclairage dans la section correspondante, et ton code ne les voit pas non plus.
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 @neliger pourtant j'ai fais un tuto a ce sujet
Plap3014 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 je test et je vous reviens, merci de votre réactivité! apprécier! Patrick
mprinfo Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 ca ne fonctionne pas avec des fgd211 ils ont aussi isLight dans les propriétés
Plap3014 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Sa fonctionne pas, je vais essayer de trouver le bon code pour les dimmers... avec HC2 toolkit... a suivre, Merci,
trainkill666 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 (modifié) @mprinfo Le code de neliger fonctionne donc sans modification ? Par contre, comme il en a fait l'allusion attention au dimmer qui ne sont pas utilisés pour l'éclairage. Properties correspond-il aux paramètres avancés du module dans la liste défilante "appareil commandé" ?, dans ce cas, pas de risque. Modifié le 28 mars 2015 par trainkill666
neliger Posté(e) le 28 mars 2015 Auteur Signaler Posté(e) le 28 mars 2015 Etrange, le isLight est bien là, turnOff() aussi, je ne vois pas ce qui manque dans le code d'origine.
Plap3014 Posté(e) le 28 mars 2015 Signaler Posté(e) le 28 mars 2015 Mes 2 dimmers sont bien sur Éclairage....et moi aussi j'ai bien le Islight dans les propriétés et type Dimmable Light dans HC Toolkit..
Messages recommandés