Přeskočit na hlavní obsah

Eliska_display (192.168.100.64)

Shelly Wall Display (Gen2/Gen3) umístěný v pokoji Eliška.


Seznam skriptů​

  1. 1_ilumination.js
  2. 3_TRV_sync.js

1. 1_ilumination.js​

Funkce a účel​

  • Vyčítá hodnotu intenzity osvětlení z interního senzoru Wall Display (Illuminance.GetStatus id: 0).
  • Naměřenou hodnotu luxů ukládá do virtuální komponenty Number:200 (VIRTUAL_NUMBER_ID = 200).
  • Spouští se:
    • Okamžitě při startu skriptu.
    • Při události (addEventHandler a addStatusHandler pro komponentu illuminance:0).
    • Periodicky každých 30 sekund jako záložní časovač (Timer.set(30000, true, ...)).

Ochrany při výpadku a nedostupnosti​

  • Chyba čtení senzoru: Skript ověřuje err !== 0 || res === null. Při chybě senzorového volání pouze zaloguje chybu a neprovede zápis do virtuální komponenty (zůstane zachována poslední platná hodnota).
  • Redundance spouštění: Trojitá redundance (událostní sběrnice, status handler a 30s záložní periodický timer) zajišťuje, že hodnota v Number:200 nezamrzne, i kdyby vypadly notifikace změn.
  • Odolnost proti pádům: Volání RPC je asynchronní callback; nehrozí zablokování běhu Shelly.

2. 3_TRV_sync.js​

Funkce a účel​

  • Univerzální regulace radiátorů a synchronizace teploty mezi termostatem na Wall Display, radiátorovou hlavicí (Shelly TRV Gen1 na 192.168.100.204) a centrálním čerpadlem v kotelně (192.168.100.31 / topeni.js).
  • Sekvenční komunikace s TRV: Příkazy se posílají postupně s ochranou proti přetížení sběrnice (executeOnAllTrvs).
  • Agresivní studený start (Boost 100 %): Při studeném startu (nedotop >= hystereze) otevře ventil na 100 % po dobu minimálně boost_min (5 min) až boost_max (10 min), nebo dokud teplota nestoupne o temp_rise (0.15 °C).
  • Ekvitermní ubírání (Throttled): Po prohřátí přepíná na pásma:
    • \Delta T ≥ 0.8 °C \implies 70 %
    • \Delta T ≥ 0.4 °C \implies 50 %
    • \Delta T ≥ 0.15 °C \implies 30 %
    • \Delta T ≤ 0.0 °C \implies 0 %
  • Anti-hunting ochrana: Po vytopení vyžaduje minimální klid cooldown_min (10 min) před dalším startem, pokud nedotop není kritický (≥ 0.5 °C).
  • Heartbeat externí teploty (/ext_t): Posílá naměřenou teplotu z displeje do TRV každých 60 s nebo při změně o ≥ 0.1 °C.
  • Hlášení centrále topení: Pokud je ventil > 0 %, odesílá požadavek na sepnutí oběhového čerpadla do kotelny (/script/1/trv?id=loznice&state=1) a obnovuje jej každých 60 s.
  • KVS & Diagnostika: Parametry se ukládají v KVS; skript poskytuje diagnostický HTTP endpoint /script/<id>/status a odesílá telemetrii do VictoriaLogs.

Ochrany při výpadku a nedostupnosti​

  • Nedostupnost TRV hlavice (výpadek Wi-Fi / vybitá baterie):
    • Požadavky na TRV mají nastavený HTTP timeout 10 s.
    • Při timeoutu nebo chybě skript nezkolabuje (done() se zavolá vždy, takže fronta nezamrzne), zaloguje chybu do VictoriaLogs a označí TRV v diagnostice jako online: false.
    • Riziko: Pokud TRV vypadne v otevřené poloze, zůstane fyzicky otevřená, dokud se neobnoví spojení nebo nezasáhne vnitřní logika TRV.
  • Nedostupnost centrály topení (192.168.100.31):
    • HTTP timeout požadavku je 5 s.
    • Při selhání centrály se zaloguje [CENTRÁLA CHYBA], skript pokračuje v lokální regulaci ventilů. Centrála má na své straně watchdog (12 minut) – pokud nedostává keep-alive, požadavek zruší.
  • Výpadek termostatu Wall Display:
    • Pokud interní termostat nevrátí data, regulace je chráněna kontrolou if (cur === null || tgt === null) return; – ventil zůstává v poslední známé bezpečné poloze.
  • Ochrana proti souběhu a zahlcení:
    • Příznak isTrvBusy zabraňuje vysílání překrývajících se síťových požadavků. Pokud přijde nová žádost během probíhající komunikace, uloží se do targetValvePos a odešle se až po dokončení předchozího volání.