Aller au contenu

Télécomande Cumulus


Edouard

Messages recommandés

Bonjour,

 

Je souhaite piloter mon cumulus sur lequel j'ai branché un wallplug.

Il fonctionne aujourd'hui en heures creuses suivant une scène chaque jour.

 

J'ai mis un bouton de forçage pour les jours où nous sommes plus nombreux à  la maison.

Ca, ça marche ! 

 

post-853-0-72949600-1407172012_thumb.jpg

 

Quand je pars plusieurs jours, je souhaite éteindre mon cumulus pour qu'il redémarre juste avant mon retour.

Pour ça, j'ai besoin d'afficher la date et heure du jour (maintenant) et la date et heure de mon retour (je reviens).

 

+/-1 jours et +/- 1 heure s'ajoutent à  la date du jour pour faire la date de retour.

 

"envoyer" valide l'arrêt.

 

j’espère que cela vous donnera des idées !

Votre aide sera la bienvenue !! ;)

 

Edouard 

Lien vers le commentaire
Partager sur d’autres sites

Imaginons que ton label "Maintenant" s'appelle Label1 et que "Je reviens" s'appelle Label2 

 

Pour afficher la date et heure dans Label1 :

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date("%d.%m.%y - %H:%M"))

+1 jours dans Label2

local unJourDePlus = os.time()+24*60*60;
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(unJourDePlus, "%d.%m.%y - %H:%M"))

+1 heure dans Label2

local uneHeureDePlus = os.time()+60*60;
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(uneHeureDePlus, "%d.%m.%y - %H:%M"))

 

Allez, on commence sérieusement :

 

Va dans le panneau des variables et ajoute 2 variable "RETOUR_TEMP" et "RETOUR". RETOUR_TEMP sera utilisé pour faire les calculs et RETOUR pour stocker la vrai date de retour souhaitée.

 

Dans le main loop de ton module virtuel, met :

-- on affiche la date et l'heure dans Label1
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", os.date("%d.%m.%y - %H:%M"))

.

Derrière le bouton +1 Jour

-- On va chercher le contenu de la variable global utilisée pour les calculs
local retour_temp = fibaro:getGlobalValue("RETOUR_TEMP");

-- si la variable est nul, on met 0
if (retour_temp == nil) then 
   retour_temp = 0;
end

-- On ajout 1 jours (24 heures * 60 minutes * 60 secondes) 
local decalage = retour_temp + 24*60*60;
-- La nouvelle date est donc "maintenant" + le décalage calculé
local nouvelleDate = os.time() + decalage;
-- On affiche la date de retour dans Label2
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(nouvelleDate, "%d.%m.%y - %H:%M"))

-- On stocke le décalage calculer dans la variable de calcul
fibaro:setGlobal("RETOUR_TEMP", decalage);

.

Derrière le bouton -1 jour (idem que précédemment mais avec un -)

local retour_temp = fibaro:getGlobalValue("RETOUR_TEMP");

if (retour_temp == nil) then 
   retour_temp = 0;
end

local decalage = retour_temp - 24*60*60;
local nouvelleDate = os.time() + decalage;
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(nouvelleDate, "%d.%m.%y - %H:%M"))

fibaro:setGlobal("RETOUR_TEMP", decalage);

.

Derrière le bouton +1 heure  (idem que précédemment mais avec 24 en moins)

local retour_temp = fibaro:getGlobalValue("RETOUR_TEMP");

if (retour_temp == nil) then 
   retour_temp = 0;
end

local decalage = retour_temp + 60*60;
local nouvelleDate = os.time() + decalage;
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(nouvelleDate, "%d.%m.%y - %H:%M"))

fibaro:setGlobal("RETOUR_TEMP", decalage);

.

Derrière le bouton - 1 heure

local retour_temp = fibaro:getGlobalValue("RETOUR_TEMP");

if (retour_temp == nil) then 
   retour_temp = 0;
end

local decalage = retour_temp - 60*60;
local nouvelleDate = os.time() + decalage;
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", os.date(nouvelleDate, "%d.%m.%y - %H:%M"))

fibaro:setGlobal("RETOUR_TEMP", decalage);

.

Et derrière le bouton "Enregistrer"

local retour_temp = fibaro:getGlobalValue("RETOUR_TEMP");
if (retour_temp == nil) then
   retour_temp = 0;
end
local nouvelleDate = os.time() + retour_temp;
fibaro:setGlobal("RETOUR", nouvelleDate);

Voilà  ... oucchhh, ce fut long.

 

C'est surtout absolument pas tester, il faut donc le voir comme un code "qui devrait fonctionner" et non pas comme une garantie. Donc dans le principe, à  la fin de tout cela, tu devrais avoir dans la variable global "RETOUR" la nouvelle date et heure de retour.

 

Allez courage :) Je parie que tu t'attendais à  un truc plus simple.

 

 

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

Bonjour Steven,

 

Je vois que l'on rentre dans la vrais programmation et c'est ça que j'aime. :)

Tes explications me semblent très claires.

Merci bien !

Je vais l'essayer et je t'en dirai des nouvelles.

Bonne journée à  toi !

 

Edouard 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour Steven,

 

J'ai essayer ton programme il me semble qu'à  l'endroit de l'addition ça coince 

J'ai essayer de trouver la solution en faisant un programme plus simple que avec le Main Loop.

 

Ce programme donne la valeur de la date dans label 1"maintenant" (ça,ça marche) et normalement donne la valeur de la date + 1 heure dans label 2 "je reviens" (et cela ne marche pas ) :(

 

 
--[[
%% properties
%% globals
--]]
-- on affiche la date et l'heure dans Label1
local label1 =fibaro:getGlobalValue("LABEL1");
local label1 = os.date("%d.%m.%y - %H:%M")
fibaro:setGlobal("LABEL1",label1)
fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label1.value",label1)
fibaro:debug(label1.." voila");


local label2=fibaro:getGlobalValue("LABEL2");
local decalage=fibaro:getGlobalValue("DECALAGE");
local decalage=os.time()+60*60
local label2=label1 + decalage;
fibaro:setGlobal("DECALAGE",decalage);
fibaro:setGlobal("LABEL2",label2);
fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label2.value",label2)
fibaro:debug(label2.." voici");
fibaro:debug(decalage.." cela");
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...