Skip to content

add base config values from vwzio menu#607

Open
stgm wants to merge 7 commits into
john30:masterfrom
stgm:hmu-base-config
Open

add base config values from vwzio menu#607
stgm wants to merge 7 commits into
john30:masterfrom
stgm:hmu-base-config

Conversation

@stgm
Copy link
Copy Markdown

@stgm stgm commented May 10, 2026

These are most of the settings that can be changed from the VWZ AI install menu on an Arotherm Plus.
Many of these had already been available in the 08.hmu.tsp config, but definitely not all.
Most have been available in the @jonesPD csv repository.

This PR contains read and write rules for each of the settings.

  • Ready for review, not ready for merging yet.
  • I've left out a few values that I do not have (but are mentioned by the manual), I will be taking another look at these.
  • Is "max allowed current" too dangerous to expose for writing remotely? Left it out now.

@john30 @burmistrzak @chrizzzp Please do have a look. If some of this is already work in progress, please let me know where to find it.

Should fix at least #475 and #586, #555, #535.

@stgm stgm marked this pull request as draft May 10, 2026 10:58
@stgm
Copy link
Copy Markdown
Author

stgm commented May 10, 2026

I added the percent2 type definition because for the b51a 10-byte registers (32-35) with type 02, all data seems to be 2-byte:

0a f2 0240 3100 3100 6400 01

  • 0a
    • message length
  • f2
    • repeat of message identifier from request
  • 0240
    • message type (02/08) and data type
  • 3100 <--- this is the real data, always in 2 bytes, always little-endian
    • current value (49)
  • 3100
    • minimum value (49 means auto, 50 is real minimum per the manual)
  • 6400
    • maximum value (100%, conforms to manual)
  • 01
    • divisor

So that's why it seemed appropriate to use a 2-byte data type here. (Also for the new hysteresis data type.)

Somewhat related: it is also an option to make a pump speed specific percentage type and add the 49=auto there.

@stgm
Copy link
Copy Markdown
Author

stgm commented May 10, 2026

I also added the noise reduction setting from #606; putting the format more in line with the rest of the settings in this PR. As it happens, I do not have that setting currently, even though the manual state it should be available (only) if a thermostat/regulator (system control) is not connected, like in my situation.

