From 721bf4938d6dad82bbfb06d86632b51f9df4fa1e Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 16:59:01 +0100 Subject: [PATCH 1/7] feat: confirm discharge gas temp --- identified.md | 2 +- qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/identified.md b/identified.md index 283f82c..0fb4b6c 100644 --- a/identified.md +++ b/identified.md @@ -22,7 +22,7 @@ analysis. | 38 | Internal Unit Temp | ×0.1 | °C | −2.2 – 21.8 | STATISTICAL | Tracks outdoor ambient +5°C offset; r=0.953 vs reg_39 — consistent with enclosure heat from inverter/compressor. AP mode label: "T3 Suction" | | 39 | Outdoor Ambient Temp | ×0.1 | °C | −5.5 – 17.4 | STATISTICAL | Range consistent with UK ambient over logging period. AP mode label: "Evaporator Temp" | | 40 | System Return Temp | ×0.1 | °C | 16.9 – 52.8 | CONFIRMED | Tracks Shelly return within −0.4°C during stable flow. Actual system return water temp (EWT). AP mode label: "T5 Return Temp" | -| 45 | Discharge Gas Temp | ×0.1 | °C | 17.3 – 84.1 | STATISTICAL | Only register reaching >60°C; r=0.922 vs flow temp; mean 7.6°C above condensing temp. AP mode label: "T10 Discharge" | +| 45 | Discharge Gas Temp | ×0.1 | °C | 17.3 – 84.1 | CONFIRMED | Only register reaching >60°C; r=0.922 vs flow temp; mean 7.6°C above condensing temp. AP mode label: "T10 Discharge" | | 47 | Flow Rate | ×0.01 | l/min | — | NAMED | Sika VVX20 flow meter built into unit | | 50 | Reported COP | ×0.01 | — | 2.75 – 5.97 | STATISTICAL | Mean 4.23 consistent with live COP; negative correlation with flow temp confirms higher lift → lower COP. Previously labelled "Suction Pressure" | | 51 | Compressor Speed | ×1 | % | 0 – 100 | STATISTICAL | Exact 0–100 range; correlates with compressor frequency | diff --git a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py index a91b1fe..4158021 100644 --- a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py +++ b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py @@ -160,12 +160,11 @@ # Previously misnamed "Condenser Mid Temp" — regs 29/30 are the actual # condenser (refrigerant) sensors. This is the water side. 44: {"name": "T9 Flow Temp", "scale": 0.1, "unit": "°C", "icon": "mdi:thermometer-water", "class": "temperature"}, - # CONFIRMED: DHW cylinder temp. During active DHW cycle (2026-02-18 - # 06:30-08:21), read 52.4°C rising to 54.4°C toward 55°C setpoint. - # Range 22-82°C spans ambient (off) through DHW boost temperatures. + # CONFIRMED: Compressor discharge gas temp. Matches HP installer page. + # Previously misnamed "DHW Cylinder Temp" - not available via Modbus # Previously misnamed "Compressor Shell Temp" — reg 56 is the actual # discharge temp (40.8°C), confirming this is NOT a compressor sensor. - 45: {"name": "DHW Cylinder Temp", "scale": 0.1, "unit": "°C", "icon": "mdi:thermometer-high", "class": "temperature"}, + 45: {"name": "Discharge Gas Temp", "scale": 0.1, "unit": "°C", "icon": "mdi:thermometer-high", "class": "temperature"}, # CONFIRMED (defrost validated, R290 cross-check): Primary frost signal. # Steady state 5.8-7.8°C. Drops to 0°C at defrost trigger. # Spikes to 37-55°C during hot gas defrost, decays as ice melts. From 7d8c422d0b421c08a4e45225573bc1f19c8ddc98 Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 17:06:19 +0100 Subject: [PATCH 2/7] feat: add fan suction register --- identified.md | 1 + qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/identified.md b/identified.md index 0fb4b6c..1e3812f 100644 --- a/identified.md +++ b/identified.md @@ -26,6 +26,7 @@ analysis. | 47 | Flow Rate | ×0.01 | l/min | — | NAMED | Sika VVX20 flow meter built into unit | | 50 | Reported COP | ×0.01 | — | 2.75 – 5.97 | STATISTICAL | Mean 4.23 consistent with live COP; negative correlation with flow temp confirms higher lift → lower COP. Previously labelled "Suction Pressure" | | 51 | Compressor Speed | ×1 | % | 0 – 100 | STATISTICAL | Exact 0–100 range; correlates with compressor frequency | +| 52 | Fan Suction | ×0.01 | Pa | - | CONFIRMED | Cross-check with HP installer page labelled: "Fan suction (Pa)" | | 53 | Compressor Frequency | ×0.1 | Hz | 0 – 60 | STATISTICAL | Raw 0–600 = 0–60 Hz; r=0.708 vs compressor speed % | | 64 | Heat Output | ×1 (signed Int16) | W | Observed: −8,870 to +6,745 (AdamLC 24h, 13 Apr 2026). Theoretical Int16: ±32,767 | CONFIRMED | r=0.999 vs flow×ΔT thermal calculation (heating, original identified.md analysis). Signed interpretation confirmed by two installations 13 Apr 2026: AdamLC defrost peaks −8,276 W / −8,870 W (raw 57,260 / 56,666); Stu startup transients −4 to −893 W. R48 phases during defrost validate reverse-cycle physics (3.85 bar equalized at entry, ~16 bar at peak-negative R64). | | 66 | Operating Mode | ×1 | enum | 0 – 3 | STATISTICAL | Discrete values 0/1/2/3 — likely Off / Heating / DHW / Defrost. Requires operational confirmation | diff --git a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py index 4158021..57fcc94 100644 --- a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py +++ b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py @@ -214,7 +214,9 @@ # idle 52.9 (/100=5.3), heating 35.6 (/100=3.6), DHW 32.0 (/100=3.2). # Higher COP at idle is physically expected (no lift, residual circulation). 50: {"name": "Reported COP", "scale": 0.01, "unit": "", "icon": "mdi:gauge", "class": None}, - + # CONFIRMED: Cross-validated with HP installer page during DHW cycle + 52: {"name": "Fan Suction", "scale": 0.01, "unit": "Pa", "icon": "mdi:gauge", "class": "pressure"}, + # --- Flow Rate --- # NAMED: Second sniffer matched to "Flow Rate" from HP installer page. # Value 1714. Units unclear — if ×0.01 = 17.14 l/min. From 9b273cb1ae3491a786d01263d5c49d32952193a5 Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 18:18:27 +0100 Subject: [PATCH 3/7] feat: confirm suction register --- identified.md | 2 +- qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/identified.md b/identified.md index 1e3812f..32731a1 100644 --- a/identified.md +++ b/identified.md @@ -24,7 +24,7 @@ analysis. | 40 | System Return Temp | ×0.1 | °C | 16.9 – 52.8 | CONFIRMED | Tracks Shelly return within −0.4°C during stable flow. Actual system return water temp (EWT). AP mode label: "T5 Return Temp" | | 45 | Discharge Gas Temp | ×0.1 | °C | 17.3 – 84.1 | CONFIRMED | Only register reaching >60°C; r=0.922 vs flow temp; mean 7.6°C above condensing temp. AP mode label: "T10 Discharge" | | 47 | Flow Rate | ×0.01 | l/min | — | NAMED | Sika VVX20 flow meter built into unit | -| 50 | Reported COP | ×0.01 | — | 2.75 – 5.97 | STATISTICAL | Mean 4.23 consistent with live COP; negative correlation with flow temp confirms higher lift → lower COP. Previously labelled "Suction Pressure" | +| 50 | Suction | ×0.01 | — | 2.75 – 5.97 | CONFIRMED | Cross-checked with HP installer page labelled: "Suction (bar). Previously labelled "Reported COP" | | 51 | Compressor Speed | ×1 | % | 0 – 100 | STATISTICAL | Exact 0–100 range; correlates with compressor frequency | | 52 | Fan Suction | ×0.01 | Pa | - | CONFIRMED | Cross-check with HP installer page labelled: "Fan suction (Pa)" | | 53 | Compressor Frequency | ×0.1 | Hz | 0 – 60 | STATISTICAL | Raw 0–600 = 0–60 Hz; r=0.708 vs compressor speed % | diff --git a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py index 57fcc94..33397a9 100644 --- a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py +++ b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py @@ -205,15 +205,9 @@ # 13 bar → 35.1°C (matches condenser inlet R29). 5 bar → 4.8°C (matches # equalized evaporator R55). Closed. 48: {"name": "Discharge Pressure", "scale": 0.01, "unit": "bar", "icon": "mdi:gauge-full", "class": "pressure"}, - # STATISTICAL (identified.md + 2026-04-05 analysis): Reported COP. - # Raw range 236-635 at scale ×0.01 = 2.36-6.35 (unitless ratio). - # identified.md: mean 4.23, negative correlation with flow temp (higher - # lift → lower COP). Cross-validated: reg_64/reg_27 implied COP ≈ 3.94, - # Δ = 7% from reg_50 — within measurement uncertainty. - # 2026-04-05: inversely correlated with power/heat output. Mode means: - # idle 52.9 (/100=5.3), heating 35.6 (/100=3.6), DHW 32.0 (/100=3.2). - # Higher COP at idle is physically expected (no lift, residual circulation). - 50: {"name": "Reported COP", "scale": 0.01, "unit": "", "icon": "mdi:gauge", "class": None}, + # CONFIRMED: Cross-validated with HP installer page during DWH cycle. + # Previously Reported COP but unlikely to be provided via Cosy + 50: {"name": "Suction", "scale": 0.01, "unit": "bar", "icon": "mdi:gauge", "class": "pressure"}, # CONFIRMED: Cross-validated with HP installer page during DHW cycle 52: {"name": "Fan Suction", "scale": 0.01, "unit": "Pa", "icon": "mdi:gauge", "class": "pressure"}, From 5156f4beed40b55e3ceb172662d3da71be715001 Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 18:35:46 +0100 Subject: [PATCH 4/7] fix: scale for fan suction --- qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py index 33397a9..65959b3 100644 --- a/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py +++ b/qsh-modbus-sniffer/rootfs/opt/qsh/cosy6_decoder.py @@ -209,7 +209,7 @@ # Previously Reported COP but unlikely to be provided via Cosy 50: {"name": "Suction", "scale": 0.01, "unit": "bar", "icon": "mdi:gauge", "class": "pressure"}, # CONFIRMED: Cross-validated with HP installer page during DHW cycle - 52: {"name": "Fan Suction", "scale": 0.01, "unit": "Pa", "icon": "mdi:gauge", "class": "pressure"}, + 52: {"name": "Fan Suction", "scale": 1, "unit": "Pa", "icon": "mdi:gauge", "class": "pressure"}, # --- Flow Rate --- # NAMED: Second sniffer matched to "Flow Rate" from HP installer page. From bc02f697b620afe69f4e97ff71c9f158277b70ca Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 21:37:21 +0100 Subject: [PATCH 5/7] fix: scale for fan suction --- identified.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/identified.md b/identified.md index 32731a1..6783567 100644 --- a/identified.md +++ b/identified.md @@ -26,7 +26,7 @@ analysis. | 47 | Flow Rate | ×0.01 | l/min | — | NAMED | Sika VVX20 flow meter built into unit | | 50 | Suction | ×0.01 | — | 2.75 – 5.97 | CONFIRMED | Cross-checked with HP installer page labelled: "Suction (bar). Previously labelled "Reported COP" | | 51 | Compressor Speed | ×1 | % | 0 – 100 | STATISTICAL | Exact 0–100 range; correlates with compressor frequency | -| 52 | Fan Suction | ×0.01 | Pa | - | CONFIRMED | Cross-check with HP installer page labelled: "Fan suction (Pa)" | +| 52 | Fan Suction | ×1 | Pa | - | CONFIRMED | Cross-check with HP installer page labelled: "Fan suction (Pa)" | | 53 | Compressor Frequency | ×0.1 | Hz | 0 – 60 | STATISTICAL | Raw 0–600 = 0–60 Hz; r=0.708 vs compressor speed % | | 64 | Heat Output | ×1 (signed Int16) | W | Observed: −8,870 to +6,745 (AdamLC 24h, 13 Apr 2026). Theoretical Int16: ±32,767 | CONFIRMED | r=0.999 vs flow×ΔT thermal calculation (heating, original identified.md analysis). Signed interpretation confirmed by two installations 13 Apr 2026: AdamLC defrost peaks −8,276 W / −8,870 W (raw 57,260 / 56,666); Stu startup transients −4 to −893 W. R48 phases during defrost validate reverse-cycle physics (3.85 bar equalized at entry, ~16 bar at peak-negative R64). | | 66 | Operating Mode | ×1 | enum | 0 – 3 | STATISTICAL | Discrete values 0/1/2/3 — likely Off / Heating / DHW / Defrost. Requires operational confirmation | From 8aa13080df0ac6eaa9c76a27cadd9f16705d30a0 Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 21:37:50 +0100 Subject: [PATCH 6/7] docs: update changelog for revised registers --- qsh-modbus-sniffer/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/qsh-modbus-sniffer/CHANGELOG.md b/qsh-modbus-sniffer/CHANGELOG.md index 3b68830..82cee62 100644 --- a/qsh-modbus-sniffer/CHANGELOG.md +++ b/qsh-modbus-sniffer/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 4.10.0 - 2026-07-26 + +### Revise registers based on cross-validation + +Updated the following registers based on HP installer page +`Cosy Modbus Reg 52` -> `Fan suction` +`Cosy DHW Cylinder Temp` -> `Discharge Gas Temp` +`Cosy Reported COP` -> `Suction` + ## 4.9.0 - 2026-07-26 ### Breaking From 38a19e7764ea80d4016f8f410f624c04cedfb080 Mon Sep 17 00:00:00 2001 From: johncuthbertuk Date: Sun, 26 Jul 2026 21:39:33 +0100 Subject: [PATCH 7/7] chore: update version to 4.10.0 --- qsh-modbus-sniffer/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qsh-modbus-sniffer/config.yaml b/qsh-modbus-sniffer/config.yaml index 7fb9e3b..987f6c3 100644 --- a/qsh-modbus-sniffer/config.yaml +++ b/qsh-modbus-sniffer/config.yaml @@ -1,6 +1,6 @@ name: "QSH Modbus Sniffer" description: "Passive Modbus RTU sniffer for Octopus Cosy 6 heat pump. Captures all traffic between hub and outdoor unit via Waveshare RS485-to-WiFi gateway." -version: "4.9.0" +version: "4.10.0" slug: "qsh_modbus_sniffer" url: "https://github.com/stuartleeks/qsh-modbus-sniffer" arch: