Geen probleem om de scripts te delen. Het is een dzvents script met daarin in grote lijnen drie berekeningen:
1. WPB: warmtepompboiler
2. Nibe warmteppomp met behulp van een puls flow sensor met twee temperatuursensoren
3. Nibe warmtepomp met behulp van de Hydrocal warmtemeter die per kWh warmte een puls afgeeft
Ik zie zo geen manier om het script als bestand te delen vandaar hieronder als tekst. Voor de Hydrocal berekening heb ik de belangrijkste regel hieronder
vet gemaakt.
return {
on = {
timer = {
'every minute'
}
},
logging = {
marker = "WP: COP [ Script ]"
},
execute = function(domoticz, item)
-- devices
local tempWPBboveninValue = domoticz.devices(164).rawData[1] -- Temperature boven in de boiler
local tempWPBvorigTboveninValue = domoticz.devices(172).rawData[1] -- Temperature boven in de boiler
local WPB_COP_calculated = domoticz.devices(173).rawData[1] -- Ophalen huidig COP waarde
local WPB_e_kWh = domoticz.devices(167).counter * 1000.0 -- HEatpump power adsorbed in Wh (counter is in kWh)
local startWPB_kWh = domoticz.devices(174).counter * 1000.0 -- copy of startWPB_kWh dummy sensor
local WPBstartGeleverdeEnergie = domoticz.devices(175).counter * 1000.0
if (tonumber(tempWPBvorigTboveninValue) < 48.8) and (tonumber(tempWPBboveninValue) >= 48.8) and ((WPB_e_kWh - startWPB_kWh) > 50.0) then
local WPBTotaalGeleverdeEnergie = domoticz.devices(171).counter * 1000.0
WPB_COP_calculated = math.abs(domoticz.utils.round(((WPBTotaalGeleverdeEnergie-WPBstartGeleverdeEnergie)/(WPB_e_kWh-startWPB_kWh))*100.0,0.0))
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=174'..'&nvalue=0&svalue='..WPB_e_kWh) --start wordt de huidige stand
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=175'..'&nvalue=0&svalue='..WPBTotaalGeleverdeEnergie) --start wordt de huidige stand
else
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=174'..'&nvalue=0&svalue='..startWPB_kWh) --start wordt de huidige stand
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=175'..'&nvalue=0&svalue='..WPBstartGeleverdeEnergie) --start wordt de huidige stand
end
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=173'..'&nvalue=0&svalue='..WPB_COP_calculated) --WPB COP Lua
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=172'..'&nvalue=0&svalue='..tempWPBboveninValue) --vorige wordt huidig temp bovenin
local flowValue = domoticz.devices(117).rawData[1] -- Flow custom sensor ivm liters /minuut WP Flow HM
if tonumber(flowValue) > 21.0 then
flowValue = flowValue / 2.25 -- Dit is symptoom bestreiding voor een exemplarische foute flow waarde die tussen de 2.2 en 2.3x te hoog is
end
local tempWPafvoerValue = domoticz.devices(115).rawData[1] -- Temperature Heatpump out WP Kruip A
local tempWPaanvoerValue = domoticz.devices(116).rawData[1] -- Temperature Heatpump in WP Kruip R
local powerDissHeatPump = domoticz.devices(113).counter * 1000.0 -- HEatpump power adsorbed in watt (counter is in kWh)
local prevPowerDissHeatPump = domoticz.devices(120).rawData[1] -- copy of prevPowerHeatPump dummy sensor
local avgMinPowerDissHeatPump = domoticz.devices(121).rawData[1] -- copy of minPowerHeatPump dummy sensor mean value
local minPowerDissHeatPump = (powerDissHeatPump-prevPowerDissHeatPump)*60.0 -- kw -> opgenomen vermogen gedurende een minuut
avgMinPowerDissHeatPump = avgMinPowerDissHeatPump - (avgMinPowerDissHeatPump/4.0) + (minPowerDissHeatPump/4.0)
local deltaT = tempWPafvoerValue-tempWPaanvoerValue
local powerDeliveredHeatPump = domoticz.utils.round(deltaT * 4.187 * (flowValue/60.0)*1000.0)
local COP_calculated = math.abs(domoticz.utils.round((powerDeliveredHeatPump/minPowerDissHeatPump)*100.0,0.0))
if domoticz.time.matchesRule('at 00:01') then
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=155'..'&nvalue=0&svalue='..domoticz.devices(113).counter)
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=156'..'&nvalue=0&svalue='..domoticz.devices(153).counter)
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=122'..'&nvalue=0&svalue=0.5') --Om afgegeven vermogen voor warmte afrondfout in de weergave te voorkomen
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=124'..'&nvalue=0&svalue=0.5') --WP opgenomen vermogen voor warmte afrondfout in de weergave te voorkomen
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=123'..'&nvalue=0&svalue=0.5') --WP afgegeven koelte vermogen om afrondfout in de weergave te voorkomen
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=125'..'&nvalue=0&svalue=0.5') --WP opgenomen vermogen voor koelte om afrondfout in de weergave te voorkomen
end
local WPwarmteLevering = domoticz.devices(153).counter-domoticz.devices(156).rawData[1] -- WP warmte levering
local NibeEnergie = domoticz.devices(113).counter-domoticz.devices(155).rawData[1] -- Opgenomen vermogen Nibe
local HydrocalCOP = math.abs(domoticz.utils.round((WPwarmteLevering/NibeEnergie)*100.0,0.0))
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=120'..'&nvalue=0&svalue='..powerDissHeatPump)
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=121'..'&nvalue=0&svalue='..avgMinPowerDissHeatPump)
if ((deltaT <= -0.6) or (deltaT >= 0.6)) and tonumber(flowValue) > 1.3 then --tonumber(minPowerDissHeatPump) > 150.0 then -- Warmtepomp loop (>150)
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=119'..'&nvalue=0&svalue='..COP_calculated) --WP COP Lua
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=118'..'&nvalue=0&svalue='..powerDeliveredHeatPump) --WP Vermogen Lua
if powerDeliveredHeatPump >= 0.0 then
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=122'..'&nvalue=0&svalue='..powerDeliveredHeatPump/60.0) --WP afgegeven warmte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=124'..'&nvalue=0&svalue='..avgMinPowerDissHeatPump/60.0) --WP opgenomen vermogen voor warmte voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=123'..'&nvalue=0&svalue=0.0') --WP afgegeven koelte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=125'..'&nvalue=0&svalue=0.0') --WP opgenomen vermogen voor koelte voor de kWh teller
else
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=122'..'&nvalue=0&svalue=0.0') --WP afgegeven warmte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=124'..'&nvalue=0&svalue=0.0') --WP opgenomen vermogen voor warmte voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=123'..'&nvalue=0&svalue='..math.abs(powerDeliveredHeatPump/60.0)) --WP afgegeven koelte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=125'..'&nvalue=0&svalue='..avgMinPowerDissHeatPump/60.0) --WP opgenomen vermogen voor koelte voor de kWh teller
end
else
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=119'..'&nvalue=0&svalue=0.0') --WP COP Lua
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=118'..'&nvalue=0&svalue=0.0') --WP Vermogen Lua
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=122'..'&nvalue=0&svalue=0.0') --WP afgegeven warmte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=124'..'&nvalue=0&svalue=0.0') --WP opgenomen vermogen voor warmte voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=123'..'&nvalue=0&svalue=0.0') --WP afgegeven koelte vermogen voor de kWh teller
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=125'..'&nvalue=0&svalue=0.0') --WP opgenomen vermogen voor koelte voor de kWh teller
end
domoticz.openURL('http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=154'..'&nvalue=0&svalue='..HydrocalCOP)
end
}