Aller au contenu

Aide Code Lua Rgb


pepite

Messages recommandés

tu peux tenter ca alors, et enleve tout ce qu'il y a dans ton entete dans ce cas.

    local Trigger = fibaro:getSourceTrigger()
    local maintenant = os.date("%H:%M", os.time())
    local heuremini, heuremaxi = "07:00", "07:55"
    -------
    local Humidity = tonumber(fibaro:getValue(3, "Humidity"))
    local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature"))
    local WeatherCondition = fibaro:getValue(3, "WeatherConditionConverted")
    -----------
    local presencetophe = tonumber(fibaro:getGlobalValue("Present_Tophe")) > 0
    -----------
    fibaro:debug("OutsideTemperature : " .. OutsideTemperature);
    fibaro:debug("Humidity : " .. Humidity);
    fibaro:debug("WeatherCondition : " .. WeatherCondition);
    fibaro:debug("Maintenant : " ..maintenant.. " - Heure mini : " .. heuremini .. " - Heure maxi : " ..heuremaxi)
    fibaro:debug( "Présence Tophe : " ..(fibaro:getGlobalValue("Present_Tophe")))

if (Trigger["type"] == "autostart" or Trigger["type"] == "other") then
     fibaro:debug("Scène demarrée")
    if maintenant > heuremini and maintenant < heuremaxi and presencetophe then
     
        if (OutsideTemperature <= 20) then
            fibaro:call(236, "setColor", "0", "255", "0", "0") -- vert
        else
            fibaro:debug("jaune");
            fibaro:call(236, "setColor", "255", "255", "0", "0") -- jaune
            fibaro:sleep(5*1000)
        end    
     
        if(Humidity >= 50) then
            fibaro:debug("rouge");
            fibaro:call(236, "setColor", "255", "0", "0", "0") -- rouge
            fibaro:sleep(5*1000)
        end
     
        if(Humidity >= 50 and OutsideTemperature < 20) then
            fibaro:debug("blanc");
            fibaro:call(236, "setColor", "255", "255", "255", "0") -- blanc
            fibaro:sleep(5*1000)
        end
     
        if (WeatherCondition == "rain") then
            fibaro:debug("bleu");
            fibaro:call(236, "setColor", "0", "0", "255", "0") -- bleu
            fibaro:sleep(5*1000)
        end
    else
        fibaro:debug("Pas d'allumage de RGB, en dehors des heures 7:00 - 7:55")
    end
end

 

Lien vers le commentaire
Partager sur d’autres sites

merci pepite pour le temps que tu me consacre le rgbw ne s'allume pas voici le debug

[DEBUG] 15:16:37: OutsideTemperature : 12
[DEBUG] 15:16:37: Humidity : 67
[DEBUG] 15:16:37: WeatherCondition : clear
[DEBUG] 15:16:37: Maintenant : 15:16 - Heure mini : 15:16 - Heure maxi : 15:20
[DEBUG] 15:16:37: Présence Tophe : 1
[DEBUG] 15:16:37: Scène demarrée
[DEBUG] 15:16:37: Pas d'allumage de RGB, en dehors des heures 15:00 - 15:55
Lien vers le commentaire
Partager sur d’autres sites

d'apres le debug : maintenant et heuremini sont identiques, ca doit etre strictement superieur

 

Reessaie pour voir si ca vient de ca stp. ou ca vient des conditions ou du sourcetrigger ?

 

Sinon on peut le faire avec un VD pour tester...

Modifié par pepite
Lien vers le commentaire
Partager sur d’autres sites

[DEBUG] 15:35:08: OutsideTemperature : 12
[DEBUG] 15:35:08: Humidity : 67
[DEBUG] 15:35:08: WeatherCondition : clear
[DEBUG] 15:35:08: Maintenant : 15:35 - Heure mini : 15:35 - Heure maxi : 15:38
[DEBUG] 15:35:08: Présence Tophe : 1
[DEBUG] 15:35:08: Scène demarrée
[DEBUG] 15:35:08: Pas d'allumage de RGB, en dehors des heures 15:35 - 15:55

c'est se que tu voulais que je test , toujours pas bon 

Lien vers le commentaire
Partager sur d’autres sites

regarde dans le debug mainentant = heure mini, donc pas d'allumage de RGB

 

je modifie le code

    local Trigger = fibaro:getSourceTrigger()
    local maintenant = os.date("%H:%M", os.time())
    local heuremini, heuremaxi = "07:00", "07:55"
    -------
    local Humidity = tonumber(fibaro:getValue(3, "Humidity"))
    local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature"))
    local WeatherCondition = fibaro:getValue(3, "WeatherConditionConverted")
    -----------
    local presencetophe = tonumber(fibaro:getGlobalValue("Present_Tophe")) > 0
    -----------
    fibaro:debug("OutsideTemperature : " .. OutsideTemperature);
    fibaro:debug("Humidity : " .. Humidity);
    fibaro:debug("WeatherCondition : " .. WeatherCondition);
    fibaro:debug("Maintenant : " ..maintenant.. " - Heure mini : " .. heuremini .. " - Heure maxi : " ..heuremaxi)
    fibaro:debug( "Présence Tophe : " ..(fibaro:getGlobalValue("Present_Tophe")))

