
Bizonyos rendszerekben – például háromfázisú HMV tartályoknál – nem mindig szükséges a teljes fűtőteljesítmény. Előfordul, hogy a tartály csak kismértékben hűl, és ilyenkor elég 1 fázist bekapcsolni. Máskor – például amikor egy 4–5 fős család egymás után fürdik – szükség van a teljes 3 fázisos teljesítményre.
Egy 150 liter körüli tartálynál a 3× teljesítmény sokszor túl sok:
a víz nagyon gyorsan melegszik,
a gyors melegedés miatt nincs ideje beindulni a gravitációs keringésnek,
a hőérzékelő „átverődik”: Melegnek hiszi a vizet → kikapcsol → elindul a keringés → lehűlést érzékel → újraindul.
Ez felesleges és káros ki-be kapcsolási ciklusokat okoz.
Egy felhasználó egy nagyobb csőbe szerelt 3×1500 W fűtőpatront használ „kazánként”. Mivel ez valójában három külön patron egybe építve, akkor is használható, ha nincs háromfázisú bekötése – csak megfelelő vezeték és biztosíték kell.
A cél:
ha 0,5 °C-kal a célérték alatt jár a hőmérséklet → 2. fűtőszál bekapcsolása,
ha 1,0 °C-kal a célérték alatt → 3. fűtőszál is bekapcsol.
Ez teljesen logikus igény, de annyira speciális, hogy nem építettük bele a DSVT_12 vezérlőbe.
Viszont DzVents szkripttel könnyen megoldható
Ha a DSVT_12-t használod, akkor már létezik az első fázis (HMV kapcsoló).
Emellé hozz létre még:
2. fázis kapcsoló
3. fázis kapcsoló
Mindhárom legyen normál on/off eszköz.
Keresd meg:
21-es ID: „Tartály aktuális célhőmérséklet” → ez egy virtuális hőmérő
Ez legyen látható, mert a DzVents csak a látható eszközöket tudja figyelni. Kattints a zöld nyil (eszköz aktiválása) gombra.
Menü: Beállítások → Több lehetőség → Felhasználói szkriptek
Választhatsz bármilyen dzVents sablont, mert teljesen ki fogod törölni, helyére az általunk adott script kerül.
A szkript elején lesz egy lista:
devices = { 12, 34, 21 }
Ide kell beírni:
az 1. fázis IDX-ét,
a tartály hőmérséklet IDX-ét,
a célhőmérséklet IDX-ét.
A szkript ezeket figyeli: ha bármelyik változik, újraszámolja, melyik fűtőszál menjen.
A szkriptben lesz egy blokk például így:
local delta2 = 0.5 -- ennyivel legyen hidegebb a 2. fázishoz
local delta3 = 1.0 -- ennyivel legyen hidegebb a 3. fázishoz
local hisz = 0.2 -- ki-be kapcsolás elkerülése
Ezeket szabadon állíthatod:
delta2 = a célérték alatt mennyivel induljon a 2. fűtőszál
delta3 = mennyivel induljon a 3. fűtőszál
hiszterézis = védelem a felesleges ki-be kapcsolás ellen
Lekéri a tartály hőmérsékletét és a célhőmérsékletet.
Számolja, hogy hány fokkal van alatta:
ha csak kicsit → csak 1. fázis
ha jobban → 1 + 2. fázis
ha sokkal → 1 + 2 + 3. fázis
Figyeli a hiszterézist, hogy ne kapcsolgassa feleslegesen, egyszerű, átlátható
A szkriptet letültheted innen (harom_fazis.lua), vagy másold ki az itt következő részt:
return {
on = {
devices = { 1758, 2262, 2264 } -- valtozas figyelt idx
},
execute = function(domoticz, device)
------------------------------------------------------------------
-- PARAMETEREK
------------------------------------------------------------------
local IDX_MASTER = 1758 -- 1 fazis kapcsolo idx
local IDX_TEMP = 2262 -- tartaly aktualis homero idx
local IDX_TARGET = 2264 -- cel homero (legyen aktiv!) idx
local IDX_PHASE2 = 2479 -- 2 fazis kapcsolo idx
local IDX_PHASE3 = 2480 -- 3 fazis kapcsolo idx
local DIFF_HIGH = 6 -- 3. fazis bekapcsolasi diff
local DIFF_MID = 3 -- 2. fazis bekapcsolasi diff
local HYSTERESIS = 1 -- hiszterezis
------------------------------------------------------------------
-- ESZKOZOK
------------------------------------------------------------------
local master = domoticz.devices(IDX_MASTER)
local tempDevice = domoticz.devices(IDX_TEMP)
local temp = tempDevice.temperature
local targetDevice = domoticz.devices(IDX_TARGET)
local target = targetDevice.temperature -- TEMP tipus → temperature!
local phase2 = domoticz.devices(IDX_PHASE2)
local phase3 = domoticz.devices(IDX_PHASE3)
------------------------------------------------------------------
-- MASTER OFF → minden fazis off
------------------------------------------------------------------
if master.state == 'Off' then
phase2.switchOff()
phase3.switchOff()
domoticz.log("Master OFF, fazisok kikapcsolva", domoticz.LOG_INFO)
return
end
------------------------------------------------------------------
-- DIFFERENCIA
------------------------------------------------------------------
local diff = target - temp
domoticz.log("Diff = " .. diff, domoticz.LOG_INFO)
local function kell_be(th)
return diff > (th + HYSTERESIS)
end
local function kell_ki(th)
return diff < (th - HYSTERESIS)
end
------------------------------------------------------------------
-- 3. FAZIS (DIFF_HIGH)
------------------------------------------------------------------
if phase3.state == 'Off' then
if kell_be(DIFF_HIGH) then
phase3.switchOn()
domoticz.log("3. fazis BE", domoticz.LOG_INFO)
end
else
if kell_ki(DIFF_HIGH) then
phase3.switchOff()
domoticz.log("3. fazis KI", domoticz.LOG_INFO)
end
end
------------------------------------------------------------------
-- 2. FAZIS (DIFF_MID)
------------------------------------------------------------------
if phase2.state == 'Off' then
if kell_be(DIFF_MID) then
phase2.switchOn()
domoticz.log("2. fazis BE", domoticz.LOG_INFO)
end
else
if kell_ki(DIFF_MID) then
phase2.switchOff()
domoticz.log("2. fazis KI", domoticz.LOG_INFO)
end
end
------------------------------------------------------------------
-- AUTOMATIKUS OFF, ha egyik feltetel sem teljesul
-- (= diff < DIFF_MID-HYSTERESIS)
------------------------------------------------------------------
if diff < (DIFF_MID - HYSTERESIS) then
if phase2.state == 'On' or phase3.state == 'On' then
phase2.switchOff()
phase3.switchOff()
domoticz.log("Diff kicsi, extra fazisok KI", domoticz.LOG_INFO)
end
end
end
}