Files
ems/docs/04-modules/modbus-registers-teltocharge.md
Dusan Vojacek 7e9cd933b6
All checks were successful
CI and deploy / migration-check (push) Successful in 13s
CI and deploy / deploy (push) Successful in 55s
V105: WB2 mimo EMS (endpoint disabled + schedulable=false), reaktivace dokumentovaná
Dle dotačních podmínek WB2 řídí elektroměr; EMS na něj přestane sahat
(poll i zápisy) — uvolní RS485 bránu. Zpětné zapnutí = 2 UPDATE
(komentář migrace + teltocharge doc).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 00:47:38 +02:00

4.2 KiB
Raw Blame History

Teltonika TeltoCharge — Modbus registry (EMS)

Zdroj: oficiální „TeltoCharge Modbus RTU Communication protocol" rev 0.5 (2024-07-23). Připojení: sdílená RS485 sběrnice → Waveshare RS485 TO POE ETH (B) 172.16.1.16:502 (V097; 9600 8N1, Modbus TCP↔RTU; WB1 = unit 1, WB2 = unit 2, plánovaný Chint = unit 3) → Modbus TCP (endpoint site_endpoint, FC 3 čtení, FC 6/16 zápis). Wallbox musí být v aplikaci nastaven jako secondary (server).

Čtení (telemetry_collector, blok 040 jedním FC 3)

Reg Význam Formát
02 Napětí L1L3 int16, V
35 Proud L1L3 int16, ×10 A
6 EVSE status (DLM) 0=C nabíjí · 13=B1B3 připojeno · 4=D1 stop od EV · 56=D2D3 zákaz · 7=A bez EV · 8=F chyba · 9=E
27 Charge point state 09 (informativní)
33 IEC61851 stav 08
34/35 Warning / Error bity bitfield
38 Okamžitý výkon uint16, W
39 Energie session uint16, kWh×100
40 Trvání session uint16, s
4144 Celková energie (FW ≥1.13) uint64, kWh×100

Mapování stavů v EMS (TELTO_STATUS_MAP v telemetry_collector.py): 7→available, 0→charging, 13→preparing, 4→suspended_ev, 56→suspended_evse, 8→faulted, 9→unknown. Detekce příjezdu/odjezdu (fn_ev_session_transition) stojí na přechodu available ↔ ≠available.

Při selhání čtení se vzorek NEzapisuje — fabrikovaný available by falešně ukončil session a EV výkon 0 by špinil bazál (pravidlo 15).

Zápis (control exporter — write_ev_setpoints, write_ev_arrival_hold)

Reg R/W Význam Hodnoty EMS zapisuje
15 R/W Amps to use (limit proudu) 0 = stop, 632 A hodnota z plánu (ev{1,2}_current_a); příjezd EV → hold 0 A
16 R/W Start/Stop session 0 nic · 1 stop · 2 start ne
19 R/W Communication timeout (watchdog) 0600 s (0 = vypnuto), default 30 TELTO_WATCHDOG_TIMEOUT_S = 300
20 R/W Failsafe current 0, 632 A, default 6 TELTO_WATCHDOG_FAILSAFE_A = 8

Všechny čtyři registry jsou dle oficiálního protokolu (wiki External control RS485 / protokol rev 0.5) R/W — verify job je čte zpět standardní FC 3 větví (žádný write-only registr v této sadě).

Write-on-change — POVINNÉ (EEPROM wear)

Export tick běží ~8×/hod (control_export :14,:29,:44,:59 + rolling replan */15 s exportem). Zápis do wallboxu se proto provádí jen při skutečné změně hodnoty: write_ev_setpoints i write_ev_arrival_hold filtrují registry přes _drop_registers_matching_last_verified proti ems.fn_modbus_device_state_map (nejnovější řádek journalu per registr se stavem written nebo verified). Důsledky:

  • reg 15 se zapíše jen při změně plánovaného proudu (0 ↔ 632 A) — to je legitimní zápis;
  • reg 19/20 se zapíší jednou po nasazení / po výpadku zařízení (nejnovější řádek failed/mismatch ⇒ registr v mapě chybí ⇒ znovu se zapíše) a pak už nikdy, dokud se hodnota nezmění;
  • čekání na verify neblokuje skip — written (TCP ack) stačí, mismatch z verify stav mapy zneplatní a vynutí nový zápis.

Watchdog — sytí ho i čtení

Protokol definuje timeout jako „if no valid communication is present after a configurable time interval…" — timer resetuje jakákoli validní Modbus komunikace s unit ID wallboxu, včetně FC 3 čtení. Telemetrie čte blok 040 každých 60 s, takže watchdog 300 s je trvale sycen čtením a periodické zápisy k udržení spojení nejsou potřeba. Failsafe (omezení na 8 A, reg 20 „max allowed current on comm timeout") nastane až po 5 min bez jakéhokoli pollingu = skutečný výpadek EMS; auto se pak přes noc dobije pomalu místo stání na 0 A.

WB2 mimo EMS (V105, 2026-06-13)

ev-charger-2 deaktivován (endpoint disabled + schedulable=false) — dle dotačních podmínek ho řídí elektroměr mimo EMS. Telemetrie ani zápisy na unit 2 neběží (RS485 brána 172.16.1.16 slouží jen WB1 + budoucí Chint). Reaktivace: dva UPDATE v komentáři V105__wb2_deactivate.sql.