@write
@auth("install")
@base(MF, 0x1a, 0x6, 0xff)
model wi_1 {
Copy link
Copy Markdown
Author

@stgm stgm May 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is wi the right abbreviation for write at installer level? (convention-wise)

@inherit(r_3, wi_1)
@ext(0x35, 0x2d)
model HeatCurve {
@divisor(10)
Copy link
Copy Markdown
Author

@stgm stgm May 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't provide min/max values 0.4-4.0 for the HeatCurve as the tsp compiler does not allow 0.4 for BCD values. I guess the validation does not take the divisor into account? @john30

For now I've left the range out and kept it in the description.

Comment thread src/vaillant/08.hmu.HW5103.tsp
Comment thread src/vaillant/08.hmu.HW5103.tsp Outdated
Comment thread src/vaillant/08.hmu.HW5103.tsp Outdated
/** emergency immersion heater activation */
@inherit(r_3, wi_1)
@ext(0x35, 0x37)
model ImmersionHeaterLimpHomeMode {
Copy link
Copy Markdown
Author

@stgm stgm May 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK this means whether the immersion heater may be used for heating/water/both/none IF the heat pump fails.

Limp Home mode is from the English manual, the German word "Notbetrieb" is a lot clearer, though more prosaic.

But I can imagine that the gas boiler might also be used for this? It's not clear from the manuals. Anyone??

Copy link
Copy Markdown

@chrizzzp chrizzzp May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yields 02ff01 (not applicable) for my system (with regulator). I'm not aware of any similar option in the regulator, unless it's an (emergency) temperature definition:

r,,install,HcEmergencyTemp,hc emergency temperature,,,b524,020000002600,ign,,IGN:4,,,,value,,EXP,,°C,temperature
w,,install,HcEmergencyTemp,hc emergency temperature,,,b524,020100002600,value,,EXP,,°C,temperature

Copy link
Copy Markdown
Author

@stgm stgm May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my case (not split) the system actually showed me the setting (in the VWZ AI controller), but did not effectively change it to another value when it chose that. So that behaviour is a bit weird.

I will do some archival research (aka old manuals) to see how this developed. At least I already found somewhere that "limp mode" comes from gas boilers that might continue working on lower modulation until the repair-person comes. So they may have transferred an old term to the new context of heat pumps at some point.

And now that you say it, I'll also take the regulator manuals to see if those have something relevant.

Copy link
Copy Markdown
Author

@stgm stgm May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A sliver of info from latest German manual:

Der Systemregler schaltet in den Notbetrieb um, d. h. die
Elektro-Zusatzheizung versorgt die Heizungsanlage mit Hei-
zenergie. Der Fachhandwerker hat bei der Installation für
den Notbetrieb die Temperatur gedrosselt. Sie spüren, dass
das Warmwasser und die Heizung nicht sehr warm werden.

In other words: if the pump fails, this setting decides whether the immersion heating element may be used as an alternative.

-> Or actually, whatever is attached to the ZH (zusatzheizung) contact on the vwz AI. It is also used to attach non-Vaillant gas boilers in hybrid systems.

The explanation also mentions setting a lower target temperature, to help you notice that the heating is not working right. Which is apparently what HcEmergencyTemp is for. But only available if you have a regulator?!

All in all, a better name for this one is probably "EmergencyModeUseImmersionHeater" (meh).

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK EmergencyModeImmersionHeaterEnabled.
I'm deviating from official "limp home" wording here, because it's very tongue-in-cheek British and unlikely that people recognize the word, especially from other countries.
I'd love to do something with a more literal version of "zusatzheizung" but it gets long anyway.

Comment thread src/vaillant/08.hmu.HW5103.tsp
Comment thread src/vaillant/08.hmu.HW5103.tsp
Comment thread src/vaillant/08.hmu.HW5103.tsp
Comment thread src/vaillant/08.hmu.HW5103.tsp Outdated
/** minutes to wait after mains switch on */
@inherit(r_3, wi_1)
@ext(0x33, 0x19)
model BlockTimeAfterRestart {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took some digging, in the manual this is:

  • Reset Sperrzeit→ Sperrz. n. Einschalten der Spannungsvers.
  • Reset anti-cycl. time→ Anti-cycl. time after pow. supp. switch-on

Sperrzeit is again translated as "Anti-cycling". But focusing on "after pow. supp. switch-on" and the German description makes it pretty clear what is going on; in combination with time in minutes and not hours, this seems what it is.

@jonesPD has MainsBlocktimeMinDuration here which I think is a mistake after all. It does not seem to have anything to do with the MainsBlocktimeMaxDuration or what I now call MaximumS21BlockAllowed

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. For my system the value is 0. Never tried it out.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this is rather a startup delay value, isn't it? Lacks experimental proove I assume.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes and yes.

Comment thread src/vaillant/08.hmu.HW5103.tsp Outdated
@inherit(r_3, wi_1)
@ext(0x34, 0x28)
@Ebus.example("40%", "3108b51a0405ff3428", "0aff021b280028003c0001")
model CompNoiseReductionSpeed {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not have this one!

Do you have it @chrizzzp?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#606 has actually proposed this.

I've tried to come to a name that more clearly describes the variable.

@jonesPD has CompressorSilentOperationLevel which I think is pretty good, though it really should be interpreted as a maximum, AFAIK.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it works. For my split system it can be adjust between 40 and 60%.

Actually, a value of 60% will limit the HMU power to 40% (and vice versa). So it's rather a throttle or reduction value, not a direct limit.

So how about: CompressorSilentModeReduction or CompressorSilentModeThrottle?

Copy link
Copy Markdown
Author

@stgm stgm May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason you're converging to "silent mode" @chrizzzp ?
The English manual for the plus/6 specifically calls it "noise reduction mode". (Oh and the device menu, too.)

Copy link
Copy Markdown

@chrizzzp chrizzzp May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's shorter. :)
But you're right we should leave it to the (slightly awkward) nomenclature by Vaillant. However, then we also should rename the 'Silent Timer' to 'Noise Reduction Timer' in the regulator PR for the sake of consistency.

BTW: Do you know this regulator simulator?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I have used it a few times!

I think "CompNoiseReductionLevel" then. Considering how it works, level seems a good concept. Still thinking about the "Comp" prefix which is very non-informative.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can "afford" ComprNoiseReductionLevel or even CompressorNoiseReductionLevel?

Copy link
Copy Markdown
Author

@stgm stgm May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh missed your message before I typed mine (but now changed).
I think this variable is not necessarily about the compressor per se (although that's what the percentage is applied to)
NoiseReductionLevel could suffice.
This in contrast to CompStartHeatingFrom which really is about the compressor algorithm.

Comment thread src/vaillant/08.hmu.HW5103.tsp
@stgm stgm marked this pull request as ready for review May 10, 2026 17:50
Comment thread src/vaillant/08.hmu.HW5103.tsp
@stgm
Copy link
Copy Markdown
Author

stgm commented May 11, 2026

Thank you for all the feedback @chrizzzp !

/** heating function enabled */
@inherit(r_3, wi_1)
@ext(0x35, 0x34)
model HcEnabled {
Copy link
Copy Markdown
Author

@stgm stgm May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use of "enabled" instead of "active" - in line with
https://github.com/john30/ebusd-configuration/pull/564/changes

Same for HwcEnabled below

/** domestic hot water function enabled */
@inherit(r_3, wi_1)
@ext(0x35, 0x35)
model HwcEnabled {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @chrizzzp and @burmistrzak had a discussion somewhere about Hwc vs Dhw, right? Hwc it is?

auto: 49,
}

enum Values_alternative_point {
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@john30 There are quite a few variables with a single off or auto value. Is there a shorter way to express this other than defining an enum? I see the value of the enums for multiple values, but for a single value it's getting a bit messy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants