Aller au contenu

Messages recommandés

Posté(e)

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
Posté(e)

@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");
Posté(e)

@Neliger: sa fonctionne pour éteindre les dimmers....

 

on ne vois juste pas si les dimmers sont allumés par contre.... je vais regarder aussi pour voir si on peut pas changer qqc...

 

merci du bon travail...

 

Patrick

Posté(e)

Idem, je viens de testé avec un dimmer, 

 

le VD permet de l'eteindre mais il ne le vois pas allumé (icône jamais en vert meme si j'ai mis le bon ID)

Posté(e)

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.

Posté(e)

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
  • Upvote 1
Posté(e)

Mes 2 dimmers sont pourtant bien reconnu est pas en problème...

 

je vais faire un reboot de box pour voir...et je vous re...

 

Après un reboot, pareil, dans la version 1.1 je pouvais les éteindre pourtant...

 

merci de votre support,

 

patrick

Posté(e)

@Trainkill666:

 

Sa fonctionne pour éteindre les lumières, y compris les dimmers, cependant le statut pour les icon ne fonctionne pas.

 

dans le début j'ai une erreur, la même pour le bouton et le main loop:

 

[ERROR] 06:15:44: line 12: attempt to compare number with nil et la ligne 41du main loop

 

12. if(type(v.properties.isLight) == "string") and (type(v.properties.value) == "string") and ((v.properties.value == "true") or (tonumber(v.properties.value) > 0)) then

 

41. if(type(v.properties.isLight) == "string") and (type(v.properties.value) == "string") and ((v.properties.value == "true") or (tonumber(v.properties.value) > 0)) then

 

nous sommes pas loin du but...

 

merci,

 

Patrick

Posté(e)

je viens d'installer le module virtuel et malheureusement chez moi, rien ne fonctionne :-(

 

je remarque aussi que les icones possèdent des Id (107 / 108 ) , ou les récupère t on ?

 

merci bien pour vos éclaircissements

Posté(e)

alors pour les id des icones c'est un peu chiant pour trouver j'ai mis un peu de temps pour comprendre

soit avec le toolkit soit avec un clic droit sur l'icone information sur l'image

Did a fait un tuto a ce sujet

Posté(e)

A tester, je ne peux pas car suite à  la maj 4.040 la box plante, ce code est fait à  "l'aveugle", il doit donc y avoir des "coquilles". :P

 

Bouton :

-- 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
	if type(v.properties.isLight) == "string" and type(v.properties.value) == "string" then
		if v.properties.value == "true" then
			fibaro:call(v.id, "turnOff")
		elseif v.properties.value ~= nil and v.properties.value ~="false" then
			if tonumber(v.properties.value) > 0 then
				fibaro:call(v.id, "turnOff")
			end
		end
	end
end

Main Loop

-- Identiants des icônes
local IconeAllume = 107
local IconeEteint = 108
 
-- Intervalle de mise à  jour automatique (en secondes)
local IntervalleMAJ = 10
 
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
	if type(v.properties.isLight) == "string" and type(v.properties.value) == "string" then
		if v.properties.value == "true" then
			compteurLumieres = compteurLumieres + 1
		elseif v.properties.value ~= nil and v.properties.value ~="false" then
			if tonumber(v.properties.value) > 0 then
				compteurLumieres = compteurLumieres + 1
			end
		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 3
Posté(e)

@Trainkill666: Sa fonctionne! super,

 

vous pouvez faire la mise a jour et votre rituel device en 1.3...

 

mes switch on/off et mes dimmers son maintenant fonctionnels avec la vision de l'état des 2

 

vous êtes les meilleurs!

 

Patrick

×
×
  • Créer...