Page 1 sur 2
Calcul temps de fonctionnement chauffage
Publié : 26 sept. 2016, 22:36
par konix
Salut à tous,
Je cherche à remonter le cumul du temps de fonctionnement de ma chaudière.
Pour ce faire, j'ai déjà le chauffage qui est gérer dans Domoticz, donc l'idée c'est de compteur toute les minutes dans un script lua "time" si mon switch chauffage ON est à un et transférer tout cela dans un Custom sensor en Minutes.
Auriez vous une idée pour réaliser un script lua ou des sources que je puisse m'inspirer ?
Merci d'avance.
Re: Calcul temps de fonctionnement chauffage
Publié : 26 sept. 2016, 23:47
par thier
Je le fais en faisant évoluer d'une minute une user variable associée à chaque convecteur. tu remplaces usageradiateursalon > 100 par la détection de ton switch chauffage ON
Je te mets deux extraits de mon script pour expliquer le principe
Code : Tout sélectionner
-----------------------------------------------------------------------------------------------------
-- radiateur salon-------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
if (usageradiateursalon > 100) then
commandArray['Variable:chronochauffagesalon']= tostring(uservariables["chronochauffagesalon"] +1)
--chrono1 est la durée quotidienne de fonctionnement du radiateur
chrono1 = tostring(uservariables["chronochauffagesalon"])
-- chrono11 est le calcul en pourcent de la durée de fonctionnement du convecteur
chrono11 = arrondir ((tostring(uservariables["chronochauffagesalon"])*100/((tonumber(os.date("%H"))*60)+(tonumber(os.date("%M"))))),2)
commandArray[8]={['UpdateDevice'] = '139|1|'..chrono1..' mn soit ' ..chrono11..' °/o'} -- renseigne le virtuel text calcul de durée quotidienne du chauffage
end
pour faire le calcul arrondi de chrono11 il faut mettre dans le script
Code : Tout sélectionner
-- Fonction Arrondir à deux décimales
function arrondir(num, dec)
if num == 0 then
return 0
else
local mult = 10^(dec or 0)
return math.floor(num * mult + 0.5) / mult
end
end
ensuite je fais la remise à zéro au changement de jours (autre user variable à gérer "aujourd'hui1")
Code : Tout sélectionner
if (jour ~= uservariables["aujourdhui1"]) then
commandArray ['Variable:chronochauffagesalon'] = '0' --raz de la variable utilisateur de la durée quotidienne du chauffage salon
commandArray[2]={['UpdateDevice'] = '139|1|0 mn soit 0 °/o'} -- raz du virtuel text calcul de durée quotidienne du chauffage
commandArray[7]={['Variable:aujourdhui1']= jour}
Re: Calcul temps de fonctionnement chauffage
Publié : 27 sept. 2016, 07:02
par konix
Merci pour ton retour.
Je viens de faire l'essai, j'arrive bien à remonter mon compteur dans ma variable User dans Domoticz, mais j'ai encore des erreurs pour la remonté dans mon Custom Counter.
Peut tu mexpliquer à quoi correspond le 8 dans l'argument commandArray ?
Code : Tout sélectionner
commandArray[8]{['UpdateDevice'] = conso_id..chrono1..' mn soit ' ..chrono11..' °/o'} -- renseigne le virtuel text calcul de durée quotidienne du chauffage
Mon compteur à comme IDX le numéro 34, et conso_id est égal à (local conso_id = 34 -- idx du capteur virtuel de durée de fonctionnement)
Dans ton exemple tu utilise un virtuel text et moi j'aimerai un custom Counter.
Merci d'avance.
Re: Calcul temps de fonctionnement chauffage
Publié : 27 sept. 2016, 15:31
par konix
J'ai réussi à faire remonter mes infos dans mon compteur virtuel, merci beaucoup.
J'ai juste encore un problème pour remettre à zéro ma variable aujourd'hui.
Peux tu m'expliquer quel est le format de la variable interne de aujourdhui ?
Entier, Décimal, Chaine,Date ou Heure ?
Et comment tu renseigne ta variable Jour ?
Merci d'avance.
Re: Calcul temps de fonctionnement chauffage
Publié : 27 sept. 2016, 20:01
par thier
La variable aujourdhui1 est de type chaine. Elle est éditée en tête de script par " local jour = os.date("%A") "
Quand tu démarres pour la première fois le script tu mets le jour en cours dans la variable.
Ensuite la mise à jour se fait par "if (jour ~= uservariables["aujourdhui1"]) then" qui à minuit donne "jour" différent de "aujourdhui1" donc exécute les opérations.
A la fin des opérations tu mets à jours la variable aujourdhui1 par "commandArray[7]={['Variable:aujourdhui1']= jour}."
Les chiffres entre crochets, par exemple [7], sont là car c'est la seule façon de mettre à jour plusieurs fois consécutivement le même objet dans un même script.
Re: Calcul temps de fonctionnement chauffage
Publié : 03 oct. 2016, 13:09
par konix
Merci pour ton aide.
Mon script fonctionne parfaitement comme je le voulais maintenant.
Je remonte le temps de fonctionnement de ma chaudière en minutes dans un compteur Incrémental.
Je vous dépose mon script pour inspiration.
Code : Tout sélectionner
-- Ce script permet de remonter la durée de fonctionnement de la chaudière dans un capteur virtuel de type "Counter Incremental"
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = 'test' -- Nom de l'interrupteur virtuel Chauffage dans Domoticz
local counter = 38 -- Numéro idx du Counter Incremental dans Domoticz
local current_date = (os.date("%d/%m/%Y")) -- Date courante
local current_heure = (os.date("%X")) -- 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:Total_compteur']= tostring(uservariables["Total_compteur"] +1)
end
-- Envoi de la varaible valeur Total_compteur dans le Custom Counter Valeur_Compteur --
Valeur_Compteur = tostring(uservariables["Total_compteur"])
-- 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("")
print("Cumul du temps de fonctionnement du chauffage "..Valeur_Compteur.." Minutes".." // "..math.floor((Valeur_Compteur/60)).. " Heures")
print("")
end
return commandArray
Re: Calcul temps de fonctionnement chauffage
Publié : 27 oct. 2016, 18:34
par deennoo
Merci les gars pour les bouts de scripts qui m'ont bien aider !
Re: Calcul temps de fonctionnement chauffage
Publié : 28 oct. 2016, 09:37
par patoche
Merci pour ce script, que je vais essayer très prochainement.
Avec une chaudière fioul connaissant le débit du gicleur en Gallon/ heure, on peut estimer la conso de fioul assez facilement j'imagine.
Re: Calcul temps de fonctionnement chauffage et consommation
Publié : 02 nov. 2016, 19:18
par patoche
Voici une petite variante. Merci aux prédécesseurs qui ont fait le gros du boulot.
Code : 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 Incremental".
-- A enregistrer en script_time.lua
--Créer une uservariable. Réglage /plus d'option / Variable utilisateur. Nommé "Total_compteur"
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = '3B-chauffage' -- Nom de l'interrupteur virtuel Chauffage dans Domoticz
local counter = 474 -- Numéro idx du Counter Incremental dans Domoticz Conso Fioul
local current_date = (os.date("01/11/2016")) -- Date courante
local current_heure = (os.date("20:08")) -- Heure courante
--------------------------------
-- Fin des variables à éditer --
--------------------------------
--------------------------------
---Paramètres--
----------------------------------
Debit_gicleur = 0.60 --Gallon/heure
Conv_Gallon = 3.78541178 --Litres
Debit_gicleur_l_min = Debit_gicleur * Conv_Gallon / 60 -- En litres/min
Var_ajustement = 0.9 --Ajustement entre circulateur ON et chaudière ON
-------------------
-- 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:Total_compteur']= tostring(uservariables["Total_compteur"] +1)
end
-- Envoi de la variable valeur Total_compteur dans le Custom Counter Valeur_Compteur en min--
Valeur_Compteur = tostring(uservariables["Total_compteur"])
-- 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 du temps de fonctionnement du chauffage "..Valeur_Compteur.." Minutes".." // "..math.floor((Valeur_Compteur/60)).. " Heures")
print("")
print("Cumul Litres fioul "..Litre_Compteur.." Litres")
print("")
end
return commandArray
Re: Calcul temps de fonctionnement chauffage
Publié : 30 déc. 2016, 15:08
par limonade67
Merci pour le script.
Je l'ai recopié tel quel dans l'éditeur Lua de Blocly.
Par contre, mon matériel virtuel 3b-chauffage reste à zéro.
Dans les Log, j'ai bien la ligne :
EventSystem: Script event triggered: chauffage
La variable Total_compteur doit elle être de type entier ou décimal ?
J'ai un émetteur Dio qui allume ou éteint un interrupteur appelé "chaudière".
Je ne comprends pas trop où dans le script il faut faire le lien entre ma "chaudière" et le dummy "3b-chauffage".
Merci pour l'aide.