Page 2 sur 2

Re: Creation d'un timer modifiable facilement

Publié : 06 juil. 2020, 18:29
par Keros
Et si tu remplaçais ton compteur virtuel par un dimmer ... :? ;)

Re: Creation d'un timer modifiable facilement

Publié : 06 juil. 2020, 19:03
par quady42
Keros a écrit : 06 juil. 2020, 18:29 Et si tu remplaçais ton compteur virtuel par un dimmer ... :? ;)
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 :) )

Re: Creation d'un timer modifiable facilement

Publié : 06 juil. 2020, 21:13
par Keros
C'est vrai que l'affichage n'est pas le même. Malheureusement, je ne pense pas que l'on puisse spécifier l'unité.

Re: Creation d'un timer modifiable facilement

Publié : 06 juil. 2020, 21:20
par quady42
dans le cas du compteur je suis bien :
domo2.PNG
domo2.PNG (23.4 Kio) Consulté 4983 fois

Re: Creation d'un timer modifiable facilement

Publié : 11 juil. 2020, 21:09
par balajol
quady42 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

Code : 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
Et désormais ça fonctionne bon je pense que ce même code pourrait être "condensé" mais bon on verra plus tard :)
Bonsoir quady42
Quel type de compteur utilise tu ?
Merci
Cdt
Bertrand

Re: Creation d'un timer modifiable facilement

Publié : 11 juil. 2020, 22:00
par quady42
Tu crées un capteur virtuel dummy
Et ensuite tu choisies "compteur"
Une fois le capteur créé tu va dessus dans l'onglet mesure tu faits modifier et tu remplace energy par time

Re: Creation d'un timer modifiable facilement

Publié : 12 juil. 2020, 00:11
par balajol
Re,
C'est bien ce que j'ai fait :?
Mon compteur affiche des points d'interrogation .. J'ai du faire une erreur en adaptant les noms :oops:
Merci
B.

Re: Creation d'un timer modifiable facilement

Publié : 12 juil. 2020, 08:00
par denis_brasseur
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 :)
Tu dois pouvoir simplifier ton code de cette manière, en conservant évidement tes fonctions :

Le principe est de boucler sur un tableau comportant les valeurs de 1 à 12, afin de ne pas avoir 12 conditions dans ton code.

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

Re: Creation d'un timer modifiable facilement

Publié : 13 juil. 2020, 13:56
par quady42
Bonjour,

Effectivement le code est largement réduit...

Merci pour ta solution, je regarderai dans la semaine lorsque je serai rentré à la maison...