Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add baseline support for HW5103 HMUs #472

Open
wants to merge 11 commits into
base: master
Choose a base branch
from

Conversation

burmistrzak
Copy link

@burmistrzak burmistrzak commented Jan 15, 2025

Improves compatibility with modern heat pump HMUs by removing unsupported, outdated, and unreliable registers.
More registers will be added as they are discovered and verified.

Q: Why is a specific definition needed?
A: The default 08.hmu configuration includes a lot of registers that are either no longer supported by modern HMU revisions, or provide lower resolution data. Reading unsupported registers also causes unnecessary traffic on the bus.

Q: Why not use conditions in 08.hmu and be done with it?
A: The origin of some problematic registers is hard track down, and the respective product ids are unfortunately mostly unknown. If we can determine these identifiers, 08.hmu will be improved as well.

Q: Why are all VWZ-related registers missing?
A: As far as we know, the HMU is not the actual source of these registers. Consequently, they're removed and will be replaced by a dedicated VWZ/VWZIO configuration with more stable/reliable registers, directly read from the unit itself.

Q: Why are the registers related to (VWZ) standalone-mode missing?
A: See above, but we also currently don't know the correct register to determine whether a system regulator is present.

Setup used for testing & verification:

address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0902;HW=5103", loaded "vaillant/08.hmu.hw5103.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=BASV3;SW=0760;HW=7304", loaded "vaillant/15.basv3.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZIO;SW=0902;HW=5103"
address f1: master #10
address f6: slave #10, scanned "MF=Vaillant;ID=NETX3;SW=0124;HW=0404"

@burmistrzak
Copy link
Author

Pinging @chrizzzp, @pulquero, @rmalbrecht, and @JGJ156 for feedback. Would any of you be willing to give this one a try?
If required, I can pre-compile the CSV files for you. 😊

I'm looking to finally get solid baseline support for these newer HMUs merged, so error-free operations is critical.

@chrizzzp
Copy link

chrizzzp commented Jan 16, 2025

@burmistrzak

Good job! Yes, precompiled CSVs would be good.

BTW: What is the suggested way to edit/create the .tsp files?
And how do you compile them? I haven't looked into this too much yet. I just saw there are several tools available...

@burmistrzak
Copy link
Author

burmistrzak commented Jan 16, 2025

Good job! Yes, precompiled CSVs would be good.

@chrizzzp Thx! I‘ll push a separate branch and let you know.

BTW: What is the suggested way to edit/create the .tsp files? And how do you compile them? I haven't looked into this too much yet. I just saw there are several tools available...

Well, a bit of TypeScript knowledge and an up-to-date Node.js installation are required.
You clone the main repo, and install the dependencies with npm install. Once that’s done, use npm run to see what actions are available. To compile some CSVs, npm run compile-en is your friend. 😊
More documentation can be found here: https://github.com/john30/ebusd-configuration/blob/master/guidelines.md#converting-to-csv

While it’s possible to automatically convert CSV to TSP, I prefer to do it manually, using files from the main repo as a template.

@burmistrzak
Copy link
Author

@chrizzzp There you go: https://github.com/burmistrzak/ebusd-configuration/tree/csvgen
You'll need to set outcsv/@ebusd/ebus-typespec as your config directory and reload/restart.

If you want, symlink 15.ctlv2 to 15.basv3. Feature set should probably be similar to what you use now. 😉

@burmistrzak
Copy link
Author

@chrizzzp Can you share which VWZ configuration you’re using?
Also, do SystemPressure, ReturnFlowTemp, SupplyFlowTemp, ReturnTemp, SupplyTemp, and CondensorOutletTemp return usable and/or valid data for you?

On a somewhat related note:
I‘ve investigated the official eBus KNX gateway‘s firmware to see how they‘re do things under the hood.
AFAICT, only support for system regulators is implemented. So it seems like the only sanctioned 3rd-party eBus integration is indeed not allowed to talk with equipment directly.

However, the Vaillant internet gateways do regularly poll the entire system, probably to gather diagnostics?
Fully decoding these messages might yield some interesting results… 👀

