CI / Check (gateway, backend, frontend) (push) Successful in 1m8s
The app showed the controller's heater signal as a device, a detail and a statistic. Drop it from the API (heaterOn, heaterHours) and the UI; the gateway still records output_heater as raw data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.3 KiB
4.3 KiB
Frisko RX910-SE21: what we know
Sources: research/frisko/. Facts here are verified on the device unless marked otherwise.
Identity and protocol
- Heat pump controller RX910-SE21, firmware v24062015: a read of 4131–4133 gave 18/19/15 (whole °C; firmware v10112017 uses tenths).
- Behind the MK01 gateway (
192.168.0.150:502, Modbus TCP → RTU 9600 8N1). One TCP client at a time; a new one drops the old. - FC 3 read, FC 6 write verified 2026-10-23 (4143 8 → 9: echo OK, read-back 9 after 1 s, no password needed); FC 16 per MR208-PC+ docs. Values are sign-magnitude integers; the baseline's "legacy wrap" decodes this. Addresses are raw (4131 is 4131).
RX910-SE21-AdresyMODBUS.pdfis the official map (~90 registers) and has no scales: take them fromRX910-SE21_v24062015.xml(format, min/max). Scale is per register, not a global 0.1.- No SE21 manual for the control logic;
MR208-PC+_9P_v3.pdfis the closest reference. frisko/mr208_m3p.csvonarchive/spring-boot-attemptis for MR208-M3+: do not use.
Registers we rely on
| Group | Registers | Notes |
|---|---|---|
| Temperatures | 4065 outdoor, 4066 indoor, 4067 CO/buffer, 4069 CWU, 4070/4071 ground in/out, 4072 pump outlet, 4199 avg outdoor | X10 |
| Targets now | 4201 room, 4202 CO supply, 4203 CWU | X10; show economy vs comfort period |
| State | 4227 pump (0 stop, 1 CO, 2 CWU, 3 both), 4226 program, 4221 alarm, 4073 pressure switch | |
| Outputs | 4112 CO, 4113 buffer, 4114 compressor (0/33/66/100), 4115 heater signal (heater not connected), 4116 circulation, 4117 ground, 4118 CWU | 0 or 100 |
| Setpoints (F3) | 4131/4132 CO economy/comfort (5–35), 4143/4144 CWU economy/comfort (5–70) | whole °C |
| Protection | 4158 TmaxPc = 52 °C, 4149 TmaxCWU = 55, 4148 HistCWU = 5, 4146 PriorCWU = 1, 4147 heater signal delay = 20 | read 2026-10-23 |
| Compressor | 4166 zwlZSt(II) = 30 min (stage 2 delay; was 20, matching history, until the owner-approved one-time write of 2026-10-25, read back 30), 4165 zwlZSt(..) = 10 (likely stage 3, never seen), 4162 t_wylSpr = 5 min (minimum off, matches the 18:20 stop / 18:25 restart), 4160 t_zwlZalSpr = 20, 4161 t_zwlWylPdz = 20, 4163 t_minSpr = 160, 4164 t_maxSpr = 230 (units unknown); 4157 TminDz = −3, 4159 ∆TmaxDz = 10 | FC3 read 2026-10-25, 4166 written and read back 2026-10-25 |
| CWU extras | 4150 TpodbCWU = 5, 4151 t_podbCWU = 15, disinfection 4152–4154 = 7 days / 60 °C / 60 min (off: 4145 = 0), 4155/4156 t_zal/wylCCW = 2/2; 4246, 4247 read garbage (not on this firmware) | FC3 read 2026-10-25 |
Unknown: 4119 WyCHL reads −14308. Vendor-app findings, all unverified: app-knowledge.md.
Weekly program
Behind a selector: write circuit (4177) and day (4167), then read or write the intervals (4169–4176). Reading it is therefore not read-only, and the selector is shared with the panel and the Frisko app. Party mode (4140 = 2, hours in 4142) is a simpler "heat now" override.
Observed behaviour
- 2026-10-23 21:52: pump stop, weekly program, all outputs 0, targets 18.0 / 31.0 / 8.0 °C (economy period). 5 blocks, 36 registers in 2.5 s.
- CWU is heated daily at ~11:00 and ~17:30 to ~44 °C (~15–20 °C/h, pump outlet ~47 °C). Slow morning rises with the pump off come from the solar collector.
- The pump outlet tops out at ~52 °C (TmaxPc), so the pump alone reaches ~47–48 °C in the tank. Higher CWU values in history occur only in summer (solar).
- Setting CWU above what the pump reaches raises the controller's heater signal (after the delay; the heater is not connected) and risks pressure-switch trips; three trips in one cycle latch a fault until manual reset (MR208-PC+ docs).
- Frisko phone app: direct Modbus TCP, LAN only, 200–300 ms between requests, 5 s timeout.
- History analysis of 2026-10 (history-2026-10.md): the heater signal comes 20 min into a
CWU cycle (4147),
zb_state2 = that signal. The heater is not connected (owner, 2026-10-25); at the same moment the compressor goes from stage 1 to 2 (the +0.9 kW meter step, three-phase); at an outlet of 52 °C (TmaxPc) it stops; 4227 is unreliable for "heating CWU"; the controller clock does not follow DST; period = target compared with the setpoints, valid only with 4226 = 1.