Xtra-rs485 (192.168.100.42)
Shelly Pro Add-on RS485 na solárním regulátoru nabíjení EPEver XTRA / Tracer (FVE_Solar).
Seznam skriptů
1_Epever-tracer.js– Vyčítání registrů Modbus RTU ze solárního regulátoru EPEver
1. 1_Epever-tracer.js
Funkce a účel
- Komunikuje přes sériové rozhraní RS485 s MPPT solárním regulátorem EPEver XTRA / Tracer pomocí protokolu Modbus RTU (Function Code 0x04 – Read Input Registers).
- Nastavení sběrnice:
- Režim: Modbus client (
MbRtuClient) - Baudrate: 115200 (nebo 9600), 8 datových bitů, bez parity, 1 stop bit.
- Slave ID: 1
- Režim: Modbus client (
- Sekvenční vyčítání v blocích: Čte registry po skupinách s pauzou 60 ms (
STEP_DELAY: 60) mezi dotazy pro zajištění stability RS485 sběrnice:- Blok 1 (12544, 6 reg): Napětí a proud panelů, napětí a nabíjecí proud baterie.
- Blok 2 (12560, 2 reg): Teplota baterie, teplota regulátoru Tracer/XTRA.
- Blok 3 (12570, 1 reg): Zbývající kapacita baterie – SOC (%).
- Blok 4 (13068, 2 reg): Dnešní celková výroba v kWh (uint32).
- Zápis do 9 virtuálních komponent na Shelly Pro:
number:200: Kapacita baterie SOC (%)number:201: Napětí baterie (V)number:202: Nabíjecí proud baterie (A)number:203: Teplota baterie (°C)number:204: Teplota měniče/regulátoru (°C)number:205: Proud z panelů (A)number:206: Napětí panelů (V)number:207: Výkon panelů (W = V * A)number:208: Dnešní generovaná energie celkem (kWh)
- Tyto virtuální komponenty slouží jako zdroj dat pro ostatní zařízení v domě (např. Wall Display v kuchyni a zásuvka vjezdu).
- Integrace do VictoriaLogs & standardní logování:
SCRIPT_VERSION:"1.0.0"- Telemetrie se pravidelně odesílá do VictoriaLogs (
shelly_epever_tracer, streamroom="FVE_Solar") s intervalem 60 s (telemetryIntervalSec: 60). - Zaznamenává kompletní stav (napětí/proud panelů, výkon W, napětí/proud baterie, SOC %, teploty baterie a regulátoru, dnešní výrobu).
- Při startu odesílá inicializační událost
startups verzí skriptu.
Ochrany při výpadku a nedostupnosti
- Automatická detekce instance Modbus klienta (
detectMbClient):- Skript sám dynamicky najde zaregistrovanou komponentu
mbrtuclient:*. Pokud ještě není v systému přítomna (např. po konfiguraci nebyl proveden reboot), upozorní v logu a cyklus nespustí naprázdno.
- Skript sám dynamicky najde zaregistrovanou komponentu
- Výpadek sběrnice RS485 / Odpojení kabelu k regulátoru:
- Každé RPC volání
MbRtuClient.ReadInputRegistersmá callback s kontrolou chyb (error_code !== 0). - Při timeoutu nebo chybě komunikace (CRC error, nezodpovězeno) skript nevypíše výjimku a nezamrzne – zaloguje chybu pro daný blok a posune se na další skupinu nebo ukončí cyklus.
- Chybová hlášení do VictoriaLogs jsou chráněna časovým oknem (
errorIntervalSec: 60), aby nedocházelo k přetížení logovacího serveru při trvalém výpadku sběrnice. - Virtuální komponenty si uchovávají poslední platné hodnoty, nedochází k nastavení nesmyslných hodnot.
- Každé RPC volání
- Ochrana proti překrytí cyklů:
- Příznak
STATE.isPollingzabraňuje odstartování nového dotazovacího cyklu dříve, než doběhne předchozí sekvence všech 4 bloků registrů.
- Příznak
- Ochrana proti záporným teplotám:
- Funkce
toSignedInt16správně převádí 16bitové Modbus registry na celá čísla se znaménkem pro teploty pod 0 °C (v zimě).
- Funkce