# eBUS binding 5.x + Vaillant VRC 470: can DHW mode / “1 x tank charge” be triggered from the bus? (writes to 0x42 ignored)

**URL:** <https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856>\
**Category:** Bindings\
**Tags:** ebus\
**Created:** [November 3, 2026, 1:55pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856 "2026-11-03T13:55:14Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![witek\_1308](https://community.openhab.org/letter_avatar_proxy/v4/letter/w/eb9ed0/32.png) [@witek\_1308](https://community.openhab.org/u/witek_1308)\
**Post date:** [November 3, 2026, 1:55pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/1 "2026-11-03T13:55:14Z")

</div>

**Setup**  
openHAB 5.x, eBUS binding 5.0.0 (ebus-configuration 1.1.10, ebus-core 1.1.14), self-built eBUS adapter. Vaillant ecoTEC (BAI00, addr 08), calorMATIC VRC 470/4 (addr 15), VR61 mixer module (addr 50), VR81 (addr 75), DHW cylinder.

**Goal**  
Trigger a one-time DHW charge outside the time program from openHAB (the panel function “1 x ładowanie zasobnika” / “1 x tank charge”), and ideally switch the DHW mode Auto / Day / Off.

**What works**  
Reads of everything I tried, and writes of ordinary parameters: HC1 day setpoint (`0D/0E 27 00`), DHW setpoint (`0x44`), controller time. Changes reach the VRC display within ~20–30 s.

**What I found (from raw logs and panel changes)**

1. Register `0x42` (`B5 09 0D 42 00`, built-in `dhw.program_dhw_circuit`) follows the panel: Off = 0, Auto = 2, and **6 during the panel’s “1 x tank charge”** (I added a raw uchar channel without min/max to see it; the built-in mapping returns `null` for 6).
2. **Writing to `0x42` from the bus has no effect.** I tried values 0, 1, 2 and 6, both through the binding SET and as raw telegrams from the adhoc field (e.g. `FF 15 B5 09 04 0E 42 00 06 00`). The write is ACKed, the register briefly echoes, then returns to the panel state within one poll. The boiler does not start.
3. Register `0x5D` (HC1 special mode) stays 0 during “1 x tank charge”; writing 9 or 0 does nothing.
4. Register `0x2A` (“Is in single DHW loading mode” from the old VRS620 eBUS document) is readable but stays 0 during the panel-initiated charge. Writing 1 is accepted for a few seconds, then back to 0, no effect.
5. The real gate is in the VRC → boiler telegram `B5 10` (`boiler.control.setopdata`), sent every ~10 s. Its bit `turnoffservice_water_heating` is `true` in Auto outside the program, and `false` when the panel selects Day mode or “1 x tank charge” (boiler starts within ~1 min). At activation the VRC also sends `10 08 B5 12 02 00 64` (circulation pump per the old doc) and `10 50 B5 09 04 0E 01 00 01` (VR61 reg 01 = 1).
6. I injected my own `setopdata` with that bit cleared (`FF 08 B5 10 09 00 00 2E FF FF FF 00 00 00`). It is ACKed, but the VRC’s next telegram 10 s later restores `true`, so the boiler never reacts. Sending it cyclically would fight the controller and risk burner short-cycling, so I did not pursue that.
7. Side note: the VRC cancels the one-time charge within seconds if the cylinder is already warmer than the setpoint, and the boiler needs the cylinder several kelvin below the setpoint (hysteresis). I had to rule that out first.

**Conclusion so far**  
On this VRC 470 the DHW mode registers (`0x42`, `0x2A`) behave as read-only mirrors of the panel state. Writes from the binding’s source address (`FF`) are accepted at bus level but not acted on. Only the panel changes the mode.

**Questions**

- Has anyone found a register or telegram that actually changes the DHW mode / triggers the one-time charge on a VRC 470/430 (e.g. a `B5 04` message, or a different source address that the VRC accepts, like a remote controller)?
- Are the DHW time-program registers writable over the bus (that would be a clean workaround by shifting the window)?
- Does the write acceptance depend on the sender address?

Happy to post raw logs (poll responses, `setopdata` fields, telegrams around the activation).

---

<div class="post-metadata">

**Author:** ![dk8pn](https://community.openhab.org/user_avatar/community.openhab.org/dk8pn/32/190605_2.png) [@dk8pn](https://community.openhab.org/u/dk8pn)\
**Post date:** [November 3, 2026, 2:52pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/2 "2026-11-03T14:52:30Z")

</div>

I have probably not fully understood what you intent to do. But looking to the Vaillant app, there is one limitation for “hot water fast” outside the time program: the actual temperature needs to be lower than the setpoint minus the defined hysteresis for a new loading cycle.

 ![image](https://community-openhab-org.s3.dualstack.eu-central-1.amazonaws.com/original/3X/c/b/cbfb65457d21ff2a47bc1f29c25b9f3d9ea96a27.png)

Otherwise the command will not be accepted.

**Example:** i have a setpoint of 48°C and a hysteresis for a new loading of 8 Kelvin. Means that a new loading command will not be realized before the tank is below 40°C.

If i have e.g. 40.5°C and want to trigger a new loading cycle, i either switch on the circulation pump (drops the temperature quickly by another 2 degrees and triggers loading) or i set the defined hysteresis temporarily to e.g. 6 Kelvin in order to be able to trigger a “hot water fast” outside the time program having still 40.5°C.

Does this help you?

---

<div class="post-metadata">

**Author:** ![dk8pn](https://community.openhab.org/user_avatar/community.openhab.org/dk8pn/32/190605_2.png) [@dk8pn](https://community.openhab.org/u/dk8pn)\
**Post date:** [November 3, 2026, 3:13pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/3 "2026-11-03T15:13:47Z")

</div>

The command from the ebus binding for “hot water fast” is HWC SFmode = “load” (Special Functions, usually set to “auto”).

 ![image](https://community-openhab-org.s3.dualstack.eu-central-1.amazonaws.com/original/3X/c/1/c1193d2c9515120516fdf64b1a13117ed46f8f1b.png)

Have just verified it again: if i command “load” at actually 44.5°C storage temperature, nothing happens except that the circulation pump is switched on. The command is accepted but would not be executed before the temperature is below setpoint minus hysteresis as a said in my last post.

Let me know if you need the ebus telegram for that command. I could try to retrieve it.

---

<div class="post-metadata">

**Author:** ![witek\_1308](https://community.openhab.org/letter_avatar_proxy/v4/letter/w/eb9ed0/32.png) [@witek\_1308](https://community.openhab.org/u/witek_1308)\
**Post date:** [November 3, 2026, 3:35pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/4 "2026-11-03T15:35:20Z")

</div>

Thanks, that helps a lot, and it points at a flaw in my tests.

I have a **VRC 470/4** (the older `B5 09` register protocol, binding config `vrc430`), not a VRC 700/720, so I don’t have a “HWC SF mode” channel. What I found so far:

- Register `0x42` (`B5 09 0D 42 00`) follows the VRC panel: Off = 0, Auto = 2, and **6 while the panel’s “1 x tank charge” (one-time DHW load) is active**. I only found the 6 by adding a raw uchar channel; the built-in mapping (0/1/2) returns `null` for it.
- When the panel starts the charge, the VRC changes the `turnoffservice_water_heating` bit in its `B5 10` (`boiler.control.setopdata`) telegram to the boiler from `true` to `false` (sent every ~10 s), the boiler starts within about a minute, and the VRC also sends `10 08 B5 12 02 00 64` (circulation pump) and `10 50 B5 09 04 0E 01 00 01` to the VR61.
- My attempts to write `0x42` (values 0, 1, 2, 6) from the bus as raw telegrams, e.g. `FF 15 B5 09 04 0E 42 00 06 00`, were ACKed but had no visible effect, and the register returned to the panel state within one poll.

Your point about the hysteresis is exactly what I missed: in the tests that mattered the cylinder was only 5 K below the setpoint, so according to what you describe the VRC would not have accepted a “load” command anyway. **My conclusion that writes to `0x42` are ignored is therefore not reliable.** I’m repeating the test with the cylinder well below setpoint minus hysteresis (about 12 K below), watching the `setopdata` bit and the circulation pump telegram, and I’ll report back.

Two questions, if you can check:

1. Is your “HWC SF mode” = `load` a plain write of a single value to a register (and which one, the `B5 24` family used by `vrc700`)? If you can retrieve the raw telegram, that would help me judge whether anything similar exists on the 470.
2. In your experience, does the VRC show any sign that the “load” command was accepted but deferred (apart from the circulation pump switching on)?

Will post the result of the repeat test.

---

<div class="post-metadata">

**Author:** ![dk8pn](https://community.openhab.org/user_avatar/community.openhab.org/dk8pn/32/190605_2.png) [@dk8pn](https://community.openhab.org/u/dk8pn)\
**Post date:** [November 4, 2026, 6:24am UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/5 "2026-11-04T06:24:55Z")

</div>

Did you look on Github “ebusd configuration” here: archived/de/vaillant/15.470.csv ?

[15.470.txt](https://community.openhab.org/uploads/short-url/z9zb4toG7IxmJDCQVY0S0OAjF5c.txt) (16.8 KB) please rename back to .csv

Line 93 shows a “HwcOPMode” (but obviously no HwcSFmode) which can be set to 0=off;1=on;2=auto;3=autosunday;4=party; **5=load** ;7=holiday with ebusd data format UCH,  
but this seems to be read only acc. to the file?

This could be the following ebus telegram in openHAB: “ **FF 15 B5 09 03 0D 42 00** ” (read)

Will come back with my telegrams for the VRC720 later today.

**Edit:** found “Hc1Sfmode” within the same file where **8=onetimewater** , but this seems also to be read only if these informations are right?

0=none;1=party;2=onedaybankholiday;3=onedayholiday;4=holiday;5=bankholiday;6=quickveto;7=onetimeventilation;8=onetimewater

This could be the appropriate ebus telegram in openHAB: “ **FF 15 B5 09 03 0D 5D 00** ” (read)

---

<div class="post-metadata">

**Author:** ![witek\_1308](https://community.openhab.org/letter_avatar_proxy/v4/letter/w/eb9ed0/32.png) [@witek\_1308](https://community.openhab.org/u/witek_1308)\
**Post date:** [November 4, 2026, 10:38am UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/6 "2026-11-04T10:38:37Z")

</div>

Thanks for pointing me to `archived/de/vaillant/15.470.csv`, that was the missing piece. Summary of what I found on a **VRC 470/4** (binding 5.0.0, `B5 09` register protocol):

**What did NOT work** (writes to the DHW “mode” registers from the bus, source address `FF`):

- `0x42` (`HwcOPMode`): reading follows the panel (0 = off, 2 = auto, and **6 while the panel’s “1 x tank charge” is active** ; the csv lists 5 = load, on my unit it is 6). The csv comment says “set implicitly”, which matches what I saw: writes are ACKed but have no effect.
- `0x5D` (HC1 special mode) stays 0 during the one-time charge, `0x2A` (“single DHW loading”, from an old VRS620 document) stays 0 as well. Writing to them does nothing.
- Injecting my own `B5 10` telegram with the “disable DHW tank loading” bit cleared is overwritten by the VRC every ~10 s (it sends `B5 10` that often), so that is a dead end.

**What works:** the register **`0x0B` (`TestVarActivateFunction`)**, line 92 of the csv, which lists paired ON/OFF values per special function, e.g. `9` = 1xDHWLoad ON, `10` = OFF. Despite being marked read-only in the csv, writing it works on my VRC 470/4:

```auto
FF 15 B5 09 04 0E 0B 00 09 (CRC 73, the adhoc field calculates it) -> one-time DHW load, boiler starts
FF 15 B5 09 04 0E 0B 00 0A (CRC 70) -> stop

```

This triggers exactly what the panel’s “1 x charge” does: the VRC clears the `disable DHW tank loading` bit in its `B5 10` telegram and the boiler starts within about a minute.

**Important condition** (thanks for pointing it out earlier in this thread): the load is only executed if the cylinder temperature is below _setpoint minus hysteresis_. My first tests failed because the cylinder was only ~5 K below the setpoint; the VRC then discards the request immediately. I needed a difference of roughly 12 K to be sure.

---

<div class="post-metadata">

**Author:** ![dk8pn](https://community.openhab.org/user_avatar/community.openhab.org/dk8pn/32/190605_2.png) [@dk8pn](https://community.openhab.org/u/dk8pn)\
**Post date:** [November 4, 2026, 12:29pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/7 "2026-11-04T12:29:21Z")

</div>

I am happy that you found a solution and that my hints have been helpful.

I also found an AI search result where the following is stated: the openHAB ebus binding should provide a channel **`dhw_onetimewater`** / **`dhw_charging`** for a VRC470 thing which is a switch type. Did you see such channel?

The problem is that we can’t believe everything 😜, either within the ebusd files (read/write) from John30 or from an AI agent.

---

<div class="post-metadata">

**Author:** ![witek\_1308](https://community.openhab.org/letter_avatar_proxy/v4/letter/w/eb9ed0/32.png) [@witek\_1308](https://community.openhab.org/u/witek_1308)\
**Post date:** [November 4, 2026, 1:29pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/8 "2026-11-04T13:29:01Z")

</div>

No, I did not see such a channel. I checked the built-in `vaillant-vrc-configuration.json` of the binding (ebus-configuration 1.1.10): the DHW commands are only `dhw.temp_d_holiday`, `dhw.program_dhw_circuit` (reg `0x42`) and `dhw.temp_d_dhw` (reg `0x44`), and nothing called `dhw_onetimewater` or `dhw_charging`; there is also no Switch-type channel for this. The closest thing is `heating.program_heating_circuit_special` (reg `0x5D`, with “9 = LoadDHW” in its mapping), but on my VRC 470/4 that register stays 0 during the one-time charge and writing to it has no effect. I agree we shouldn’t trust AI summaries or the read/write flags in the ebusd files without testing; I only trusted `0x0B` after I tested it on the actual hardware, and I even had to figure out the hysteresis condition. The `onetimewater` name exists only in `15.470.csv` (value 8 of `0x5D`), so the AI probably mixed that up.

---

<div class="post-metadata">

**Author:** ![dk8pn](https://community.openhab.org/user_avatar/community.openhab.org/dk8pn/32/190605_2.png) [@dk8pn](https://community.openhab.org/u/dk8pn)\
**Post date:** [November 4, 2026, 2:33pm UTC](https://community.openhab.org/t/ebus-binding-5-x-vaillant-vrc-470-can-dhw-mode-1-x-tank-charge-be-triggered-from-the-bus-writes-to-0x42-ignored/170856/9 "2026-11-04T14:33:37Z")

</div>

Okay, thanks, that was for my interest only because we never stop to learn about ebus 🙂 .
