Compatibility gate: check the serial tag, not the model name

Platform is identified by characters 6-8 of the serial number, and only
platform 105 (ES/EM/BP - ESU EMU ESA BPS BPU EMJ IJL) speaks the AA55-era
meter bus this product emulates. The reference unit is 95000BPS225W0290 -> BPS.

Everything with a "-20"/G2 suffix is a different platform: SBP G2 (SPB/SPN) and
ES G2 (ESN/ESC) are platform 745, ET/EH/BT are 205/745/753. PV-only inverters
(SDT/DST/MSU/NSU) have no battery to control at all.

Added as the first item in Step 0 of the field guide, because it is a 60-second
check that decides whether the job can be quoted, and as a table in the README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NckgXecasQb2eSsPYNSW6
This commit is contained in:
2026-08-23 01:56:20 +02:00
co-authored by Claude Opus 5
parent 266684bed7
commit 1abca15520
4 changed files with 55 additions and 0 deletions
+15
View File
@@ -69,6 +69,21 @@ on real hardware, and the comments in `control.py` say which.
## Compatibility
**Check the serial number, not the model name.** Characters 6-8 of the serial are
the platform tag:
| tag | platform | verdict |
|---|---|---|
| `ESU EMU ESA BPS BPU EMJ IJL` | 105 — ES/EM/BP, AA55-era meter bus | **supported** |
| `SPB SPN` | 745 — SBP **G2** (`GW…-SBP-20`) | no |
| `ESN ESC` | 745 — ES **G2** (`GW…-ES-20`) | no |
| `ETU EHU BTU …` | 205/745/753 — ET/EH/BT hybrids | no |
| `SDT DST MSU NSU …` | PV-only inverters — no battery to control | no |
A "-20" or "G2" suffix means a different platform with a different meter
protocol. The tags come from the `goodwe` library's `PLATFORM_105_MODELS`, which
is also what Home Assistant's own integration uses to pick a protocol.
- GoodWe **ES / BP family** inverters (AA55 / RS485 meter-bus generation)
- The protocol is **reverse-engineered**. There is no vendor contract, and a
firmware change on GoodWe's side could break every installation at once. Say
Binary file not shown.
+20
View File
@@ -146,6 +146,26 @@ figcaption { font-size:9pt; color:#5b6169; margin-top:1.2mm; }
<!-- ============ PAGE 2 ============ -->
<div class="page" id="p2">
<h2>Step 0 — Before you travel</h2>
<div class="crit">
<h3>Compatibility gate — 60 seconds, do this first</h3>
<p>Read the inverter's <b>serial number</b> (label, app, or portal) and take
<b>characters 68</b>. That three-letter tag is the platform.</p>
<table style="margin-bottom:2mm">
<tr><th style="width:34mm">Tag</th><th>Platform</th><th style="width:30mm">Verdict</th></tr>
<tr><td><code>ESU EMU ESA BPS<br>BPU EMJ IJL</code></td>
<td><b>Platform 105</b> — ES / EM / BP, AA55-era meter bus</td>
<td><b>SUPPORTED</b></td></tr>
<tr><td><code>SPB SPN</code></td><td>SBP <b>G2</b> (GW…-SBP-20) — platform 745</td><td><b>NO</b></td></tr>
<tr><td><code>ESN ESC</code></td><td>ES <b>G2</b> (GW…-ES-20) — platform 745</td><td><b>NO</b></td></tr>
<tr><td><code>ETU EHU BTU …</code></td><td>ET / EH / BT hybrids — platform 205/745/753</td><td><b>NO</b></td></tr>
<tr><td><code>SDT DST MSU NSU …</code></td><td>PV-only inverters — <b>no battery to control</b></td><td><b>NO</b></td></tr>
</table>
<p style="margin:0"><small>Reference unit: <code>95000BPS225W0290</code> → <code>BPS</code> → supported.
A “-20” or “G2” suffix in the model name means a different platform with a different meter
protocol. <b>If the tag is not on the supported list, stop — do not quote the job.</b></small></p>
</div>
<div class="cols">
<div class="box">
<h3>Confirm with the client</h3>
+20
View File
@@ -111,6 +111,26 @@ figcaption { font-size:9pt; color:#5b6169; margin-top:1.2mm; }
<!-- ============ PAGE 2 ============ -->
<div class="page" id="p2">
<h2>Step 0 — Before you travel</h2>
<div class="crit">
<h3>Compatibility gate — 60 seconds, do this first</h3>
<p>Read the inverter's <b>serial number</b> (label, app, or portal) and take
<b>characters 68</b>. That three-letter tag is the platform.</p>
<table style="margin-bottom:2mm">
<tr><th style="width:34mm">Tag</th><th>Platform</th><th style="width:30mm">Verdict</th></tr>
<tr><td><code>ESU EMU ESA BPS<br>BPU EMJ IJL</code></td>
<td><b>Platform 105</b> — ES / EM / BP, AA55-era meter bus</td>
<td><b>SUPPORTED</b></td></tr>
<tr><td><code>SPB SPN</code></td><td>SBP <b>G2</b> (GW…-SBP-20) — platform 745</td><td><b>NO</b></td></tr>
<tr><td><code>ESN ESC</code></td><td>ES <b>G2</b> (GW…-ES-20) — platform 745</td><td><b>NO</b></td></tr>
<tr><td><code>ETU EHU BTU …</code></td><td>ET / EH / BT hybrids — platform 205/745/753</td><td><b>NO</b></td></tr>
<tr><td><code>SDT DST MSU NSU …</code></td><td>PV-only inverters — <b>no battery to control</b></td><td><b>NO</b></td></tr>
</table>
<p style="margin:0"><small>Reference unit: <code>95000BPS225W0290</code><code>BPS</code> → supported.
A “-20” or “G2” suffix in the model name means a different platform with a different meter
protocol. <b>If the tag is not on the supported list, stop — do not quote the job.</b></small></p>
</div>
<div class="cols">
<div class="box">
<h3>Confirm with the client</h3>