Aller au contenu
neliger

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

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pourrais tu mettre le code si cela ne te dérange pas

Super travail :60:

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci neliger,

 

j'ai enfin trouver comment lister les modules de manière simple et efficace en 3 lignes et ceci grâce à  toi, :60:

le json semble permettre beaucoup de chose, aurais-tu un petit lien listant toutes les api pour le HC2 ?

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ? :(

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@mprinfo : Je ne connaissais pas l'existance de cette doc sur l'API de la box, merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Plap3014 :

je ne sais pas si ça fonctionne car je n'ai pas de dimmer :

--Code retiré car ne fonctionnant pas.
Modifié par trainkill666

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

@neliger pourtant j'ai fais un tuto a ce sujet ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

je test et je vous reviens,

 

merci de votre réactivité!

 

apprécier!

 

Patrick

Partager ce message


Lien à poster
Partager sur d’autres sites

ca ne fonctionne pas avec des fgd211

ils ont aussi isLight dans les propriétés

Partager ce message


Lien à poster
Partager sur d’autres sites

Sa fonctionne pas,

 

je vais essayer de trouver le bon code pour les dimmers... avec HC2 toolkit...

 

a suivre,

 

Merci,

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Etrange, le isLight est bien là, turnOff() aussi, je ne vois pas ce qui manque dans le code d'origine.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

×