De plus ta solution me donnera une valeur à la minute prêt, pas de précision à la seconde. Pour du chauffage c'est amplement suffisant tu vas me dire


Code : Tout sélectionner
commandArray = {}
if (devicechanged['TEST1'] == 'On') then
commandArray[1]={['Variable:compteurchauffage1'] = tostring(os.time())}
else if (devicechanged['TEST1'] == 'Off')
then
-- DERNIER CYCLE CHAUFFE --
-- on calcule la durée du dernier cycle
derniercyclechauffe = os.date("!%X",os.time() - tostring(uservariables["compteurchauffage1"]))
print('Durée du dernier cycle de chauffe : ' .. derniercyclechauffe)
--on met à jour le compteur "durée dernier cycle"
commandArray[1]={['UpdateDevice'] = 196 .. '|0|' .. derniercyclechauffe}
-- TOTAL CHAUFFE JOURNEE --
-- on calcule la durée totale journaliere
totalcyclechauffe = os.date("!%X",tostring(uservariables["compteurchauffage2"]) + (os.time() - tostring(uservariables["compteurchauffage1"])))
print('Durée total des cycles de chauffe : ' .. totalcyclechauffe)
-- on incrémente la variable de durée journalière
commandArray[2]={['Variable:compteurchauffage2'] = tostring(tonumber(uservariables["compteurchauffage2"]) + (os.time()) - (uservariables["compteurchauffage1"]))}
-- on met à jour le compteur "durée journalière"
commandArray[3]={['UpdateDevice'] = 197 .. '|0|' .. totalcyclechauffe}
end
end
return commandArray
Code : Tout sélectionner
commandArray[1]={['UpdateDevice'] = 196 .. '|0|' .. derniercyclechauffe}Code : Tout sélectionner
commandArray['UpdateDevice']='idx|nValue|sValue' -- for updating Dummy devices e.g. '96|0|Hello World'commandArray[#commandArray+1]={['UpdateDevice'] = '196|0|' .. derniercyclechauffe}
Code : Tout sélectionner
commandArray[1]={['Variable:compteurchauffage1'] = tostring(os.time())}Code : Tout sélectionner
derniercyclechauffe = os.date("!%X",os.time() - tostring(uservariables["compteurchauffage1"]))Code : Tout sélectionner
commandArray[2]={['Variable:compteurchauffage2'] = tostring(tonumber(uservariables["compteurchauffage2"]) + (os.time()) - (uservariables["compteurchauffage1"]))}Code : Tout sélectionner
-- Ce script Time permet de remonter la durée de fonctionnement de la chaudière dans un capteur virtuel de type "Counter"
-- « Counter Incremental » pour les anciennes versions de Domoticz
-- A enregistrer en script_time.lua
-- Créer une uservariable. Réglage /plus d'option / Variable utilisateur. Nommé "Total_compteur"
-- Créer un compteur « Brûleur » et relever son idx
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = 'Chauffage' -- Nom de l'interrupteur virtuel Chauffage dans Domoticz
local counter = 922 -- Numéro idx du Counter « Brûleur » dans Domoticz
local current_date = (os.date("29/12/2020")) -- Date courante
local current_heure = (os.date("19:30")) -- Heure courante
--------------------------------
-- Fin des variables à éditer --
--------------------------------
-------------------
-- Fonction time --
-------------------
time = os.date("*t")
function timedifference(d)
s = otherdevices_lastupdate[d]
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 = {}
-----------------------------------------------------------------------------------------------------
--------------------Calcul du temps de fonctionnement de la chaudière -------------------------------
-----------------------------------------------------------------------------------------------------
-- Si chauffage ON incrémentation de la variable Domoticz "Total_compteur" --
if (otherdevices[switch]=='On') then
commandArray['Variable:Bruleur']= tostring(uservariables["Bruleur"] +1)
end
-- Envoi de la varaible valeur Total_compteur dans le Custom Counter Valeur_Compteur --
Valeur_Compteur = tostring(uservariables["Bruleur"])
-- Envoi de la valeur dans le compteur "counter" --
commandArray['UpdateDevice'] = counter .. '|0|' .. tostring(Valeur_Compteur)
-- Envoi des informations dans le LOG si chauffage ON --
if (otherdevices[switch]=='On') then
print("Cumul du temps de fonctionnement du brûleur "..Valeur_Compteur.." Minutes")
end
return commandArrayCode : Tout sélectionner
-- Ce script permet de remonter une estimation de la consommation en fioul de la chaudière dans un capteur virtuel de type "Counter"
-- « Counter Incremental » pour les anciennes versions de Domoticz
-- A enregistrer en script_time.lua
-- Créer une uservariable. Réglage /plus d'option / Variable utilisateur. Nommé "Total_mazout"
-- Créer un compteur « Consommation mazout » et relever son idx
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = 'Chauffage' -- Nom de l'interrupteur virtuel Chauffage dans Domoticz
local counter = 923 -- Numéro idx du Counter « Consommation mazout » dans Domoticz
local current_date = (os.date("29/12/2020")) -- Date courante
local current_heure = (os.date("17:19")) -- Heure courante
--------------------------------
-- Fin des variables à éditer --
--------------------------------
--------------------------------
---Paramètres--
----------------------------------
Debit_gicleur = 0.85 --Gallon/heure
Conv_Gallon = 3.78541178 --Litres
Debit_gicleur_l_min = Debit_gicleur * Conv_Gallon / 60 -- En litres/min
Var_ajustement = 1 --Ajustement chaudière ON 3.2176 l/h
-------------------
-- Fonction time --
-------------------
time = os.date("*t")
function timedifference(d)
s = otherdevices_lastupdate[d]
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 = {}
-----------------------------------------------------------------------------------------------------
--------------------Calcul du temps de fonctionnement de la chaudière -------------------------------
-----------------------------------------------------------------------------------------------------
-- Si chauffage ON incrémentation de la variable Domoticz "Total_mazout" --
if (otherdevices[switch]=='On') then
commandArray['Variable:Total_mazout']= tostring(uservariables["Total_mazout"] +1)
end
-- Envoi de la variable valeur Total_compteur dans le Custom Counter Valeur_Compteur en min--
Valeur_Compteur = tostring(uservariables["Total_mazout"])
-- Transforme Valeur_compteur en litre pour gicleur 0.6 gallon/heure
Litre_Compteur = (Valeur_Compteur )* (Debit_gicleur_l_min)*(Var_ajustement)
-- Envoi de la valeur dans le compteur "counter" --
commandArray['UpdateDevice'] = counter .. '|0|' .. tostring(Litre_Compteur)
-- Envoi des informations dans le LOG si chauffage ON --
if (otherdevices[switch]=='On') then
print("")
print("Cumul Litres fioul "..Litre_Compteur.." Litres")
print("")
end
return commandArrayCode : Tout sélectionner
Error: EventSystem: commandArray in script /home/domoticz/domoticz/scripts/lua/script_device_temps_chauffage.lua should only return ['string']='actionstring' or [integer]={['string']='actionstring'}
Code : Tout sélectionner
commandArray = {}
if (devicechanged['TEST1'] == 'On') then
commandArray[1]={['Variable:compteurchauffage1'] = tostring(os.time())}
else if (devicechanged['TEST1'] == 'Off')
then
-- DERNIER CYCLE CHAUFFE --
-- on calcule la durée du dernier cycle
derniercyclechauffe = os.date("!%X",os.time() - uservariables["compteurchauffage1"])
print('Durée du dernier cycle de chauffe : ' .. derniercyclechauffe)
--on met à jour le compteur "durée dernier cycle"
commandArray[1]={['UpdateDevice'] = '196|0|'.. derniercyclechauffe}
-- TOTAL CHAUFFE JOURNEE --
-- on calcule la durée totale journaliere
totalcyclechauffe = os.date("!%X",uservariables["compteurchauffage2"] + (os.time() - uservariables["compteurchauffage1"]))
print('Durée total des cycles de chauffe : ' .. totalcyclechauffe)
-- on incrémente la variable de durée journalière
--commandArray[2]={['Variable:compteurchauffage2'] = tostring(tonumber(uservariables["compteurchauffage2"]) + (os.time()) - (uservariables["compteurchauffage1"]))}
commandArray[2]={['Variable:compteurchauffage2'] = tostring(uservariables["compteurchauffage2"] + (os.time() - uservariables["compteurchauffage1"]))}
-- on met à jour le compteur "durée journalière"
commandArray[3]={['UpdateDevice'] = '197|0|'.. totalcyclechauffe}
end
end
return commandArray


C'est toi qui l'a fait : c'est ça le plus important