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

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).

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.

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?

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

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.

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.