Aller au contenu

Voir Si Une Lumière Est Allumée Et Tout Éteindre


neliger

Messages recommandés

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.

 

post-3462-0-66034400-1427554844_thumb.png

 

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

 

post-3462-0-66084700-1427555143_thumb.pngpost-3462-0-62260300-1427555149_thumb.png

  • Upvote 5
Lien vers le commentaire
Partager sur d’autres sites

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
  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

@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.

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

@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é par trainkill666
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...