modification uservariable

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
mauk59
Messages : 7
Inscription : 16 janv. 2017, 07:45

modification uservariable

Message par mauk59 »

Bonjour,

Je voudrais automatiser le lancement de ma cafetière en fonction de l'heure de mon réveil stocké dans une variable.

Je récupère l'heure de mon réveil dans ma variable Recup_alarme sour le format HH:MM. J'aimerai pouvoir faire un calcul sur cette variable.
Par exemple si la variable est de 07:00, je voudrais pouvoir lui retirer 15mn.

Je débute sur les langages Lua, donc je veux bien un petit peu d'aide :-)

Merci pour votre aide précieuse !

Mauk
P.S. peut être que ce n'est pas en LUA qu'il faut le faire ?
Domoticz sur un Asustor AS5002T
J.M.B
Messages : 67
Inscription : 26 déc. 2017, 15:43

Re: modification uservariable

Message par J.M.B »

Bonjour,

Voici 2 fonctions à intégrer à ton script pour calculer une somme ou une différence :

Code : Tout sélectionner

-------------------------------------------------------------------------------
--Fonction qui calcule et retourne la somme des horaires H1 et H2  (format string  'hh:mm') 
-------------------------------------------------------------------------------

function SumTime(H1,H2)
    local h1, h2, m1, m2 = string.sub(H1,1,2), string.sub(H2,1,2), string.sub(H1,4,5), string.sub(H2,4,5)
    local t = tonumber(h1)*60 + tonumber(h2)*60 + tonumber(m1) + tonumber(m2)
    local h, m = math.floor(t/60), math.fmod(t, 60)
	if h>=24 then
	    h=h-24
	end
    local H, M = tostring(h), tostring(m)
    
    if h<10 then
        H = '0'..H
    end
    
   if m < 10 then
       M = '0'..M
   end
   
    return H..':'..M

end



-------------------------------------------------------------------------------
--Fonction qui calcule et retourne la différence (H1 - H2)  des horaires H1 et H2  (format string  'hh:mm') 
-------------------------------------------------------------------------------

function DiffTime(H1,H2)
    local h1, h2, m1, m2 = string.sub(H1,1,2), string.sub(H2,1,2), string.sub(H1,4,5), string.sub(H2,4,5)
    local t = tonumber(h1)*60 - tonumber(h2)*60 + tonumber(m1) - tonumber(m2)
    local h, m = math.floor(t/60), math.fmod(t, 60)
    local H, M = tostring(h), tostring(m)
    
    if h<10 then
        H = '0'..H
    end
    
   if m < 10 then
       M = '0'..M
   end
   
    return H..':'..M

end


Bonne journée.
mauk59
Messages : 7
Inscription : 16 janv. 2017, 07:45

Re: modification uservariable

Message par mauk59 »

Bonjour,

Merci pour ton retour.

alors je suis vraiment débutant, du coup ma variable recup_alarme je la mets à quel endroit? et comment je spécifie ce que je veux retrancher (15mn)?

merci :-)

Mauk
Domoticz sur un Asustor AS5002T
J.M.B
Messages : 67
Inscription : 26 déc. 2017, 15:43

Re: modification uservariable

Message par J.M.B »

Bonjour,

Les 2 fonctions sont à intégrer au tout début du script.

Ensuite pour faire le calcul tu appelles la fonction avec les bons paramètres.
Par exemple pour enlever 15 min à ta variable recup_alarme :

Code : Tout sélectionner

recup_alarme = DiffTime(recup_alarme,"00:15")
ou si uservariable :

Code : Tout sélectionner

commandArray[#commandArray+1]={['Variable:recup_alarme']=DiffTime(uservariable['recup_alarme'],"00:15")}
Bon codage.
Répondre