# Frisko RX910-SE21: what we know Sources: [research/frisko/](../../research/frisko/README.md). 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.pdf` is the official map (~90 registers) and has no scales: take them from `RX910-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.pdf` is the closest reference. - `frisko/mr208_m3p.csv` on `archive/spring-boot-attempt` is 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](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](history-2026-10.md)): the heater signal comes 20 min into a CWU cycle (4147), `zb_state` 2 = 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.