if (Trigger["type"] == "autostart" or Trigger["type"] == "other") then
     fibaro:debug("Scène demarrée")
    if maintenant >= heuremini and maintenant <= heuremaxi and presencetophe then
     
        if (OutsideTemperature <= 20) then
            fibaro:call(236, "setColor", "0", "255", "0", "0") -- vert
        else
            fibaro:debug("jaune");
            fibaro:call(236, "setColor", "255", "255", "0", "0") -- jaune
            fibaro:sleep(5*1000)
        end    
     
        if(Humidity >= 50) then
            fibaro:debug("rouge");
            fibaro:call(236, "setColor", "255", "0", "0", "0") -- rouge
            fibaro:sleep(5*1000)
        end
     
        if(Humidity >= 50 and OutsideTemperature < 20) then
            fibaro:debug("blanc");
            fibaro:call(236, "setColor", "255", "255", "255", "0") -- blanc
            fibaro:sleep(5*1000)
        end
     
        if (WeatherCondition == "rain") then
            fibaro:debug("bleu");
            fibaro:call(236, "setColor", "0", "0", "255", "0") -- bleu
            fibaro:sleep(5*1000)
        end
    else
        fibaro:debug("Pas d'allumage de RGB, en dehors des heures 7:00 - 7:55")
    end
end


 

Lien vers le commentaire
Partager sur d’autres sites

je suis obligé de cliquer sur exécuter pour que sa fonctionne 

[DEBUG] 16:01:14: OutsideTemperature : 12
[DEBUG] 16:01:14: Humidity : 67
[DEBUG] 16:01:14: WeatherCondition : clear
[DEBUG] 16:01:14: Maintenant : 16:01 - Heure mini : 16:01 - Heure maxi : 16:03
[DEBUG] 16:01:14: Présence Tophe : 1
[DEBUG] 16:01:14: Scène demarrée
[DEBUG] 16:01:14: rouge
[DEBUG] 16:01:19: blanc
Lien vers le commentaire
Partager sur d’autres sites

oui on devrait mettre une boucle en fait, mais c'est pas tres optimise, bon on sait que ca fonctionne ;-)

 

Changement de fusil d'epaule avec un VD

Crée un VD avec 1 seul bouton

 

Code à  mettre dans le boutton :

-- Bouton --
    local Humidity = tonumber(fibaro:getValue(3, "Humidity"))
    local OutsideTemperature = tonumber(fibaro:getValue(3, "Temperature"))
    local WeatherCondition = fibaro:getValue(3, "WeatherConditionConverted")
    -----------
    local presencetophe = tonumber(fibaro:getGlobalValue("Present_Tophe")) > 0
    -----------
    fibaro:debug("OutsideTemperature : " .. OutsideTemperature);
    fibaro:debug("Humidity : " .. Humidity);
    fibaro:debug("WeatherCondition : " .. WeatherCondition);
    fibaro:debug( "Présence Tophe : " ..(fibaro:getGlobalValue("Present_Tophe")))

   
    if presencetophe then  
        if (OutsideTemperature <= 20) then
            fibaro:call(236, "setColor", "0", "255", "0", "0") -- vert
        else
            fibaro:debug("jaune");
            fibaro:call(236, "setColor", "255", "255", "0", "0") -- jaune
            fibaro:sleep(5*1000)
        end    
     
        if(Humidity >= 50) then
            fibaro:debug("rouge");
            fibaro:call(236, "setColor", "255", "0", "0", "0") -- rouge
            fibaro:sleep(5*1000)
        end
     
        if(Humidity >= 50 and OutsideTemperature < 20) then
            fibaro:debug("blanc");
            fibaro:call(236, "setColor", "255", "255", "255", "0") -- blanc
            fibaro:sleep(5*1000)
        end
     
        if (WeatherCondition == "rain") then
            fibaro:debug("bleu");
            fibaro:call(236, "setColor", "0", "0", "255", "0") -- bleu
            fibaro:sleep(5*1000)
        end
    end

Code a mettre dans le main loop du VD

-- Main Loop --
    local maintenant = os.date("%H:%M", os.time())
    local heuremini, heuremaxi = "07:00", "07:55"
    local selfId = fibaro:getSelfId()

fibaro:debug("Maintenant : " ..maintenant.. " - Heure mini : " .. heuremini .. " - Heure maxi : " ..heuremaxi)

-- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée.
if (not instance) then
    -- on indique la fréquence d'execution souhaitée (en minutes)
    instance = { lastrun = 0, every = 1 }
    fibaro:debug("first run")
end

-- on vérifie la différence entre cette exéction et la dernière (stocké dans instance.lastrun)
diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
 

if maintenant >= heuremini and maintenant <= heuremaxi then
    -- si la différence en minutes et supérieure ou égale à  la fréquence souhaitée (instance.every)
        if (diff.min >= instance.every) then
            fibaro:call(selfId, "pressButton", 1)
            -- on stock l'heure de la nouvelle exécution
            instance.lastrun = os.time()
            fibaro:debug("executed")
        end
end
Lien vers le commentaire
Partager sur d’autres sites

dans ce cas, pas besoin d'heure mini ni maxi, juste une heure  à  déterminer pour le faire :

 

nouveau code du main loop alors :

-- Main Loop --
    local maintenant = os.date("%H:%M", os.time())
    local heure = "07:00"
    local selfId = fibaro:getSelfId()

fibaro:debug("Maintenant : " ..maintenant.. " - Heure prévue : " .. heure)

-- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée.
if (not instance) then
    -- on indique la fréquence d'execution souhaitée (en minutes)
    instance = { lastrun = 0, every = 1 }
    fibaro:debug("first run")
end

-- on vérifie la différence entre cette exéction et la dernière (stocké dans instance.lastrun)
diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
 

if maintenant == heure then
    -- si la différence en minutes et supérieure ou égale à  la fréquence souhaitée (instance.every)
        if (diff.min >= instance.every) then
            fibaro:call(selfId, "pressButton", 1)
            -- on stock l'heure de la nouvelle exécution
            instance.lastrun = os.time()
            fibaro:debug("executed")
        end
end

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
×
×
  • Créer...