@chrizzzp
Copy link

@burmistrzak

@chrizzzp Can you share which VWZ configuration you’re using? Also, do SystemPressure, ReturnFlowTemp, SupplyFlowTemp, ReturnTemp, SupplyTemp, and CondensorOutletTemp return usable and/or valid data for you?

Yes, all work and give valid/reasonable data.
I had previously posted the working part of my 76.vwz00.csv: #407 (comment)

I have a quite bunch of messages still not decoded, are you interested in these as well?

On a somewhat related note: I‘ve investigated the official eBus KNX gateway‘s firmware to see how they‘re do things under the hood. AFAICT, only support for system regulators is implemented. So it seems like the only sanctioned 3rd-party eBus integration is indeed not allowed to talk with equipment directly.

Interesting, but I doesn't surprise me. I think they don't want the people to "mess" with the devices directly. If everything stays under the regime of the system regulator it's sort of safe...

However, the Vaillant internet gateways do regularly poll the entire system, probably to gather diagnostics? Fully decoding these messages might yield some interesting results… 👀

That's what I started with the RunData/RunStats registers... These were all registers polled by the internet gateway.
I'm currently investigating in the b516 registers of the hmu which are polled every night around midnight by the system regulator. But progress is slow...

@chrizzzp
Copy link

You'll need to set outcsv/@ebusd/ebus-typespec as your config directory and reload/restart.

Thanks. I will try these CSVs locally...

@kgeree
Copy link

kgeree commented Jan 17, 2025

hi all,

I thought I give a try to these CSVs, but I get quite a lot of "Unknown" values in home assistant for the following:

CompressorHysteresisCooling
CompressorHysteresisHc
ConsumptionThisYear* energy
currenterror error
DateTime temp2
errorhistory *
Fan2* (thats ok as I have 1 fan unit)
FlowPressure
HcBivalencePoint
HeatCurve
HwcBivalencePoint
HwcChargeHysteresis
HwcModeActive
ImmersionHeaterMode
MaxFlowTemp
MinFlowTemp
RunStatsCompressorHc cycles
RunStatsCompressorHc runtime
RunStatsCompressorHwc cycles
RunStatsCompressorHwc runtime
SetMode hwctempdesired
SetMode hwctempdesired
SourcePressure
SourceTempOutput
State onoff
State state
Status hcmode2
Status press
Status temp
Status01 temp2
Status02 *
Status16 temp
SummerSwitchOffTemp
TargetTempHc
TargetTempHwc
YieldThisYear* energy
YieldTotal energy

see ebusd error log:
ebusd-errors.log

Part of these (if not all?) I'm able to read from 76.vwzio.

I have the following setup:

