EV telemetrie: skutečné čtení Teltonika TeltoCharge (konec stub-u)
Some checks failed
CI and deploy / migration-check (push) Failing after 23s
CI and deploy / deploy (push) Has been skipped

poll_ev_chargers četl placeholder ('available'/0 W) — EV spotřeba se nikdy
neodečítala z bazálu a session detekce nefungovala. Nyní: blok registrů 0-40
jedním FC 3 (oficiální protokol rev 0.5), parse_teltocharge_frame (status z
reg 6 → available/preparing/charging/..., výkon reg 38, energie session reg 39,
proud max L1-L3 reg 3-5). Při selhání čtení se vzorek NEzapisuje (fabrikovaný
available by falešně ukončoval session).

fn_telemetry_ev_charger_sample: + p_current_a (drop staré 7-arg signatury).
6 nových testů parseru; plná sada beze změny. Docs: modbus-registers-teltocharge.md.

Po deployi: home-01 ev-charger-1/2 začnou posílat reálná data; bazál se začne
čistit od EV (EMA 00:30); rebuild stats má smysl až po ~2 týdnech čisté historie.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-11 22:10:46 +02:00
parent 53e9afb513
commit 5239463699
4 changed files with 186 additions and 10 deletions

View File

@@ -0,0 +1,42 @@
# Teltonika TeltoCharge — Modbus registry (EMS)
Zdroj: oficiální „TeltoCharge Modbus RTU Communication protocol" rev 0.5
(2024-07-23). Připojení: RS485 → Waveshare → 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 (budoucí řízení — zatím NEimplementováno)
| Reg | Význam | Hodnoty |
|-----|--------|---------|
| 15 | **Amps to use** (limit proudu) | 0 = stop, 632 A |
| 16 | Start/Stop session | 0 nic · 1 stop · 2 start |
| 19 | Communication timeout (watchdog) | 0600 s (0 = vypnuto) |
| 20 | Failsafe current | 0, 632 A |
Až se zapne řízení: zapisovat reg 15 přes journal `modbus_command`
(pravidlo 17) a nastavit watchdog (reg 19/20) — při výpadku EMS wallbox
spadne na failsafe proud.