--[[
mon script permet le démarrage d'une pac air/eau, avec PV, si mes panneaux produisent alors le cumulus PAC
se lance, malgré que la température ne soit pas au minimum (thermostat) donc thermostat intégré mis au max,
et installation d'un thermcouple pour récupérer la temperature de l'eau, si j'aurai gardé le thermostat de base
mon cumulus se serait lancé qu'au minimum thermostat que avec le thermocouple je le lance même si la temperature
n'est pas au minimum.
--]]
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
--------------------------------
------ Start of edit section ------
--------------------------------
local PPMT = tonumber(otherdevices_svalues['PMAISON']) -- puissance utilisation maison
local PPAC = 1200 --puissance de ma pompe à chaleur approx
local PPST = tonumber(otherdevices_svalues['solaredgeP']) --puissance production solaire
local sonde = 'CUMULUStemp' --Nom de la sonde de température
local OnOff = 'regulationsol' --inter gestion soleil
local cumulus = 'CUMULUS' --Nom du contacte à allumer/éteindre
local debug = false -- false ou true
local PMax = 200 --non utilisé
local tempmaxsol = tonumber(otherdevices_svalues['thermostat cumulus mode normal'])-3 --thermostat mode normal
local tempmaxssol = tonumber(otherdevices_svalues['thermostat chauffe eau mode eco'])-2 --thermostat mode eco
local RAZ = 1
local temperature2 = 25 -- utilisation test
local hysteresisas = 3 -- hysteresis mode normal
local hysteresisss = 2 -- hysteresis mode eco
--------------------------------
-- End of edit section --
--------------------------------
commandArray = {}
if (devicechanged[sonde]) and (otherdevices[OnOff]=='On') then -- 3 variables à mettre
MONTETEMPvar = (uservariables['MONTETEMP']) + 1 - 1
MANQUESOLvar = (uservariables['MANQUESOL']) + 1 - 1
FORCAGEvar = (uservariables['FORCAGE']) + 1 - 1
local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée
if (otherdevices[OnOff]=='On') then -- si mon interrupteur est en on tout est ok pour démarrer cumulus
print ('-- régulation cumulus --')
if debug then
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
print ('température : ' .. temperature)
print ('Puissance cumulus : ' .. PPAC)
print ('Puissance limite : ' .. PMax)
print ('variable manque soleil : ' ..uservariables['MANQUESOL'])
print ('Puissance limite : ' .. PMax) --non utilisé
print ('mode normal : ' .. tempmaxsol)
print ('mode eco : ' .. tempmaxssol)
print ('valeur sortie mode eco : ' .. MONTETEMPvar)--variable pour atteindre temperature normal
end
print ('-- régulation chauffage actif --')
if (otherdevices[cumulus]=='Off') then
if (temperature < (tempmaxsol - hysteresisas) and (PPMT + PPAC) < PPST) then
--démarrage si soleil puissance panneau
print('Allumage du cumulus mode normal')
commandArray[cumulus]='On'
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
elseif (temperature < (tempmaxssol - hysteresisss) and (PPMT + PPAC) > PPST) then
--démarrage si eau température trop basse
print('Allumage du cumulus mode eco')
commandArray[cumulus]='On'
end
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='On') then
--temperature mode normal atteinte
print('température atteine')
print('Extinction cumulus')
commandArray['Variable:FORCAGE']= tostring(RAZ)
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
commandArray[cumulus]='Off'
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='Off') then
--ne ser pas vraiment
print('température atteine')
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') and (MANQUESOLvar > 20) and (FORCAGEvar > 2) and (temperature > (tempmaxssol + hysteresisss)) then
-- cumulus s'éteint en mode eco temperature mode sans soleil (tempmaxssol) valeur manque soleil dépasse les 20 et le forçage dépasse les 2
-- donc affiche le message plus bas mode eco actif et la variable MONTETEMP permet de relancer si le soleil revient pour atteindre la température normal
--coupe aussi le cumulus à 2°C de moins que la chauffe normal (je vais mettre une marge plus importante plus tard)
commandArray['Variable:MONTETEMP']= tostring(3)
commandArray[cumulus]='Off'
print('température réduite atteine')
print('Extinction cumulus')
elseif (MONTETEMPvar > 1) and (otherdevices[cumulus]=='Off' and (PPMT + PPAC) < PPST) then
-- remise en route si la température n'est pas atteinte la variable MONTETEMPvar sert à empécher cette commande de se lancer elle se remet à 0
--à la temperature atteindre mode normal
print('remise en route')
commandArray['Variable:MONTETEMP']=tostring(RAZ)
commandArray[cumulus]='On'
elseif (PPMT < PPST) and (otherdevices[cumulus]=='On') then
-- prévient que la pac marche et remet la variable manque soleil à 0
commandArray['Variable:MANQUESOL']= tostring(RAZ)
print('chauffe cumulus en route puissance en cours')
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT )
print ('Puissance soleil : ' .. PPST)
print ('Puissance soleil : ' .. tempmaxsol)
print ('Puissance soleil : ' .. hysteresisas)
--partie gestion manque soleil>>>>>>>>>>>>>>>>>>>>>>>>>>
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') then
if (MANQUESOLvar < 20) then
-- température max pendant 20 essaies
commandArray['Variable:MANQUESOL']= tostring(uservariables["MANQUESOL"] +1)
print('Manque Puissance Panneaux')
print('Valeur essaie sur 20 : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar == 20) then
--température réduite jusqu'a retour soleil
commandArray['Variable:FORCAGE']= tostring(3)
commandArray['Variable:MANQUESOL']= tostring(21)
print('activation mode mode eco')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar >= 21) and (FORCAGEvar > 2) then
print('Mode eco actif')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
end
end
end
-- partie pour afficher chauffe pac coupé
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='On') then
commandArray[cumulus]='Off'
print ('chauffe extinction')
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='Off') then
print ('chauffe arrêté')
end
return commandArray
--[[
mon script permet le démarrage d'une pac air/eau, avec PV, si mes panneaux produisent alors le cumulus PAC
se lance, malgré que la température ne soit pas au minimum (thermostat) donc thermostat intégré mis au max,
et installation d'un thermcouple pour récupérer la temperature de l'eau, si j'aurai gardé le thermostat de base
mon cumulus se serait lancé qu'au minimum thermostat que avec le thermocouple je le lance même si la temperature
n'est pas au minimum.
--]]
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
--------------------------------
------ Start of edit section ------
--------------------------------
local PPMT = tonumber(otherdevices_svalues['PMAISON']) -- puissance utilisation maison
local PPAC = 1200 --puissance de ma pompe à chaleur approx
local PPST = tonumber(otherdevices_svalues['solaredgeP']) --puissance production solaire
local sonde = 'CUMULUStemp' --Nom de la sonde de température
local OnOff = 'regulationsol' --inter gestion soleil
local cumulus = 'CUMULUS' --Nom du contacte à allumer/éteindre
local debug = false -- false ou true
local PMax = 200 --non utilisé
local tempmaxsol = tonumber(otherdevices_svalues['thermostat cumulus mode normal'])--thermostat mode normal
local tempmaxssol = tonumber(otherdevices_svalues['thermostat chauffe eau mode eco']) --thermostat mode eco
local RAZ = 1
local temperature2 = 25 -- utilisation test
local hysteresisas = 3 -- hysteresis mode normal
local hysteresisss = 2 -- hysteresis mode eco
--------------------------------
-- End of edit section --
--------------------------------
commandArray = {}
if (devicechanged[sonde]) and (otherdevices[OnOff]=='On') then -- 3 variables à mettre
MONTETEMPvar = (uservariables['MONTETEMP']) + 1 - 1
MANQUESOLvar = (uservariables['MANQUESOL']) + 1 - 1
FORCAGEvar = (uservariables['FORCAGE']) + 1 - 1
local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée
if (otherdevices[OnOff]=='On') then -- si mon interrupteur est en on tout est ok pour démarrer cumulus
print ('-- régulation cumulus actif --')
if debug then
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
print ('température : ' .. temperature)
print ('Puissance cumulus : ' .. PPAC)
print ('Puissance limite : ' .. PMax)
print ('variable manque soleil : ' ..uservariables['MANQUESOL'])
print ('Puissance limite : ' .. PMax) --non utilisé
print ('mode normal : ' .. tempmaxsol)
print ('mode eco : ' .. tempmaxssol)
print ('valeur sortie mode eco : ' .. MONTETEMPvar)--variable pour atteindre temperature normal
print ('-- régulation cumulus actif --')
end
if (otherdevices[cumulus]=='Off') then
if (temperature < (tempmaxsol - hysteresisas) and (PPMT + PPAC) < PPST) then
--démarrage si soleil puissance panneau
print('Allumage du cumulus mode normal')
commandArray[cumulus]='On'
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
elseif (temperature < (tempmaxssol - hysteresisss) and (PPMT + PPAC) > PPST) then
--démarrage si eau température trop basse
print('Allumage du cumulus mode eco')
commandArray[cumulus]='On'
elseif (MONTETEMPvar > 1 and (PPMT + PPAC) < PPST) then
print('remise en route')
commandArray['Variable:MONTETEMP']=tostring(RAZ)
commandArray[cumulus]='On'
end
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='On') then
--temperature mode normal atteinte
print('température atteine')
print('Extinction cumulus')
commandArray['Variable:FORCAGE']= tostring(RAZ)
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
commandArray[cumulus]='Off'
elseif (PPMT < PPST) and (otherdevices[cumulus]=='On') then
commandArray['Variable:MANQUESOL']= tostring(RAZ)
print('chauffe cumulus en route puissance en cours')
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT )
print ('Puissance soleil : ' .. PPST)
print ('temperature mode normal : ' .. tempmaxsol)
print ('hysteresis mode normal : ' .. hysteresisas)
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='Off') then
--ne ser pas vraiment
print('température atteine')
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') and (MANQUESOLvar > 20) and (FORCAGEvar > 2) and (temperature > (tempmaxssol + hysteresisss)) then
-- cumulus s'éteint en mode eco temperature mode sans soleil (tempmaxssol) valeur manque soleil dépasse les 20 et le forçage dépasse les 2
-- donc affiche le message plus bas mode eco actif et la variable MONTETEMP permet de relancer si le soleil revient pour atteindre la température normal
--coupe aussi le cumulus à 2°C de moins que la chauffe normal (je vais mettre une marge plus importante plus tard)
commandArray['Variable:MONTETEMP']= tostring(3)
commandArray[cumulus]='Off'
print('température réduite atteine')
print('Extinction cumulus')
--partie gestion manque soleil>>>>>>>>>>>>>>>>>>>>>>>>>>
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') then
if (MANQUESOLvar < 20) then
-- température max pendant 20 essaies
commandArray['Variable:MANQUESOL']= tostring(uservariables["MANQUESOL"] +1)
print('Manque Puissance Panneaux')
print('Valeur essaie sur 20 : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar == 20) then
--température réduite jusqu'a retour soleil
commandArray['Variable:FORCAGE']= tostring(3)
commandArray['Variable:MANQUESOL']= tostring(21)
print('activation mode mode eco')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar >= 21) and (FORCAGEvar > 2) then
print('Mode eco actif')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
end
end
end
-- partie pour afficher chauffe pac coupé
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='On') then
commandArray[cumulus]='Off'
print ('chauffe extinction')
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='Off') then
print ('chauffe arrêté')
end
return commandArray
--[[
mon script permet le démarrage d'une pac air/eau, avec PV, si mes panneaux produisent alors le cumulus PAC
se lance, malgré que la température ne soit pas au minimum (thermostat) donc thermostat intégré mis au max,
et installation d'un thermcouple pour récupérer la temperature de l'eau, si j'aurai gardé le thermostat de base
mon cumulus se serait lancé qu'au minimum thermostat que avec le thermocouple je le lance même si la temperature
n'est pas au minimum.
--]]
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
--------------------------------
------ Start of edit section ------
--------------------------------
local PPMT = tonumber(otherdevices_svalues['PMAISON']) -- puissance utilisation maison
local PPAC = 1200 --puissance de ma pompe à chaleur approx
local PPST = tonumber(otherdevices_svalues['solaredgeP']) --puissance production solaire
local sonde = 'CUMULUStemp' --Nom de la sonde de température
local OnOff = 'regulationsol' --inter gestion soleil
local cumulus = 'CUMULUS' --Nom du contacte à allumer/éteindre
local debug = false -- false ou true
local PMax = 200 --non utilisé
local tempmaxsol = tonumber(otherdevices_svalues['thermostat cumulus mode normal'])--thermostat mode normal
local tempmaxssol = tonumber(otherdevices_svalues['thermostat chauffe eau mode eco']) --thermostat mode eco
local RAZ = 1
local temperature2 = 25 -- utilisation test
local hysteresisas = 3 -- hysteresis mode normal
local hysteresisss = 2 -- hysteresis mode eco
--------------------------------
-- End of edit section --
--------------------------------
commandArray = {}
if (devicechanged[sonde]) and (otherdevices[OnOff]=='On') then -- 3 variables à mettre
MONTETEMPvar = (uservariables['MONTETEMP']) + 1 - 1
MANQUESOLvar = (uservariables['MANQUESOL']) + 1 - 1
FORCAGEvar = (uservariables['FORCAGE']) + 1 - 1
local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée
if (otherdevices[OnOff]=='On') then -- si mon interrupteur est en on tout est ok pour démarrer cumulus
print ('-- régulation cumulus actif --')
if debug then
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
print ('température : ' .. temperature)
print ('Puissance cumulus : ' .. PPAC)
print ('Puissance limite : ' .. PMax)
print ('variable manque soleil : ' ..uservariables['MANQUESOL'])
print ('Puissance limite : ' .. PMax) --non utilisé
print ('mode normal : ' .. tempmaxsol)
print ('mode eco : ' .. tempmaxssol)
print ('valeur sortie mode eco : ' .. MONTETEMPvar)--variable pour atteindre temperature normal
print ('-- régulation cumulus actif --')
end
if (otherdevices[cumulus]=='Off') then
if (temperature < (tempmaxsol - hysteresisas) and (PPMT + PPAC) < PPST) then
--démarrage si soleil puissance panneau
print('Allumage du cumulus mode normal')
commandArray[cumulus]='On'
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
elseif (temperature < (tempmaxssol - hysteresisss) and (PPMT + PPAC) > PPST) then
--démarrage si eau température trop basse
print('Allumage du cumulus mode eco')
commandArray[cumulus]='On'
elseif (MONTETEMPvar > 1 and (PPMT + PPAC) < PPST) then
print('remise en route')
commandArray['Variable:MONTETEMP']=tostring(RAZ)
commandArray[cumulus]='On'
end
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='On') then
--temperature mode normal atteinte
print('température atteine')
print('Extinction cumulus')
commandArray['Variable:FORCAGE']= tostring(RAZ)
commandArray['Variable:MANQUESOL']= tostring(RAZ)
commandArray['Variable:MONTETEMP']= tostring(RAZ)
commandArray[cumulus]='Off'
elseif (PPMT < PPST) and (otherdevices[cumulus]=='On') then
commandArray['Variable:MANQUESOL']= tostring(RAZ)
print('chauffe cumulus en route puissance en cours')
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT )
print ('Puissance soleil : ' .. PPST)
print ('temperature mode normal : ' .. tempmaxsol)
print ('hysteresis mode normal : ' .. hysteresisas)
elseif (temperature > (tempmaxsol + hysteresisas) and otherdevices[cumulus]=='Off') then
--ne ser pas vraiment
print('température atteine')
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') and (MANQUESOLvar > 20) and (FORCAGEvar > 2) and (temperature > (tempmaxssol + hysteresisss)) then
-- cumulus s'éteint en mode eco temperature mode sans soleil (tempmaxssol) valeur manque soleil dépasse les 20 et le forçage dépasse les 2
-- donc affiche le message plus bas mode eco actif et la variable MONTETEMP permet de relancer si le soleil revient pour atteindre la température normal
--coupe aussi le cumulus à 2°C de moins que la chauffe normal (je vais mettre une marge plus importante plus tard)
commandArray['Variable:MONTETEMP']= tostring(3)
commandArray[cumulus]='Off'
print('température réduite atteine')
print('Extinction cumulus')
--partie gestion manque soleil>>>>>>>>>>>>>>>>>>>>>>>>>>
elseif (PPMT > PPST) and (otherdevices[cumulus]=='On') then
if (MANQUESOLvar < 20) then
-- température max pendant 20 essaies
commandArray['Variable:MANQUESOL']= tostring(uservariables["MANQUESOL"] +1)
print('Manque Puissance Panneaux')
print('Valeur essaie sur 20 : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar == 20) then
--température réduite jusqu'a retour soleil
commandArray['Variable:FORCAGE']= tostring(3)
commandArray['Variable:MANQUESOL']= tostring(21)
print('activation mode mode eco')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
elseif (MANQUESOLvar >= 21) and (FORCAGEvar > 2) then
print('Mode eco actif')
print('Valeur essaie sur 20 dépassée : ' ..uservariables['MANQUESOL'])
print('Temp actuelle :' .. temperature)
print ('Puissance Maison : ' .. PPMT)
print ('Puissance soleil : ' .. PPST)
end
end
end
-- partie pour afficher chauffe pac coupé
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='On') then
commandArray[cumulus]='Off'
print ('chauffe extinction')
elseif (devicechanged[OnOff]=='Off') and (otherdevices[cumulus]=='Off') then
print ('chauffe arrêté')
end
return commandArray
rajout aussi d'un second script device celui ci pour lancer le cumulus même si il n'est pas au minimum à une heure précise (12h)
-- Fonction planning time
--------------------------------
------ Start of edit section ------
--------------------------------
local cumulus = 'CUMULUS' --Nom du contacte à allumer/éteindre
local pacH = "12:00"
--------------------------------
-- End of edit section --
--------------------------------
time=os.date("*t")
local heure = string.sub(os.date("%X"), 1, 5)
commandArray = {}
if time.min%1==0 then
if heure == pacH then
print ("lancement cumulus")
commandArray[cumulus]='On'
end
end
return commandArray