-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
After extensive research across john30/ebusd-configuration issues, community gists, and testing on a live Vaillant eloBLOCK VE 14 (PROD=0010023658, SW=0109, HW=7503), I've gathered several findings that might help improve this project's configuration files.
1. PartloadHwcKW (D.77) — confirmed address A900 ✅ HIGH PRIORITY
Finding: Register address A900 for PartloadHwcKW (D.77, hot water partload / charging power) has been confirmed working on multiple eloBLOCK models by the community:
- 0010023657 (SW=0109, HW=7503) — confirmed by @AznKid45 and @stalniy (gist)
- 0010023684 (SW=0108, HW=7503) — confirmed by @Akeebaby
- 0010023691 — confirmed by @carhensi
Source: john30/ebusd-configuration issue #254 and PR #567 (submitted 2026-02-13, not yet merged).
What it enables: Control of storage charging power in 1–9 kW steps (for VE 9/14 models) or the equivalent range for VE 14/18. This is the most practical way to do software power limiting until D.152/D.153 register addresses are found (see §3 below).
Proposed line for bai.0010023658.inc:
r;wi,,PartloadHwcKW,d.77 hot water partload,,,,A900,,,UCH,,kW,Storage charging power limitNote: The current bai.0010023658.inc has this line commented out:
#r;wi,,PartloadHwcKW,d.77 hot water partload,,,,0804,,,UCH,,,storage part load
Address 0804 is likely wrong for this model (it's from the gas boiler generic fallback). The confirmed address is A900, same as models 0010023657 / 0010023684 / 0010023691.
Action requested: Uncomment/add PartloadHwcKW with address A900 for model 0010023658.
2. CurrentPower (D.108, E601) — data type investigation needed 🔍
Current state in config:
r,,CurrentPower,d.108 Power now,,,,E601,,,HEX:2,,kW,Current real-time power outputFinding: @Akeebaby (0010023684, SW=0108, HW=7503) had this line commented out with the comment "Additional electric parameters is total error" — see issue #254 comment (Nov 27, 2025).
Our live test result on 0010023658 SW=0109:
CurrentPowershowsunavailableafter enabling in config and restarting ebusd- Could be: wrong data type, wrong address variant for SW=0109, or the register only responds during active heating
Debug command to determine correct data type:
ebusctl hex b509 0d E601- 1-byte response → try
UCH(unsigned char, 0–255 kW) - 2-byte response → try
UIN(unsigned int, LE) orSIN ERR: invalid position→ either wrong register or requires multi-field decode- No response / timeout → register may not be accessible on SW=0109
From official manual 0020265768_01: D.108 type is listed as UIN (not UCH or HEX:2). This conflicts with @Akeebaby's HEX:2 choice — worth testing both on an active boiler.
Note on D.155 vs D.108: The manual also mentions D.155 as "current output (continuously updated)". These might be the same eBUS register or two different ones. If D.108 (E601) fails, searching for D.155 via grab scan might reveal an alternative address.
Action requested: If anyone with an active eloBLOCK can run ebusctl hex b509 0d E601 during heating and share the raw response bytes, that would resolve the data type question.
3. D.152/D.153 (PowerLimiterPhase / PowerLimiterValue) — eBUS addresses unknown 🔍 HIGH VALUE
Context: According to the official Vaillant manual (0020265768_01), parameters D.152 and D.153 allow software power limiting without any dry-contact hardware:
| Code | Description | Values |
|---|---|---|
| D.152 | Output limiter — phase selection | 0=no limit, 1=phase1, 2=phase2, 3=phase3, 4=all phases |
| D.153 | Output limiter — power reduction value (kW) | subtracted from max configured power |
Example: MaxPower=14kW, D.152=4 (all phases), D.153=6kW → actual output = 8kW
Current status: eBUS register addresses for D.152/D.153 are not found in any public source (GitHub issues, HA Community, OpenEnergyMonitor, ioBroker, Reddit, ManualsLib, 4PDA, ab-log.ru).
Recommended method to find them (from @stalniy's gist and @john30's guidance in issue #36):
# Step 1: Enable hex access in ebusd (EBUSD_ENABLEHEX=1 in environment)
# Step 2: Dump all registers BEFORE changing D.152/D.153 on boiler display
# Script: https://github.com/stalniy/ebusd/blob/feat/retry_for_read_all/contrib/scripts/readallvaillantregisters.sh
./readallvaillantregisters.sh > registers_before.txt
# Step 3: Go to boiler display, change D.152 from 0 to 4 (all phases)
# OR change D.153 from 0 to 6 (kW)
# Step 4: Dump registers again immediately
./readallvaillantregisters.sh > registers_after.txt
# Step 5: Compare — the changed register(s) = D.152/D.153 eBUS address
diff registers_before.txt registers_after.txtWhy this matters: This is the key to enabling Home Assistant energy management automation — e.g., automatically reducing boiler power when washing machine/oven is running, without installing a physical relay. The vaillant_power.yaml automation currently requires an ESPHome relay. D.152/D.153 via eBUS would eliminate the need for additional hardware entirely.
Action requested: Anyone willing to perform the grab diff scan please share results here!
4. PowerValue (AA00) — proposed byte layout decoding 💡
Current definition:
r,,PowerValue,PowerValue,,,,AA00,,,HEX:6,,,"Power Values of the Boiler (min Power, max Power)"Observed value on eloBLOCK VE 14 (0010023657, HW=7503, from issue #254):
bai PowerValue = 11 02 64 0e 64 0e
Hypothesis for byte layout (VE 14 = 14 kW max):
| Byte | Hex | Dec | Interpretation |
|---|---|---|---|
| [0] | 0x11 | 17 | Unknown header / coding resistor variant |
| [1] | 0x02 | 2 | Min power = 2 kW |
| [2] | 0x64 | 100 | Unknown (scale factor / 100%?) |
| [3] | 0x0E | 14 | Max power = 14 kW ✅ |
| [4] | 0x64 | 100 | Unknown |
| [5] | 0x0E | 14 | Max power repeated? |
For a VE 14 boiler: min=2 kW, max=14 kW perfectly matches specification.
Action requested: If anyone with a different power rating (VE 9 or VE 18) could share their PowerValue hex output, that would confirm the decoding. Commands:
ebusctl read PowerValue
# or
ebusctl hex b509 0d AA005. SetModeOverride — thermostat emulation (not in current config)
Finding from @stalniy (confirmed on 0010023657, SW=0109, HW=7503): The SetModeOverride command enables full thermostat emulation over eBUS — no external thermostat hardware needed.
Recommended line to add to bai.0010023658.inc:
wi,bai,SetModeOverride,Operation Mode,,08,"B510","00",hcmode,,UCH,,,,flowtempdesired,,D1C,,,,hwctempdesired,,D1C,,,,hwcflowtempdesired,,UCH,,,,setmode1,,UCH,,,,disablehc,,BI0,,,,disablehwctapping,,BI1,,,,disablehwcload,,BI2,,,,setmode2,,UCH,,,,remoteControlHcPump,,BI0,,,,releaseBackup,,BI1,,,,releaseCooling,,BI2Usage:
# Set flow temperature to 55°C, heating on, DHW on
ebusctl w -c bai SetModeOverride "0;55;45;-;-;0;0;0;-;0;0;0"Important: This command must be resent every ~60 seconds — otherwise the boiler reverts to its own display settings. Official VRC thermostats send it every few seconds.
6. HeatingStage1/2/3 and ActiveStages — verification status
Current config has these active for 0010023658:
r;wi,,HeatingStage1,d.100 Stage1 enable,,,,ED01,,,onoff,...
r;wi,,HeatingStage2,d.101 Stage2 enable,,,,EE01,,,onoff,...
r;wi,,HeatingStage3,d.102 Stage3 enable,,,,EF01,,,onoff,...
r,,ActiveStages,d.103 Stages active,,,,F001,,,UCH,...Observed on 0010023658 SW=0109: All four show unavailable after ebusd restart, even when boiler is connected and signal is acquired.
@Akeebaby (0010023684, SW=0108) has all these commented out with "total error" in their config.
Possible causes:
- Registers only respond during active heating cycle
- Address correct but data type wrong (try
UCHwith0=off;1=oninstead ofonoff) - Address only valid for certain SW versions
Debug command: ebusctl hex b509 0d ED01 (run during active heating)
7. ElementHours data type (C401) — unverified
Current config:
r,,ElementHours,d.106 Elements runtime,,,,C401,,,hoursum2,...hoursum2 is the type used for gas boiler HcHours. For an electric boiler, consider also testing UIN (unsigned int):
r,,ElementHours,d.106 Elements runtime,,,,C401,,,UIN,,h,Heating elements total operating hours8. atmoTEC (0010015251) — SW-version guards for CO sensor parameters
The current bai.0010015251.inc includes e.04–e.19 CO sensor parameters. Per the README, most return errors on SW=0407.
Suggestion: Add [SW>=xxx] version guards (similar to the existing [SW>=413] guard for APCLegioProtection) to reduce error noise in ebusd logs for unsupported SW versions.
Test Environment
| Parameter | Value |
|---|---|
| Model | Vaillant eloBLOCK VE 14 |
| PROD | 0010023658 |
| SW | 0109 |
| HW | 7503 |
| ebusd instance 1 | HA addon (LukasGrebe/ha-addons) |
| ebusd instance 2 | Docker container (separate server) |
| HA | Home Assistant OS (current) |
Priority Summary
| # | Finding | Priority | Effort to fix |
|---|---|---|---|
| 1 | Add PartloadHwcKW at A900 | 🔴 High | 1 line |
| 3 | Find D.152/D.153 addresses | 🔴 High | Grab scan needed |
| 2 | Fix CurrentPower E601 type | 🟡 Medium | 1 debug command |
| 4 | Document PowerValue decoding | 🟡 Medium | Comment addition |
| 5 | Add SetModeOverride | 🟡 Medium | 1 line |
| 6 | Verify HeatingStage registers | 🟢 Low | Test needed |
| 7 | Fix ElementHours type | 🟢 Low | 1 line |
| 8 | atmoTEC SW version guards | 🟢 Low | Minor |
Thank you for this project — it's the best existing resource for Vaillant eloBLOCK eBUS integration!