Rozchozeno po třech vrstvách: protokol převodníku Modbus TCP to RTU (byl None), parita EVEN, adresa MIM 5 (seed měl 1). První živé čtení: EHS typ 115, comm ready, mode heat, prostor 20 °C, voda 54.4 °C, TUV zásobník 46.6 °C, bez chyb. Defrost reg: 0 i 0xFF znamená OFF (manuál), bool() by 255 četl jako zapnuto. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.1 KiB
Samsung MIM-B19N(T) — Modbus registry (TČ EHS, home-01)
Modbus interface modul Samsungu (DVM/EHS). EMS k němu mluví přes Waveshare RS485 TO POE ETH (B) na 172.16.1.17:502 (V096; dříve placeholder 192.168.1.103). Zdroj: instalační manuál MIM-B19N(T) (DB68-07538A-03).
Sériová linka a převodník — POVINNÉ nastavení
| Parametr | Hodnota |
|---|---|
| Baud rate | 9600 |
| Data bits | 8 |
| Parita | EVEN (nejčastější chyba — Waveshare default je None!) |
| Stop bit | 1 |
| Protokol | Modbus RTU, MIM = slave |
| Adresa MIM | DIP SW4/SW5 + rotary SW1, rozsah 1–247 (čte se jen při zapnutí!); EMS unit_id = tato adresa (home-01: 1) |
| Waveshare work mode | TCP Server, local port 502, protokol Modbus TCP ↔ RTU (jinak EMS nespojí — port 502 zavřený) |
| FC podporované | 0x03, 0x04 čtení; 0x06, 0x10 zápis |
| Mezera mezi dotazy | ≥ 10 ms po poslední odpovědi |
Polarita A/B: při prohození MIM neodpovídá vůbec (timeout na FC3), Y-GRN LED
na MIM nebliká k BMS. 7segment na MIM: E6+16 střídavě = ztracená
komunikace, E6+04 = tracking nedoběhl, E6+34 = chybná adresa.
Adresace registrů
Vnitřní jednotka IU (adresa 0–47, nastavená na jednotce) má blok base = 50 + IU×50. home-01 EHS = IU 0 → blok 50–99. Hodnoty teplot °C×10, signed, big endian. Po startu MIM jsou všechny registry 0, dokud nedoběhne tracking (~minuty).
Modulové registry (PDU 0–3)
| Reg | Význam | R/W |
|---|---|---|
| 0 | Stav modulu: b0 address error, b1 comm error R1/R2, b2 tracking error | R |
| 1 | Chybový kód venkovní jednotky (0 = OK, 100–999) | R |
| 2 | Defrost (0 i 0xFF = off, jiné hodnoty = on) | R |
| 3 | Bzučák (0 on / 1 off) | W |
Blok vnitřní jednotky (base+offset; EHS sloupec)
| Off | Význam | R/W | Poznámka |
|---|---|---|---|
| +0 | Comm status: b0 exist, b1 type OK, b2 ready, b3 comm error | R | gate pollu: (v&7)==7 |
| +1 | Typ jednotky (lower byte): 110 HE, 115–117 EHS, 120 HT | R | |
| +2 | Zapnuto/vypnuto (0/1) | R/W | |
| +3 | Režim: 0 auto, 1 cool, 4 heat | R/W | |
| +8 | Set teplota ×10 (cool 18–30, heat 16–30) | R/W | |
| +9 | Prostorová teplota ×10 | R | → room_temp_c |
| +13 | Chybový kód jednotky (0 OK, 100–999) | R | → alarm_code |
| +14 | Blokace dálkového ovládání (0x0000 / 0x6363) | R/W | |
| +15 | Teplota vody vstup ×10 | R | → water_inlet_temp_c |
| +16 | Teplota vody výstup ×10 | R | → water_outlet_temp_c |
| +18 | Set teplota výstupní vody ×10 (EHS heat 15–65 °C) | R/W | budoucí řízení |
| +22 | TUV zapnuto/vypnuto | R/W | |
| +23 | TUV režim: 0 Eco, 1 Standard, 2 Power, 3 Force (jen EHS) | R/W | |
| +24 | TUV set teplota ×10 (EHS 30–70 °C) | R/W | budoucí řízení |
| +25 | TUV teplota zásobníku ×10 | R | → tuv_tank_temp_c |
| +28 | Tichý režim (0/1) | R/W | |
| +29 | Away (0/1) | R/W |
Telemetrie EMS (poll 60 s, poll_heat_pump)
Jeden FC3 blok base+0..+25 (26 registrů) + modulový reg 2 (defrost) →
ems.fn_telemetry_heat_pump_sample. operating_mode: off / heat /
cool / auto / dhw / heat+dhw / error / (offline se nezapisuje —
vzorek se přeskočí, jednotka bez trackingu hlásí samé nuly).
Příkon (power_w) MIM neposkytuje — zůstává NULL, dokud nebude
elektroměr (Shelly EM / Chint na RS485). Bazální spotřeba (CLAUDE.md §15)
do té doby TČ neodečítá.
Zápisy (on/off, set teploty, TUV): zatím neimplementováno; půjdou přes
control exporter + modbus_command journal jako u Deye (FC 0x06/0x10).
Pozn. manuálu: každý write MIM přepošle jednotce, i když hodnota nemění —
zapisovat jen při skutečné změně.
Stav zapojení (2026-06-12 večer — ŽIVÉ)
Rozchozeno: převodník TCP Server :502, protokol Modbus TCP to RTU (default None = mrtvo!), 9600 8E1, adresa MIM 5. První čtení: EHS typ 115, comm ready 0b111, mode heat, prostor 20.0 °C, voda 54.4 °C, TUV 46.6 °C, bez chyb. Časté zádrhely při oživování: protokol None, parita None místo EVEN, adresa DIP (čte se jen při startu).