El-celkove (192.168.100.251)
Shelly Pro 3EM na hlavním přívodu domu (FVE_Solar) – měření fází L1, L2, L3 a hlídání hlavního domovního jističe 3x 25A.
Seznam skriptů
1_blokace3m.js– Asymetrické hlídání hlavního jističe (Grid Guard) a blokování dohřevu2_vystrahy.js– Sledování meteorologických výstrah ČHMÚ a ochrana FVE
1. 1_blokace3m.js (Grid Guard)
Funkce a účel
- Asymetrická ochrana hlavního jističe 3x 25A proti přetížení při provozu elektrických topných patron (4 kW a 9 kW) v akumulační nádrži.
- Fyzické rozložení zátěží:
L1: Běžné spotřebiče domu + 3 kW (z 9 kW patrony, ~13 A). 4 kW patrona na L1 není připojena.L2: 3 kW (z 9 kW) + 2 kW (z 4 kW) \implies max ~22 A.L3: 3 kW (z 9 kW) + 2 kW (z 4 kW) \implies max ~22 A.
- Dvoustupňová kaskádová logika:
- Fáze L1 (Dům + 9 kW): Pokud proud L1 ≥ 23.5 A nebo celkový příkon domu ≥ 16.5 kW, okamžitě se odesílá blokace 9 kW patrony (
target=7kw, resp. 9kW patrona na centrále). - Fáze L2 a L3 (4 kW a 9 kW):
- Krok 1: Pokud \max(L2, L3) ≥ 23.5 A, okamžitě se shodí malá patrona 4 kW (
target=4kw). - Krok 2 (Kaskáda): Skript počká
cascadeDelaySec(5 s = 2 měřicí cykly na ustálení proudu). Pokud i po shození 4 kW proud na L2 nebo L3 zůstává ≥ 24.0 A, zablokuje se i velká patrona 9 kW (target=7kw).
- Krok 1: Pokud \max(L2, L3) ≥ 23.5 A, okamžitě se shodí malá patrona 4 kW (
- Fáze L1 (Dům + 9 kW): Pokud proud L1 ≥ 23.5 A nebo celkový příkon domu ≥ 16.5 kW, okamžitě se odesílá blokace 9 kW patrony (
- Návratová hystereze a kaskádový zámek:
- Pro odblokování 4 kW musí být proud na L2 i L3 pod 14.5 A nepřetržitě po dobu 300 s (5 minut).
- Pro odblokování 9 kW musí být L1 ≤ 10.5 A a L2, L3 ≤ 10.5 A po dobu 300 s. Dokud je zablokovaná 4 kW, 9 kW se nesmí odblokovat dříve.
- Keep-Alive: Dokud blokace trvá, skript každých 60 s odesílá obnovovací signál na centrálu (
192.168.100.31/el_dotapeni.js), čímž resetuje její bezpečnostní 300s watchdog. - Telemetrie: Odesílá stavy a proudy fází do VictoriaLogs každých 60 s.
Ochrany při výpadku a nedostupnosti
- Výpadek centrály v kotelně (
192.168.100.31):- Požadavek na blokaci má HTTP timeout 5 s s ošetřením chyb i výjimek (
try/catch). - Při selhání centrály se zaloguje chyba a skript při trvajícím přetížení opakuje blokovací požadavek v dalším cyklu.
- Na straně centrály běží watchdog (300 s) – pokud by spojení vypadlo během aktivní blokace, centrála by po 300 s blokaci uvolnila, ledaže by selhalo celé měření.
- Požadavek na blokaci má HTTP timeout 5 s s ošetřením chyb i výjimek (
- Výpadek měření čidel EM (chyba čtení
em:0):- Skript má automatický fallback: pokud selže čtení souhrnné komponenty
em:0, zkusí načíst jednotlivé kanályem1:0,em1:1,em1:2. - Pokud selžou obě metody, skript zaloguje chybu a neprovede nebezpečné uvolnění blokace (stavy zůstávají zachovány).
- Skript má automatický fallback: pokud selže čtení souhrnné komponenty
- Zamezení přehlcení soketů mJS:
- Při současné blokaci 4 kW i 9 kW se keep-alive požadavky posílají sekvenčně s časovým rozestupem 1.5 s (
Timer.set(1500, ...)), aby nedošlo k vyčerpání HTTP soketů v Shelly OS.
- Při současné blokaci 4 kW i 9 kW se keep-alive požadavky posílají sekvenčně s časovým rozestupem 1.5 s (
2. 2_vystrahy.js (ČHMÚ Výstrahy)
Funkce a účel
- Pravidelně (každých 10 minut) stahuje meteorologické výstrahy z REST API
https://lovecka.info/ChmiWarnings1/chmi/vystrahy/3211?kratke=2pro ORP 3211 (Přeštice). - Sleduje rizikové jevy pro fotovoltaiku: bouřky (
Thunderstorm) a silný vítr (Wind). - Reaguje preemptivně (i na předpověď dopředu,
react_preemptively: true) nebo na probíhající jevy. - Výsledky ukládá do lokálních virtuálních komponent pro automatizaci a Shelly Scény:
Boolean:200(VystrahaAktivni) –true/falseNumber:200(VystrahaStupennum) – 0 (bez výstrahy) až 4 (extrémní)Enum:200(VystrahaStupen) – textový stupeň ("Bez vystrahy", "Zluta", "Oranzova", "Cervena", "Extremni")
- Odesílá detailní záznamy a telemetrii do VictoriaLogs.
Ochrany při výpadku a nedostupnosti
- Výpadek internetu nebo API ČHMÚ:
- HTTP požadavek má timeout 15 s.
- Při chybě sítě (
error_code !== 0) nebo HTTP chybě API (res.code !== 200) skript nepadá, inkrementuje čítačconsecutiveErrorsa zaloguje výstrahu do VictoriaLogs. - Ponechání stavu: Při výpadku internetu se virtuální komponenty neresetují na nulu okamžitě, zůstává zachován poslední známý stav, dokud se spojení neobnoví.
- Ochrana proti pádu při nevalidním JSON:
- Parsování probíhá v
try/catchbloku (JSON.parse(res.body)). Při poškozeném těle odpovědi skript nespadne.
- Parsování probíhá v
- Omezení velikosti dat (?kratke=2):
- Použití parametru
?kratke=2omezuje objem přenášených dat na minimum, což zabraňuje přetečení RAM paměti v mJS prostředí Shelly.
- Použití parametru
- Prevence překryvu požadavků:
- Příznak
isCheckingzabraňuje spuštění nového dotazu, pokud předchozí požadavek ještě čeká na odpověď nebo timeout.
- Příznak
- State cache:
- Zápisy do virtuálních komponent se provádějí pouze při skutečné změně výstrahy, což šetří flash paměť a procesorový čas.