Přeskočit na hlavní obsah

Regulace-vetyl (192.168.100.31)

Shelly Pro 4PM / Pro (Sklep) – Centrální mozek vytápění celého domu, řízení směšovacího servopohonu, elektrického dohřevu akumulační nádrže (AKU) a koordinace požadavků ze všech zón.


Seznam skriptů​

  1. 1_topeni.js – Centrální ekvitermní regulace, příjem požadavků z TRV a řízení oběhového čerpadla ÚT
  2. 2_el_dotapeni.js – Řízení elektrických topných patron AKU nádrže a centrální správa blokací
  3. 3_smesovac.js – Servopohon 3cestného směšovacího ventilu topné vody s prediktivní regulací

1. 1_topeni.js (Centrála vytápění ÚT)​

Funkce a účel​

  • Sběr požadavků na vytápění z celého domu:
    • Poskytuje HTTP endpoint /script/1/trv?id=<room>&state=1|0.
    • Přijímá žádosti z termostatů a TRV hlavic (Eliška, Koupelna, Kuchyně, Ložnice, Obývák).
  • Výpočet ekvitermní teploty náběhu:
    • Podle venkovní teploty a strmosti topné křivky počítá požadovanou teplotu vody pro dům (tFlowMin = 25 °C, tFlowMax = 55 °C).
    • Poskytuje komfortní časové okno pro koupelnu (heat_bath_*, např. 18:00–20:00 cíl 40 °C).
  • Spínání oběhového čerpadla ÚT:
    • Pokud je požadavek z alespoň jedné zóny (heatRequired = true), spíná čerpadlo topného okruhu na vzdálené Shelly 192.168.100.32 (switch:0) a obnovuje příkaz každých 60 s.
  • Předávání do směšovače:
    • Zapisuje žádanou náběhovou teplotu do virtuální komponenty Number:200 a stav požadavku do Boolean:200, které přímo čte skript 3_smesovac.js.

Ochrany při výpadku a nedostupnosti​

  • Výpadek lokální meteostanice WS90 (Online Weather Fallback):
    • Přijímá venkovní teplotu na /script/1/extTemp?t=....
    • Pokud data z WS90 nepřijdou po dobu 45 minut (ws90TimeoutSec: 2700), skript se automaticky přepne na záložní stahování předpovědi z internetu (Open-Meteo REST API) každých 30 minut.
  • Odpojení nebo vybití TRV hlavice (Watchdog 12 minut):
    • Každá registrovaná zóna má timeout 12 minut (trvTimeoutSec: 720).
    • Pokud zóna neobnoví keep-alive (např. vybitá baterie hlavice), je automaticky vyřazena. Pokud netopí žádná jiná zóna, čerpadlo ÚT se po 12 minutách samo zastaví.
  • Výpadek vzdálené Shelly s čerpadlem (192.168.100.32):
    • Příkazy na sepnutí/vypnutí čerpadla mají HTTP timeout a retry logiku každých 60 s.

2. 2_el_dotapeni.js (Elektrický dohřev AKU & Správce blokací)​

Funkce a účel​

  • Řízení topných patron v akumulační nádrži:
    • Horní patrona 4 kW (heaterTop, na 192.168.100.32 switch:1).
    • Střední patrona 7.5 kW (heaterMid, na 192.168.100.32 switch:2).
  • Udržování teploty a časová okna:
    • TUV okno: V čase 18:00–18:45 nahřívá horní část AKU na 60 °C (aku_tuv_target).
    • Mimo TUV okno: Udržuje minimální pohotovostní teplotu nádrže podle ekvitermy (aku_heat_min = 45 °C).
    • Prediktivní solární blok ranního dohřevu (05:00–15:00):
      • Vyčítá denní předpověď osvitu z 192.168.100.40 (number:200 z PVForecast) a přijímá okamžitý osvit (Lux) přes HTTP push z meteostanice WS90 (/script/2/ws90?lux=...).
      • Pokud je předpověď ≥ 2,500 Wh/m² (aku_solar_forecast_min) NEBO okamžitý osvit z WS90 ≥ 20,000 Lux (aku_solar_lux_min):
        • Střední patrona 7.5 kW je striktně zablokována (solar_predikce), aby v nádrži zůstala maximální chladná kapacita pro 8 m² fototermických kolektorů.
        • Horní patrona 4 kW udržuje pouze komfortní ranní minimum pro sprchu 40 °C (aku_solar_shower_min), sepne pouze pokud horní zóna klesne pod 37.5 °C.
      • Při zataženém počasí (< 2,500 Wh/m² a < 20,000 Lux) běží běžný pohotovostní dohřev bez omezení.
  • Centrální sběrnice blokací (Block Server):
    • Poskytuje HTTP endpointy: /script/2/block?source=...&target=...&state=1|0, /block4kw, /block7kw, /script/2/ws90?lux=....
    • Přijímá blokace od:
      • Grid Guard 3EM (192.168.100.251): Hlídání domovního jističe 3x25A.
      • Sauna 3EM (192.168.100.78): Chod saunových kamen.
      • Kotel 2PM (192.168.100.74): Chod kotle na tuhá paliva.
      • Podlahová topení (.76, .213, .222): Chod podlahovek v pokojích.
    • Pokud je aktivní jakákoliv blokace pro danou patronu, patrona nesmí sepnout (a pokud běží, okamžitě se vypne).

Ochrany při výpadku a nedostupnosti​

  • Kritická havarijní tepelná ochrana nádrže (Ochrana proti přehřátí):
    • Pokud teplota v horní nebo střední části AKU nádrže překročí 85 °C (aku_safety_max), obě patrony se okamžitě a bezpodmínečně odepnou.
  • Bezpečnostní Watchdog blokací (300 sekund):
    • Každý blokovací požadavek od externích klientů (Sauna, Grid Guard, Podlahovka) expiruje po 300 sekundách (5 minutách) (aku_block_timeout: 300).
    • Pokud některé klientské zařízení vypadne, ztratí napájení nebo Wi-Fi spojení a přestane posílat keep-alive, blokace po 5 minutách samočinně vyprší, aby nádrž nezůstala trvale studená.
  • Výpadek čidel teploty nádrže:
    • Pokud selžou lokální čidla tempTopId (100) nebo tempMidId (101), skript patrony nespustí.

3. 3_smesovac.js (Směšovací servopohon)​

Funkce a účel​

  • Přesné řízení servopohonu směšovače (Shelly Cover:0):
    • Směšuje horkou vodu z AKU / kotle se zpátečkou z radiátorů tak, aby náběhová teplota do domu přesně odpovídala žádané ekvitermní teplotě z 1_topeni.js.
  • Prediktivní výpočet polohy ventilu:
    • Na základě fyzikálního modelu směšování počítá teoretickou polohu ventilu ještě předtím, než se projeví transportní zpoždění v potrubí:
Pos = \frac{T_target - T_return}{T_hot - T_return} × 100 %
  • Dynamický výběr zdroje tepla:
    • Průběžně porovnává teplotu z kotle na tuhá paliva (/kotelTemp), horní části nádrže (AKU1H) a přívodního potrubí (temperature:105), a jako horký zdroj volí aktuálně nejteplejší médium.
  • Rychlý rozběh a stabilizace:
    • Při startu topení provede přednastavení na predikovanou polohu a vyčká na prohřátí náběhového potrubí.

Ochrany při výpadku a nedostupnosti​

  • Kritický výpadek čidla náběhové teploty (Havarijní poloha 50 %):
    • Pokud selže čidlo teploty náběhové vody temperature:103 (SYSTEM.actualTemp === null), skript okamžitě přestaví servopohon do bezpečnostní polohy 50 % (CONFIG.failSafePos = 50). Zabraňuje zavedení plné neochlazené teploty do topného systému domu.
  • Automatické zavření při vypnutém topení:
    • Pokud netrvá žádný požadavek na topení (heatRequired = false), servopohon se přestaví do polohy 0 % (úplně zavřeno), čímž brání samotížnému ochlazování AKU nádrže.
  • Výpadek přenosu teploty kotle (/kotelTemp):
    • Údaj o teplotě kotle má timeout 180 sekund (boiler.timeoutSec: 180). Pokud kotel přestane posílat teplotu, skript jej přestane uvažovat jako zdroj horké vody a plynule přejde na čidlo AKU nádrže AKU1H.
  • Mechanická ochrana servopohonu (Anti-hunting):
    • Minimální rozestup mezi přestaveními ventilu je 55 sekund, minimální krok změny je 1.5 % a necitlivost (deadband) 0.5 °C, což zabraňuje neustálému kmitání a mechanickému opotřebení servopohonu.