Re: Creation d'un timer modifiable facilement
Publié : 06 juil. 2020, 18:29
Et si tu remplaçais ton compteur virtuel par un dimmer ...

Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
mon père est un peu pénible et le dimmer va être en 0/100% et mon père veux des heures toutes simples (j'ai réussi a faire passer le dixième d'heure ... c'est déjà pas mal
Bonsoir quady42quady42 a écrit : 06 juil. 2020, 13:28 Bon finalement je me répond à moi même...
J'ai créer un autre script en // du 1er pour indiquer le temps restant dans un compteur virtuel
Et désormais ça fonctionne bon je pense que ce même code pourrait être "condensé" mais bon on verra plus tardCode : Tout sélectionner
------------------- -------------------- -- Fonction différence de temps -- ------------------- -------------------- function timedifference (s) year = string.sub(s, 1, 4) month = string.sub(s, 6, 7) day = string.sub(s, 9, 10) hour = string.sub(s, 12, 13) minutes = string.sub(s, 15, 16) seconds = string.sub(s, 18, 19) t1 = os.time() t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds} difference = os.difftime (t1, t2) return difference end -------------------------------------------------------------------------------------------------------- ------------------- -------------------- -- Fonction arrondir à deux décimales -- ------------------- -------------------- -- Le chiffre"x" (dec or x) correspond au nombre de décimales à prendre en compte dans le resultat function arrondir(num, dec) if num == 0 then return 0 else local mult = 10^(dec or 2) return math.floor(num * mult + 0.5) / mult end end --------------------------------------------------------------------------------------------------------- commandArray = {} if otherdevices['Pompe onzion'] == 'On' then if(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '1h') then temps_en_heures = ((60-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 1h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 121 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '2h') then temps_en_heures = ((120-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 2h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '3h') then temps_en_heures = ((180-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 3h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '4h') then temps_en_heures = ((240-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 4h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '5h') then temps_en_heures = ((300-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 5h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '6h') then temps_en_heures = ((360-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 6h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '7h') then temps_en_heures = ((420-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 7h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '8h') then temps_en_heures = ((480-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 8h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '9h') then temps_en_heures = ((540-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 9h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '10h') then temps_en_heures = ((600-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 10h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '11h') then temps_en_heures = ((660-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondiarrondir(temps_en_heures,1) print ('temps restant sur 11h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == '12h') then temps_en_heures = ((720-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60) temps_en_heures_arrondi=arrondir(temps_en_heures,1) print ('temps restant sur 12h='..temps_en_heures_arrondi) -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi) elseif(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 and otherdevices['Temps de fonctionnement onzion inter'] == 'Off') then temps_en_heures = 0 print ('Pompe Onzion en Marche Forcée') -- Envoi de la valeur dans le compteur "idx125" -- commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures) end end return commandArray![]()
Tu dois pouvoir simplifier ton code de cette manière, en conservant évidement tes fonctions :quady42 a écrit : 06 juil. 2020, 13:28
Et désormais ça fonctionne bon je pense que ce même code pourrait être "condensé" mais bon on verra plus tard![]()
Code : Tout sélectionner
local maTableHeure = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
commandArray = {}
if otherdevices['Pompe onzion'] == 'On' then
if(timedifference(otherdevices_lastupdate['Pompe onzion']) > 0 then
for key, valeur in pairs(maTableHeure) do
if otherdevices['Temps de fonctionnement onzion inter'] == valeur..'h' then
temps_en_heures = (((valeur * 60)-(timedifference(otherdevices_lastupdate['Pompe onzion'])/60))/60)
temps_en_heures_arrondi=arrondir(temps_en_heures,1)
print ('temps restant sur ..'valeur..' h='..temps_en_heures_arrondi)
-- Envoi de la valeur dans le compteur "idx125" --
commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures_arrondi)
elseif otherdevices['Temps de fonctionnement onzion inter'] == 'Off' then
temps_en_heures = 0
print ('Pompe Onzion en Marche Forcée')
-- Envoi de la valeur dans le compteur "idx125" --
commandArray['UpdateDevice'] = 125 .. '|0|' .. tostring(temps_en_heures)
end
end
end
end
return commandArray