Aller au contenu

Saison Été / Hiver Changement Heure.


rahany

Messages recommandés

Bonsoir, 

 

Je souhaite déclencher plusieurs scènes selon la saison. ( Été -  Hiver )

J'ai créé une variable Saison avec 2 arguments Été et Hiver. Créer la scène en script, avec le code ci-dessous,  pour connaitre la saison.

Mais cela ne fonctionne pas :(

 

Attention, ce n'est pas mon code je l'ai trouvé sur le forum, et je crois que c'est krikoff qui l'a écrit. 

local startSource = fibaro:getSourceTrigger();
if ( startSource["type"] == "other" ) then
    -- récupération table Date
    local dt = os.date("*t");
    -- création de la chaîne pour affichage
    local display = dt.hour..":"..dt.min..":"..dt.sec.." Heure d'été -> "..tostring(dt.isdst);
    -- Sortie de la variable vers la fenêtre debug du HC2
    -- false pour hiver, true pour été
    fibaro:debug(display);
    -- mise à  jour de la variable
    if (dt.isdst) then
        fibaro:setGlobal("Saison","Ete");
    else
        fibaro:setGlobal("Saison","Hiver");
    end
end 

 Par contre, quand je crée les scènes en mode bloc comme ci-dessous, tout fonctionne correctement. 

 

post-2213-0-39555200-1435352624_thumb.png

 

un petite aide m'siou :)

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

ça veut dire quoi "ça ne marche pas" ?

 

Le fait que tu commences par :

  • if ( startSource["type"] == "other" ) then

 

fait que ta scène ne démarre que si tu cliques sur "RUN" alors que la scène bloc contient une boucle infinie pour tester la date.

Lien vers le commentaire
Partager sur d’autres sites

Ok, je viens de prendre le code de KriKoff, mais comme je ne comprends pas trop ( voir rien du tout au code) 

Pouvez-vous me dire SVP, si ce code est bon, avec la variable : Saison - Été / Hiver ? 

 

Par avance merci de votre retour. 

--[[
%% autostart
%% properties
%% globals
--]]
 
function check()
  -- récupération table Date
  local dt = os.date("*t");
  -- création de la chaîne pour affichage
  local display = dt.hour..":"..dt.min..":"..dt.sec.." Heure d'été -> "..tostring(dt.isdst);
  -- Sortie de la variable vers la fenêtre debug du HC2
  -- false pour hiver, true pour été
  fibaro:debug(display);
  -- mise à  jour de la variable
  if (dt.isdst) then
    fibaro:setGlobal("Saison", "Eté");
  else
    fibaro:setGlobal("Saison","Hiver");
  end
end
 
local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
  while true do
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
    if ( ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "04:15") )) then
          check();
    end  
    fibaro:sleep(60*1000);
  end
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if (startSource["type"] == "other") then
    check();
  end
end
Lien vers le commentaire
Partager sur d’autres sites

Si c'est du Krikoff ça ne peut que fonctionner !!! :D

 

Par contre, je ne sais pas pourquoi il teste à  4h15, mais pourquoi pas ...

 

De même le changement d'heure ayant lieu le dimanche matin, on peut simplifier le test

    if ( ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "04:15") )) then

en

    if ( currentDate.wday == 1  and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "04:15") then
Lien vers le commentaire
Partager sur d’autres sites

ok, je crois que l'heure c'est parce que le changement d'heure à  lieu à  3h00 du matin donc, par précaution il le lance à  4H15. 

Je remplace les lignes si dessus et le script ce lancera tous les jours à  4h15 et ma variable "Saison" sera à  jour, et donc mes scènes avec la variable "Été ou Hiver"  ce déclencheront normalement.

 

Je vais tester çà . j'espère que je tiens le bon bout. :D.

Lien vers le commentaire
Partager sur d’autres sites

Bin après une semaine de test, très concluant....ts fonctionne correctement Scéne LUA avec mes variables ainsi que les scènes en mode bloc utilisant les variables. Donc sujet clos. 

 

Merci encore pour vos aides. Et bonnes vacances pour ceux qui partent en juillet. 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Salut. Je relance ce post.

Voilà, j'ai créé une scène avec les deux variables comme précisé plus haut mais lorsque que la scène se déclenche il me dit que je suis en été et non en hiver. J'ai du louper quelques chose, mais quoi?

Le code est identique àla source donc pas de modification de ma part, mise àpart la correction apporté par Berale24.

Lien vers le commentaire
Partager sur d’autres sites

@Berale24.Ok. Je n'avais pas pris en compte la date de changement d'heure.

@mprinfo. Je suis du même avis que toi. Pas pratique àutiliser surtout en cette période. J'ai voulu mettre mon chauffage dessus et utiliser la fonction Eté/Hiver afin d'éviter une utilisation àla mauvaise période. Et comme on est encore en "Eté", le chauffage ne se déclenche pas... surtout qu'il commence àfaire froid en ce moment.

Envoyé de mon iPhone en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...