Vaillant aroTHERM plus VWL 75/6
Vaillant uniTOWER plus VIH QW 190/6E
SensoComfort VRC720 (could be an early version..? as it is identified as 15.720 but seemingly works quite well with the 15.ctlv2 config.
Vaillant VR71 module (within the uniTOWER)
Vaillant RecovAIR 260 behind a VR32 bus coupler
Vaillant VR921 SensoNet

in EBUSd as:

08.hmu HW:5103 SW:0607
76.vwzio HW:5103 SW:0607
15.720 HW:7703 SW:0122
26.vr_71 HW:0503 SW:0104
18.v32 (recovair) HW:9802 SW:0117
f6 (sensonet) HW:5703 SW:4035

@kgeree
Copy link

kgeree commented Jan 17, 2025

sorry...my bad, I've tried with the wrong - 08.hmu, file, not the 08.hmu.hw5103.csv.
With 08.hmu.hw5103.csv, it looks better. The only Unknown values are:

CompressorRuntimeHc
CompressorRuntimeHwc
FlowPressure

ebusd-errors.log

@burmistrzak
Copy link
Author

Yes, all work and give valid/reasonable data.
I had previously posted the working part of my 76.vwz00.csv

From VWZ, ReturnTemp & SupplyTemp returns -99,0 and SupplyFlowTemp is null. What do you see? I‘m using the same register addresses.

I'm currently investigating in the b516 registers of the hmu which are polled every night around midnight by the system regulator. But progress is slow...

@chrizzzp I feel you… 😅
Please share the unknown VWZ registers as well.

I‘ll try to obtain a firmware image for the VR940f, but its update procedure seems to be really locked down. It’s an embedded Linux system, so dumping the flash memory might still be an option…

@JGJ156
Copy link

JGJ156 commented Jan 17, 2025

@burmistrzak regarding:
Pinging @chrizzzp, @pulquero, @rmalbrecht, and @JGJ156 for feedback. Would any of you be willing to give this one a try?

I need to build my knowledge more first, apologies for that. I'll work on some further message definitions.

@chrizzzp
Copy link

chrizzzp commented Jan 17, 2025

sorry...my bad, I've tried with the wrong - 08.hmu, file, not the 08.hmu.hw5103.csv. With 08.hmu.hw5103.csv, it looks better. The only Unknown values are:

CompressorRuntimeHc
CompressorRuntimeHwc
FlowPressure

Interesting, on my Arotherm Split system (ID=HMU00;SW=0902;HW=5103) they work:


3108b511021801 / 090044720100ee040000
3108b511021802 / 0900d109000006000000
3108b51a0405ff323d / 0aff082c74000000000000

@kgeree
Copy link

kgeree commented Jan 17, 2025

ID=HMU00;SW=0902;HW=5103

Might be due to the different SW version.. mine is: HW:5103 SW:0607

@burmistrzak
Copy link
Author

burmistrzak commented Jan 17, 2025

@kgeree Thx, for trying! 🙏
These unknown registers might indeed be model-specific (mono vs split), so I‘ll likely add a @condition to fix that.
Are you using the entire, pre-compiled config directory? #472 (comment)
Be aware that HASS might still display old/cached values, so checking MQTT directly is the safest option.

Edit: The aforementioned registers should work with aroTHERM plus. Please do not cherry-pick generated CSVs, instead point ebusd to outcsv/@ebusd/ebus-typespec. Otherwise, new template definitions will be missing.

@kgeree
Copy link

kgeree commented Jan 17, 2025

Please do not cherry-pick generated CSVs, instead point ebusd to outcsv/@ebusd/ebus-typespec. Otherwise, new template definitions will be missing.

I did.. see my 2nd comment. I also removed all ebusd devices from HA before loaded the new config. With that, I gave these unknown values still:
CompressorRuntimeHc
CompressorRuntimeHwc
FlowPressure

@burmistrzak
Copy link
Author

I did.. see my 2nd comment. I also removed all ebusd devices from HA before loaded the new config. With that, I gave these unknown values still: CompressorRuntimeHc CompressorRuntimeHwc FlowPressure

@kgeree Ha, interesting! Can you please try the following on your ebusd host (and share your results):

root@da3c40df8d5d:/# ebusctl hex 08b511021801

@burmistrzak burmistrzak changed the title Add baseline support for 08.hmu.HW5103 Add baseline support for HW5103 HMU & VWZ Jan 17, 2025
@kgeree
Copy link

kgeree commented Jan 17, 2025

I did.. see my 2nd comment. I also removed all ebusd devices from HA before loaded the new config. With that, I gave these unknown values still: CompressorRuntimeHc CompressorRuntimeHwc FlowPressure

@kgeree Ha, interesting! Can you please try the following on your ebusd host (and share your results):

root@da3c40df8d5d:/# ebusctl hex 08b511021801

not sure if I did that right, as I'm running it in HA and connection to it via TCP, with that I can read HEX using:

read -h 08b511021801
00

read -h 08b511021802
00

read -h 08b51a0405ff323d
02ff01

@burmistrzak
Copy link
Author

@kgeree Huh, seems indeed to be related to software version.
Can you share your product Ids? Like e.g.:

root@470d1f881ae9:/# ebusctl find | grep -i scan
Scan Id = no data stored
scan.08  = Vaillant;HMU00;0902;5103
Scan.08 Id = XX;XX;XX;0010021117;XXXX;XXXXXX;XX
scan.15  = Vaillant;BASV3;0760;7304
Scan.15 Id = XX;XX;XX;0020328845;XXXX;XXXXXX;XX
scan.76  = Vaillant;VWZIO;0902;5103
Scan.76 Id = XX;XX;XX;0010022066;XXXX;XXXXXX;XX
scan.f6  = Vaillant;NETX3;0124;0404
Scan.f6 Id = XX;XX;XX;8000015501;XXXX;XXXXXX;XX

@kgeree
Copy link

kgeree commented Jan 17, 2025

find | grep -i scan

Scan Id = no data stored
scan.08  = Vaillant;HMU00;0607;5103
Scan.08 Id = 21;21;25;0010023443;1610;005293;N8
scan.15  = Vaillant;72000;0122;7703
Scan.15 Id = 21;21;17;0020260915;0953;007771;N9
scan.18  = Vaillant;V32;0117;9802
Scan.18 Id = 21;21;17;0010016046;0001;005161;N9
scan.26  = Vaillant;VR_71;0104;0503
Scan.26 Id = 21;21;30;0020184848;0082;007340;N9
scan.76  = Vaillant;VWZIO;0607;5103
Scan.76 Id = 21;21;21;0010022081;3100;005398;N2
scan.f6  = Vaillant;NETX2;4035;5703
Scan.f6 Id = 21;21;25;0020260962;0938;027622;N2

@burmistrzak
Copy link
Author

@kgeree Alright, I‘ll update the definition.
In the meantime, can you try this:

root@da3c40df8d5d:/# ebusctl hex 08b51405052a03ffff

@chrizzzp
Copy link

chrizzzp commented Jan 17, 2025

@burmistrzak

Huh, seems indeed to be related to software version.

Yes, very likely. I once had the PCB replaced in my hmu unit by a Vaillant service engineer. The new PCB had a newer firmware version (SW=0902) then the replaced (SW=06xx don't remember).
There are indications that newer firmwares allow aquisition of more data from the hmu, maybe because new registers are introduced. See here:
#330 (comment)

@chrizzzp
Copy link

@burmistrzak

From VWZ, ReturnTemp & SupplyTemp returns -99,0 and SupplyFlowTemp is null. What do you see? I‘m using the same register addresses.

vwz00 ReturnTemp = 32.1
vwz00 SupplyTemp = 32.1
vwz00 RunDataSupplyFlowTemp = 32.1505

Differences could be explained by the fact that VWZIO and VWZ00 are not the same products...

Please share the unknown VWZ registers as well.

Here you go (all currently commented as not actively polled, many are actually hmu-specific):

*r,,,,,,B509,,,,,,,,,,,,,,,,,,,,,,,,,
#r,,unknownMB509h2802,,,,,2802,,,HEX:*,,,,,,,,,,,,,,,,,,,,,
## Polls from VR921 every 10 mins
*r,,,,,,B509,54,,,IGN:4,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknown0C05,,,,,02000C05,,,HEX:*,,
#r,,vUnknown0D08,,,,,02000D08,,,HEX:*,,
#r,,RunDataCompressorSpeed,(konstant 0),,,,02000D0A,,,tempv,,
#r,,RunDataEEVPositionAbs,,,,,280A,,,UIN,,,,,,,,,,,,,,,,,,,,,
#r,,RunDataFan1Speed,(konstant 0),,,,0200470A,,,HEX:*,,
#r,,RunDataFan2Speed,(konstant 0),,,,0200490A,,,HEX:*,,
#r,,vUnknown490D,(konstant 0),,,,0200490D,,,D1B,,
#r,,RunDataFlowTempDesired,,,,,02004A0D,,,tempv,,,,,,,,,,,,,,,,,,,,,
#r,,RunDataStatuscode,(no data vwz),,,,530D,,,scode;IGN:*,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknown560D,,,,,0200560D,,,HEX:*,,
#r,,RunDataCurrentConsumedPower,(no data vwz),,,,02005B0D,,,powerv,,,current consumed electrical power (Watt),,,,,,,,,,,,,,,,,,
#r,,RunDataHighPressure,(no data vwz),,,,02006A09,,,pressv,,
#r,,RunDataunknown7c08,,,,,02007C08,,,EXP,,
#r,,RunDataCompressorInletTemp,,,,,9808,,,tempv,,,,,,,,,,,,,,,,,,,,,
#r,,RunDataCompressorOutletTemp,(no data vwz),,,,A208,,,tempv,,,from VR921 to HMU,,,,,,,,,,,,,,,,,,
#r,,RunDataCondensationTemp,,,,,0200A60E,,,tempv,,
#r,,RunDataEEVOutletTemp,(no data vwz),,,,AC08,,,tempv,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknownBA09,(konstant 0),,,,0200BA09,,,EXP,,
#r,,vUnknownBB0B,,,,,0200BB0B,,,UIN;IGN:2,,
#r,,RunDataJDeltaPPumpUnknown,,,,,0200BC09,,,EXP,,,,,,,,,,,,,,,,,,,,,
#r,,RunstatsHwcHours,,,,,0200BC0B,,,UIN;IGN:2,,hours
#r,,RunDataJWaterThroughPut,,,,,0200BD09,,,EXP,,,,,,,,,,,,,,,,,,,,,
#r,,RunStatsCompressorHours,(konstant 0),,,,0200C20B,,,UIN;IGN:2,,
#r,,RunStatsCompressorStarts,,,,,0200C30B,,,UIN;IGN:2,,
#r,,RunStats4PortValveHours,,,,,0200C80B,,,UIN;IGN:2,,hours
#r,,RunStats4PortValveSwitches,(no data vwz),,,,0200C90B,,,cntstarts2;IGN:2,,
#r,,RunStatsFan1Hours,,,,,0200D70B,,,UIN;IGN:2,,
#r,,RunStatsFan1Starts,,,,,0200D80B,,,UIN;IGN:2,,
#r,,RunStatsFan2Hours,,,,,0200D90B,,,UIN;IGN:2,,
#r,,RunStatsFan2Starts,,,,,0200DA0B,,,UIN;IGN:2,,
#r,,RunDataAirIntakeTemp,(no data vwz),,,,DE08,,,tempv,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknownE10B,,,,,0200E10B,,,UIN;IGN:2,,
#r,,vUnknownE20B,,,,,0200E20B,,,UIN;IGN:2,,
#r,,vUnknownE30B,,,,,0200E30B,,,UIN;IGN:2,,
#r,,vUnknownE40B,,,,,0200E40B,,,UIN;IGN:2,,
#r,,vUnknownE50B,,,,,0200E50B,,,UIN;IGN:2,,
#r,,vUnknownE60B,,,,,0200E60B,,,UIN;IGN:2,,
#r,,vUnknownEA0C,(konstant 0),,,,0200EA0C,,,HEX:*,,
# Status message for hydraulics,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#*uw,,,,,,B512,,,,,,,,,,,,,,,,,,,,,,,,,
#uw,,StatusHydraulicsVWZ,,,,,1300,Pressure,m,UCH,10,bar,Systemdruck,Flow,m,UIN,,l/h,Durchflussrate,Unknown,m,UCH,,,,,,,,,
*r,,,,,,B512,,,,,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknownB512_201,,,,,0F0201,,,UCH;UCH;UCH;temp;press10;UCH,,
*r,,,,,,B516,,,,IGN:1,,,,,,,,,,,,,,,,,,,,,
#r,,vUnknownB516_11,,,,,11,,,HEX:*,,
#r,,vUnknownB516_x1,,,,,1000ffff0305212e,,,HEX:*,,
#r,,vUnknownB516_x2,,,,,1000ffff49040000,,,HEX:*,,
#r,,vUnknownB516_x3,,,,,1002ffff0305412f,,,HEX:*,,
#r,,vUnknownB516_x4,,,,,1003ffff0305212c,,,HEX:*,,

Maybe we should create a different PR for the vwz?

@burmistrzak burmistrzak changed the title Add baseline support for HW5103 HMU & VWZ Add baseline support for HW5103 HMUs Jan 18, 2025
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.

4 participants