Přeskočit na hlavní obsah

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. 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
  • 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, stream room="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 startup s 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.
  • Výpadek sběrnice RS485 / Odpojení kabelu k regulátoru:
    • Každé RPC volání MbRtuClient.ReadInputRegisters má 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.
  • Ochrana proti překrytí cyklů:
    • Příznak STATE.isPolling zabraňuje odstartování nového dotazovacího cyklu dříve, než doběhne předchozí sekvence všech 4 bloků registrů.
  • Ochrana proti záporným teplotám:
    • Funkce toSignedInt16 správně převádí 16bitové Modbus registry na celá čísla se znaménkem pro teploty pod 0 °C (v zimě).