Aller au contenu
pepite

Aide Code Lua Rgb

Recommended Posts

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

 

Partager ce message


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

Partager ce message


Lien à poster
Partager sur d’autres sites

meme en cliquant sur exécuter sa ne fonctionne pas 

Partager ce message


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

Partager ce message


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

Partager ce message


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


 

Partager ce message


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

Partager ce message


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

Partager ce message


Lien à poster
Partager sur d’autres sites

alors maintenant sa démarre tout seul impec mais au lieu de s'arrêter la scène redémarre 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui si tu as laisse instance.every à  1, cela signifie qu'il va appuyer sur le bouton toutes les mins.

 

alors une question : tu veux en fait que cela fonctionne qu'1 fois ?

Partager ce message


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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

merci beaucoup pour le coup de main tes au top  :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

De rien !!

 

Ca fonctionne comme tu le souhaites ?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui c'est nickel comme ça j'ai pas besoin de plus  ;) encore merci :13:

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut pepite c'est possible de modifier quelque chose je voudrais utiliser un VD àla place de Yahoo comme météo

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut domo,

 

C'est sur que Yahoo avec son changement d'API devient tout de suite moins fiable ;-) 

 

que veux tu faire ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×