Creation d'un timer modifiable facilement

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Creation d'un timer modifiable facilement

Message par Keros »

Et si tu remplaçais ton compteur virtuel par un dimmer ... :? ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
quady42
Messages : 164
Inscription : 11 sept. 2016, 18:30

Re: Creation d'un timer modifiable facilement

Message 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 :) )
Domoticz 2024.7 - Raspberry PI3+Pi0w2 - RFXtrx433E - Clé 3G - téléinfo - alhau
SOMFY RTS/IO - wemos D1 mini ESPeasy et Tasmota
Sonoff sous Tasmota/EspEasy : basic - S20 - Dual R2 - Pro 4 CH - Pro 4 Ch R2
Zigbee2MQTT: Températures - Incendie - fuite d'eau
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Creation d'un timer modifiable facilement

Message 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é.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
quady42
Messages : 164
Inscription : 11 sept. 2016, 18:30

Re: Creation d'un timer modifiable facilement

Message par quady42 »

dans le cas du compteur je suis bien :
domo2.PNG
domo2.PNG (23.4 Kio) Consulté 4980 fois
Domoticz 2024.7 - Raspberry PI3+Pi0w2 - RFXtrx433E - Clé 3G - téléinfo - alhau
SOMFY RTS/IO - wemos D1 mini ESPeasy et Tasmota
Sonoff sous Tasmota/EspEasy : basic - S20 - Dual R2 - Pro 4 CH - Pro 4 Ch R2
Zigbee2MQTT: Températures - Incendie - fuite d'eau
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: Creation d'un timer modifiable facilement

Message 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
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
quady42
Messages : 164
Inscription : 11 sept. 2016, 18:30

Re: Creation d'un timer modifiable facilement

Message 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
Domoticz 2024.7 - Raspberry PI3+Pi0w2 - RFXtrx433E - Clé 3G - téléinfo - alhau
SOMFY RTS/IO - wemos D1 mini ESPeasy et Tasmota
Sonoff sous Tasmota/EspEasy : basic - S20 - Dual R2 - Pro 4 CH - Pro 4 Ch R2
Zigbee2MQTT: Températures - Incendie - fuite d'eau
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: Creation d'un timer modifiable facilement

Message 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.
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Creation d'un timer modifiable facilement

Message 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
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
quady42
Messages : 164
Inscription : 11 sept. 2016, 18:30

Re: Creation d'un timer modifiable facilement

Message 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...
Domoticz 2024.7 - Raspberry PI3+Pi0w2 - RFXtrx433E - Clé 3G - téléinfo - alhau
SOMFY RTS/IO - wemos D1 mini ESPeasy et Tasmota
Sonoff sous Tasmota/EspEasy : basic - S20 - Dual R2 - Pro 4 CH - Pro 4 Ch R2
Zigbee2MQTT: Températures - Incendie - fuite d'eau
Répondre