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

New entries for 08.hmu.csv #330

Conversation

JongsmaSimon
Copy link

@JongsmaSimon JongsmaSimon commented Apr 10, 2023

08.hmu.csv (English version) has been finalized. It works for Vaillant Arotherm Plus 125/6 and similar heat pumps. It makes available all entries visible in the VWZ AI+ menu.
Three 'write' entries (when uncommented) enable changes from the Home Assistant UI.
Being: Heatcurve, TargetTempHwc & TargetTempHc
@john30 : I could provide German translation, if needed (and I might have more time than you)..

@JongsmaSimon JongsmaSimon marked this pull request as draft April 10, 2023 22:32
@JongsmaSimon JongsmaSimon marked this pull request as ready for review April 10, 2023 22:41
@wimleers
Copy link

wimleers commented May 9, 2023

Thanks, @JongsmaSimon! This seems to have a lot of overlap with #316, which was opened ~2 months before this. Could you review that one and suggest changes? 🙏

@JongsmaSimon
Copy link
Author

JongsmaSimon commented May 9, 2023 via email

@wimleers
Copy link

Probably because there's not yet been confirmation from other users like yourself and I that it works! 😊

I reviewed it and ran into a bunch of problems. It would be _really _valuable to see if you get the same results as I did, or not.

I'll test this PR next.

jonesPD added a commit to jonesPD/ebusd-configuration that referenced this pull request May 11, 2023
@wimleers
Copy link

wimleers commented May 16, 2023

Tested on:

  • Vaillant aroTHERM 75/5
  • uniTOWER split - VWL IS 78/5
  • sensoCOMFORT VRC720f/2
  • sensoNET VR921

As you can see below, this PR works far better for my system than #316, despite both of them updating the same 08.hmu.csv file.

✅ 6–17

Key Value Remarks
CompressorHours 42
CompressorStarts 74
BuildingPumpHours 86
BuildingPumpStarts 48
4PortValveHours 0
4PortValveSwitches 0
EEVSteps 19267
NoOfSwitchingOps 1
Fan1OperHours 45
Fan1Starts 76
Fan2OperHours ERR: invalid position 👈 presumably I just don't have a second fan because the 125 you have compared to the 75 I have only has a single vs double fan
Fan2Starts ERR: invalid position

Clearly these work fine! 🥳

✅ 19–50

Key Value Remarks
YieldHcDay 4.5
YieldCoolingDay 0.0
YieldHwcDay 0.0
ch_3 ERR: invalid position
ch_4 ERR: invalid position
ch_5 ERR: invalid position
ch_6 ERR: invalid position
ch_7 ERR: invalid position
YieldHcMonth 25.6
CopHcMonth 4.5
YieldHc 131
CopHc 5.6
YieldHwcMonth 20.2
CopHwcMonth 3.8
YieldHwc 46
CopHwc 3.8
YieldHwc 46
ch_18 ERR: invalid position
TargetTempHc ERR: invalid position 👈 perhaps only available during hot water creation?
ch_1e 0
SupplyTempWeighted 2.000
FlowTemp 22.12
Integral -6
SourceTempInput ERR: invalid position 👈 probably only for ground source heat pumps?
CurrentYieldPower 0.0
CurrentConsumedPower 0.0
CompressorUtilization 0.0
SourceTempOutput ERR: invalid position 👈 probably only for ground source heat pumps?
BuildingCircuitFlow 0
FlowPressure 2.11
SourcePressure ERR: invalid position 👈 probably only for ground source heat pumps?

What are the ch_\d+ ones for?

✅ 52–62 (some more statistics from Live Monitor)

Key Value Remarks
TotalRunningHours 648
RunningHoursCH 68
RunningHoursCooling 0
RunningHoursHwc 10
ch_46 ERR: invalid position
ch_49 ERR: invalid position
ch_4a ERR: invalid position
ch_4b ERR: invalid position
ch_4c ERR: invalid position
TotalEnergyUsage 63
ch_63 ERR: invalid position

What are the ch_\d+ ones for?

❌ 64-87 (Heat pump configuration menu values)

Key Value
HeatCurve ERR: invalid position
SummerSwitchOffTemp ERR: invalid position
HcBivalencePoint ERR: invalid position
HwcBivalencePoint ERR: invalid position
MaxFlowTemp ERR: invalid position
MinFlowTemp ERR: invalid position
HcModeActive ERR: invalid position
HwcModeActive ERR: invalid position
HwcChargeHysteresis ERR: invalid position
ImmersionHeaterMode ERR: invalid position
CompressorHysteresisHc 7.00
CompressorHysteresisCooling 5.00
HwcMode eco
TargetTempHwc ERR: invalid position

✅ 123–150 ((query to WP entries Installer level/Test Menu/Sensor test))

Key Value Remarks
BuildingCircuitPumpPower 0
Fan1 0
Fan2 0
CondensateTrayHeater off
4PortValve off
PositionEEV 62
HeatingCoilCompressor off
SupplyTemp -99.0
ReturnTemp -99.0
BuildingCircuitWaterPressure 0.0
WaterThroughput 0
AirInletTemp 16.2
CompressorOutletTemp 17.6
CompressorInletTemp 15.7
EEVOutletTemp 17.0
CondensorOutletTemp -99.0
HighPressure 11.1
LowPressure 0.0
HighPressureSwitch closed
EvaporationTemp 17.0
CondensationTemp 13.9
OverheatingTargetValue 0.0
OverheatingActualValue -1.2
SubcoolingTargetValue 0.0
SubcoolingActualValue -9.0
CompressorSpeed 0.0
TemperatureSwitchCompressorOutlet closed

✅ 152–154 ((query to VWZ AI+ e.g. device 76, adapt for MEH if deviceno differs from 76))

Key Value Remarks
ThreeWayValve heating
HwcTemp 40.5
OutdoorTemp -99.0 👈 presumably because the outdoor temperature is not directly wired to the indoor unit, since a VRC720 thermostat is present?

@wimleers
Copy link

wimleers commented May 16, 2023

With the full analysis being completed in the previous comment, it's time to compare with my test results at #316 (comment).

There, the "Live Monitor" functionality actually works correctly. Maybe there's some we can cherry-pick into this PR?

But AFAICT the following are equivalent:

#330 (this PR) #316 Remarks
CompressorUtilization LiveMonitorCompressorModulation 🤔 I think "modulation" is the better term here.
CurrentConsumedPower LiveMonitorPowerConsumption 👍
CurrentYieldPower LiveMonitorPowerGenerated 👍
🆕 No equivalent for the same address? LiveMonitorAirIntake 🤔 Curious what the difference is with AirInletTemp, but they do have different IDs: 3003FFFF vs 003226. Worth investigating!
FlowTemp LiveMonitorCurrentSupply 🤔 I think "current supply" is better because it matches the label on the live device itself. Proposal: SupplyTempCurrent
SupplyTempWeighted LiveMonitorDesiredSupply 🤔 Same as above, proposal: SupplyTempDesired

@jonesPD
Copy link

jonesPD commented May 16, 2023

Hi Wim, others,
With a split aroTherm, I think some of the registers have a different allocation, due to the physical split of the unit. Arotherm Plus after all has everything in one unit. My system is discovered as following:

address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0901;HW=5103", loaded "vaillant/08.hmu.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=CTLV2;SW=0514;HW=1104", loaded "vaillant/15.ctlv2.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd, scanning
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZ00;SW=0522;HW=5103", loaded "vaillant/76.vwz.csv"
address ec: slave, scanned "MF=Vaillant;ID=SOL00;SW=0514;HW=1104", loaded "vaillant/ec.sol.sc.csv"

Therefore, I've created a separate file for my VWZ unit, to allocate the registers that seem to be physically located in the VWZ from the HMU file into the below file VWZ file (using the same addresses):

r,,ThreeWayValve,,,76,,0203FFFF,,,UCH,0=heating;1=dhw,,Three way valve (heating/dhw),,,,,,,,,,,,,,,,,,
r,,HwcTemp,,,76,,2C03FFFF,,,temps2,10,°C,SWW Tank temperature (°C),,,,,,,,,,,,,,,,,,
r,,OutdoorTemp,,,76,,4503FFFF,,,temps2,10,°C,Outdoor temperature (°C),,,,,,,,,,,,,,,,,,
r,,SupplyTemp,,,76,,2803FFFF,,,temps2,10,°C,Supply temperature (°C),,,,,,,,,,,,,,,,,,
r,,ReturnTemp,,,76,,2903FFFF,,,temps2,10,°C,Return temperature (°C),,,,,,,,,,,,,,,,,,

76.vwz.csv
(file attached)

The above registers read out fine and show the same numbers when requesting them in the test menu of my VWZ unit. Probably additional registers can be move or added to this file to accommodate the split.

@wimleers: would love to team up to further populate the registers for split VWZ units.
@ALL: suggestions welcome

Note The CTLV2 device is actually a VRC720 room thermostat, therefore, I've duplicated the 700/720 files. Haven't tested if it produces sound results.

@wimleers
Copy link

wimleers commented May 17, 2023

@jonesPD AWESOME! Let’s team up! 😄

Unfortunately, GitHub’s PR-centric approach is horribly broken for two non-repo maintainers like the two of us: it’s impossible for us to contribute to the same PR.

I see you created https://github.com/jonesPD/ebusd-configuration, but 76.VWS.csv is not yet present.

So I went ahead and created a arotherm-split-and-plus branch at https://github.com/wimleers/ebusd-configuration, and added you as a repo collaborator. In there, I'm making sure everyone whose PRs I've used are credited:

Next: incorporate your 76.vwz.csv 😊

EDIT: done:

  1. Added: wimleers@d4d7c09
  2. Removed the identical entries from 08.hmu.csv: wimleers@ae10fd2

P.S.: invited @JongsmaSimon and @kjoglum too 👍

wimleers added a commit to wimleers/ebusd-configuration that referenced this pull request May 17, 2023
@kjoglum
Copy link
Contributor

kjoglum commented May 18, 2023

Combination PR not working for my setup, so I believe we need to keep PR #316 and #330, and make adjustments accordingly. PBSB / ID = B51A / 05 and PBSB / ID = B514 / 05 seem to be common across equipment setups, and thus need to be separate/main category. Then we can use subIDs to retrieve desired values across different equipment setups. E.g. use r,,CompressorUtilization,,,,,FF3225,,,UIN,10,%,,,,,,,,,,,,,,,,,,, for CompressorUtilization under a main category defined by: *r,,,,,,B51A,05,,,,,,,,,,,,,,,,,,,,,,,,. Instead of using 05FF32 as the main ID category. The equivalent reading for my setup would be r,,LiveMonitorCompressorModulation,D1B,,,,003225,,,IGN:3,,,,percentage,,D1B,,,,,,,,,,,,,,,, under the same main category *r,,,,,,B51A,05,,,,,,,,,,,,,,,,,,,,,,,,.

This will enable different decoding across different equipment setups. PR #316 is already setup using main PBSB/ID categories.

@wimleers
Copy link

@kjoglum Note that the combination branch does NOT yet include your #316. It conflicted too massively with #330 as a viable starting point for me.

#330 works mostly for @jonesPD (he has an aroTHERM Plus, I have a Split), but he had to isolate a few things into the new 76.vwz.csv file (his suggestion 👍😊), and that works for me too!

We all still need to collaborate to figure out where which entries belong.

It sounds like you already know how to do exactly that, which is wonderful! 😄

Could you please push additional commits to my fork (you have access!) so you, @jonesPD, @JongsmaSimon and I can all test the same code? That’s the only way this is ever going to become mergeable AFAICT.

@jonesPD
Copy link

jonesPD commented May 18, 2023

FYI because I have a split unit, I had to split off a number of registers in a separate config file 76.vwz.csv.
Note I've put some additional registers in my own fork. @wimleers, sorry I still have to figure out how to work in your branch

@kjoglum
Copy link
Contributor

kjoglum commented May 18, 2023

@wimleers
If you insist on getting everything combined into one, you would need to start with #316 as base (since it already enables main PBSB/ID categories suitable for different equipment setups). Then adding elements from #330 (this PR), including changing IDs to fit under appropriate main PBSB/ID category.

EDIT:
In fact, a combined 08.hmu.csv file for 316 and 330 would be something like
08.hmu.csv

EDIT2:
Encountered quite some duplicates/errors with the combination file above. Did a more thorough exercise to create a combination file for 316 & 330.
08.hmu.csv

@wimleers
Copy link

I looked at a diff between #316 and #330 and there was virtually no overlap: neither in labels nor in the IDs etc.

You are probably right that this is the whole PBSB/ID thing — I did not yet understand that at all when I was first testing the two PRs. Thanks to seeing the multiple variants, I've started to build an understanding.

1️⃣ Tomorrow morning, I'm going to first meticulously update every single entry to match the exact titles/labels in the heatpump controller (the VWZ built into my uniTOWER split 78/5 for the aroTHERM Split, the VWZ in the [VWZ MEH 97](https://www.vaillant.be/accessoires/vai-168-tf-vwz-meh97-00-1770003.pdf for the aroTHERM Plus, the for you the separate VWZ AI.

(I hope they all use identical labels. But we'll find out. I am sure the labels in #330 are not a perfect match for the labels actually seen on my machine.)

2️⃣ Then I'll start merging your rows from #316 into the PR. I'll use your uploaded file as a reference point — thank you so much! 👏 🙏

@JongsmaSimon
Copy link
Author

Now reading all contributions ... (just returned from holiday). Excellent work! By the way in #330 I did use in almost all cases the English labels that were used in my VWZ AI+ menu structure. But I would not be surprised if Vaillant changes the labels in different configurations/versions.

@JongsmaSimon
Copy link
Author

@wimleers To answer a couple of your questions:

TargetTempHc is the target water temp for Heating (TargetTempHwc is the same for Hot water).
In my case both return a correct value, probably because I do not have a room thermostat.
So my VWZ AI+ controls everything (and - referring to your other remark about OutdoorTemp - indeed has an external temp sensor wired).
The same issue applies (I suspect) to the series 64-87 that did not work in your config.
In the VWZ AI+ the configuration wizard requires you to specify an external control unit (the thermostat); if you say no to that (as in my case) the VWZ AI will take over these tasks itself.

The ch_\d+ fields were in the original repository version (I did not delete them because they might do something in other situations?). The same applies to some other entries that (at my site) always return "ERR: invalid position".

@fwestenberg
Copy link

Excellent work! My setup is as following:

  • Arotherm Plus VWL 75/6
  • VWZ MEH 97/6 hydraulic module
  • sensoCOMFORT VRC 720

Now using this file #330 (comment) from EDIT2 I find almost everything I probably need, except the water pressure. I already installed the ebusd docker container to grab and decode, but nothing comes close to what I'm looking for. Any ideas?

@JongsmaSimon
Copy link
Author

@fwestenberg The BuildingCircuitWaterPressure should provide you with the needed value?

@fwestenberg
Copy link

@fwestenberg The BuildingCircuitWaterPressure should provide you with the needed value?

This is what I expected, but this field didn't appear in the MQTT integration. I do have: BuildingCircuitPumpPower, BuildingPumpHours and BuildingPumpHours and almost all values of the LiveMonitorMain block.

@zarch1972
Copy link

Thanks for all the hard work guys in updating these Arotherm values. I'm new to ebusd and it's taken DAYS to find this thread. :-)

I've got 5kW Arotherm Plus & Sensocomfort RF 720

I'm not seeing Water Pressure updated either (using the #330 pull)

mick@ebusd:~/ebusd-configuration/ebusd-2.1.x/en $ ebusctl find -V | grep BuildingCircuitWaterPressure
hmu BuildingCircuitWaterPressure = no data stored [ZZ=08, active read]

Although i'm not 100% sure what 'no data stored' quite means yet?

@JongsmaSimon
Copy link
Author

@zarch1972 and @fwestenberg I suspect BuildingCircuitWaterPressure does not provide a value for you, because the Sensocomfort thermostat takes over a couple of tasks from VWZ AI+ / MEH.
If that is a correct assumption you should be able to query the waterpressure on the Sensocomfort menu. The query to determine it will then be sent via ebus to the Heatpump & will appear in the EbusD logging in Home Assistant. That is basically how I obtained almost all new entries.

@fwestenberg
Copy link

@JongsmaSimon thanks for your explanation, I tried the following:

  1. ebusctl grab
  2. Sensocomfort menu: display the pressure
  3. ebusctl grab result decode
  4. Increase the water pressure from 1.5 to 1.7 bar
  5. Repeat step 1-2-3
  6. Find value 1.5 (and 1.4+) and find 1.7 (and 1.6+)

Unfortunately no match with the same ID.

@switschel
Copy link

Also tried multiple csv from this PR.
Here the same result:
Using 75/6, VR700
no WaterPressure

I'm also looking for the current hc flow volume (l/h) (from live monitor). Is this value already part of any csv or is this still undiscovered?

@kjoglum
Copy link
Contributor

kjoglum commented May 25, 2023

@switschel
From 08.hmu.csv found under Comment, DeliveryFlow will give you the requested flow (lpm).

@chrizzzp
Copy link

chrizzzp commented Oct 13, 2024

@jonesPD

Edit: default & definition updated in my previous post for correct decoding of automatic polls (every minute by VR921)

@Rapha811
Copy link

@chrizzzp

Do you have any idea whether it is also possible to get the total energy consumption? Total yield is available but I can't find the total consumption that is updated more than once a day.

@chrizzzp
Copy link

@Rapha811

Do you have any idea whether it is also possible to get the total energy consumption? Total yield is available but I can't find the total consumption that is updated more than once a day.

On my split system the hmu delivers:

08.hmu.csv

*r,,,,,,B51A,05,,,IGN:3,,,,,,,,,,,,,,,,,,,,,
r,,TotalEnergyUsage,,,,,FF324D,,,energy,,kWh,,,,,,,,,,,,,,,,,,,

There is also a total value in the regulator (VRC720 in my case):
15.ctlv2.csv

*r,,,,,,B524,02000000,,,IGN:4,,,
r,,PrEnergySumHc,total energy consumption heating,,,,5700,,,energy4,,,total year electricity consumption heating

@Rapha811
Copy link

@chrizzzp

Hm, this doesn't work for my system unfortunately:
[update error] unable to parse read hmu TotalEnergyUsage from 3108b51a0405ff324d / 02ff01: ERR: invalid position

I also have the VRC720, so the second message definition (PrEnergySumHc) works, but this is only updated once a day (at midnight).

@chrizzzp
Copy link

@Rapha811

Hm, this doesn't work for my system unfortunately: [update error] unable to parse read hmu TotalEnergyUsage from 3108b51a0405ff324d / 02ff01: ERR: invalid position

Could you specifiy from what address range you're reading the total yield? What is the HP model?

Maybe try this:

*r,,,,,,B516,18,,,IGN:1,,,,,,,,,,,,,,,,,,,,,
r,,EnergyConsumptionTotal,,,,,02,,,energy,,kWh,,,,,,,,,,,,,,,,,,,

@Rapha811
Copy link

Rapha811 commented Oct 15, 2024

@chrizzzp
I can read the total yield from:

*r,,,,,,B516,18,,,IGN:1,,,,,,,,,,,,,,,,,,,,,
r,,YieldTotal,,,,,01,,,energy,,,,,,,,,,,,,,,,,,,,,

And I can read the heating/hot water yields from:

*r,,,,,,B51A,05FF32,,,IGN:3,,,,,,,,,,,,,,,,,,,,,
r,,YieldHc,,,,,10,,,energy,,,,,,,,,,,,,,,
r,,YieldHwc,,,,,16,,,energy,,,,,,,,,,,,,,,

But when I try to read the total consumption from B516:

[update error] unable to parse read hmu ConsumptionTotal from 3108b516021802 / 00: ERR: invalid position

My HP is a flexoCOMPACT exclusive VWF 118/4.

@muewe
Copy link

muewe commented Oct 15, 2024

Same here with a flexoCompact exklusive VWF 58/4

eBusd detects it as

"MF=Vaillant;ID=HMU00;SW=0308;HW=0403"

@chrizzzp
Copy link

@Rapha811 @muewe

My HP is a flexoCOMPACT exclusive VWF 118/4.

Obviously the Arotherm messages for the total consumption don't work on the FlexoCompact, although total yield works...

A possible way to get the corresponding register: I guess it's possible to read the total consumption on the display of the heat pump? Maybe this action involves an ebus message. If yes, it would be possible to track and identify the corresponding message by logging the ebus traffic while reading the value on the machine and looking for the total yield value (displayed on the heat pump) in the ebus message. Data type for the total consumption should be UIN (2 bytes) like on other machines. The ebusd logfile or the command ebusctl grab result decode could help finding it...

@xbouthoorn
Copy link

xbouthoorn commented Oct 25, 2024

I found another state in the State07 message for when the system is in silent mode:

*r,,,,,,B511,,,,,,,,,,,,,,,,,,,,,,,,, r,,State,,,,,07,power,,UCH,,%,Compressor power,energy,,energy,10,kWh,daily environmental energy yield,state,,UCH,225=Silent Eco mode HP on;224=Silent Eco mode HP off;192=Eco mode HP off;193=Eco mode HP on;161=Silent mode HP on;160=Silent mode HP off;128=Normal mode HP off;129=Normal mode HP on;0=HP off;1=HP on,,,state,,UCH,0x00=ready;0x01=ready;0x0a=error;0x0b=error;0x08=heating;0x09=heating;0x10=cooling;0x11=cooling;0x80=heating_water;0x81=heating_water,,
The states 225,224,161 and 160 are added

Edit:
Ah, I now see the change mentioned by @chrizzzp about the state07 message. My bad

@chrizzzp
Copy link

Here's a minor update/correction on the B511 registers for the 08.hmu.csv which were discovered earlier, see #330 (comment):

*r,,,,,,B511,,,,,,,,,,,,,,,,,,,,,,,,,
r,,RunStatsCompressor,,,,,1801,,,IGN:1;minutesum:runtime;cntstarts:cycles,,,,,,,,,,,,,,,,,,,,,

This total compressor runtime (in minutes) and cycle counter is actually increasing only in the heating mode (Hc). There is separate register for the runtime/cycle counter in DHW (domestic hot water) mode (Hwc). I therefore suggest the following change/addition:

*r,,,,,,B511,,,,,,,,,,,,,,,,,,,,,,,,,
r,,RunStatsCompressorHc,,,,,1801,,,IGN:1;minutesum:runtime;cntstarts:cycles,,,compressor runtime in min and starts in Hc mode,,,,,,,,,,,,,,,,,,
r,,RunStatsCompressorHwc,,,,,1802,,,IGN:1;minutesum:runtime;cntstarts:cycles,,,compressor runtime in min and starts in Hwc mode,,,,,,,,,,,,,,,,,,

The following new B509 definitions were also established:

08.hmu.csv:

*r,,,,,,B509,540200,,,IGN:4,,,,,,,,,,,,,,,,,,,,,
r,,RunStatsHwcHours,,,,,BC0B,,,UIN;IGN:2,,hours,total runtime of Hwc mode,,,,,,,,,,,,,,,,,,
r,,RunStatsBuildingCPumpStarts,,,,,C50B,,,cntstarts2;IGN:2,,,total starts of building circuit pump,,,,,,,,,,,,,,,,,,

76.vwz.csv:

 *r,,,,,,B509,540200,,,IGN:4,,,,,,,,,,,,,,,,,,,,,
r,,RunStatsBuildingCPumpStarts,,,,,C50B,,,cntstarts2;IGN:2,,,total starts of building circuit pump,,,,,,,,,,,,,,,,,,

@jonesPD
Copy link

jonesPD commented Oct 29, 2024

Perhaps some of you also have received the ebus daemon update to 24.1.24.1. It has some breaking changes unfortunately, and no longer accepts 'unual characters' in field identifiers. I couldn't find a definition of unusal characters yet, but from the errors it raised, I was able to determine that ' ' (space) and a numerical first character for a field identifier is no longer acceptable.

I will update shortly my repository to work with 24.1.24.1 again and include the above updates.

@meierchen006
Copy link

meierchen006 commented Oct 30, 2024

Hello,

if you find new files for the ebusd here and add .csv files to them, where can I find these latest .csv files?

My system is as follows:
Vaillant aroTHERM VWL 55/6 A 230V S2
Vaillant hydraulic station VWZ MEH 97/6
Vaillant sensoNet VR 921
Vaillant sensoComfort VRC 720/3
ebusd v5

The following data was displayed during the scan:
scan15 == 15.ctlv3.csv
scan76 == 76.vwzio.csv
scan08 == 08.hmu.csv
scanf6 == ? no device is found either

image

image

image

These are devices on the German market.

I've only had my ebusd sensor for a few days and use HomeAssistant

I am brand new to ebusd and Home Assistant, but would like to learn how to work with it.

@championc
Copy link

championc commented Oct 30, 2024

Thanks @jonesPD - that update has fixed all of my issues. My data had all but dried up.

I have a simple setup - with just an 5kW Arotherm Plus, the indoor controller and a sensoComfort

I have some unidentified messages in the logs, so I thought they might be useful to maybe get even more data

[code]
2024-10-30 17:03:40.187 [mqtt error] read hmu WaterThroughput: ERR: SYN received
2024-10-30 17:03:40.432 [bus error] send to 08: ERR: read timeout, retry
2024-10-30 17:03:41.318 [update notice] sent poll-read hmu CurrentConsumedPower QQ=31: 0.6
2024-10-30 17:03:41.319 [mqtt notice] read hmu CurrentConsumedPower:
2024-10-30 17:03:41.757 [update notice] sent poll-read hmu CurrentYieldPower QQ=31: 3.3
2024-10-30 17:03:41.757 [mqtt notice] read hmu CurrentYieldPower:
2024-10-30 17:03:42.142 [bus error] send to 08: ERR: SYN received, retry
2024-10-30 17:03:42.337 [update notice] sent poll-read hmu FlowTemp QQ=31: 33.94
2024-10-30 17:03:42.337 [mqtt notice] read hmu FlowTemp:
2024-10-30 17:03:43.734 [bus notice] arbitration won while handling another request
2024-10-30 17:03:43.799 [bus error] send to 08: ERR: read timeout, retry
2024-10-30 17:03:44.210 [bus error] send to 08: ERR: SYN received, retry
2024-10-30 17:03:44.375 [bus error] send to 08: ERR: read timeout
2024-10-30 17:03:44.375 [bus error] send message part 0: ERR: read timeout
2024-10-30 17:03:44.375 [mqtt error] read hmu ReturnTemp: ERR: read timeout
2024-10-30 17:03:44.380 [bus notice] arbitration won in invalid state ready
2024-10-30 17:03:45.366 [update notice] received read hmu State01 QQ=10: 33.5;29.5;-;-;-;on
2024-10-30 17:03:45.375 [mqtt error] read message basv z1RoomTemp not found
2024-10-30 17:03:45.375 [mqtt error] read message basv DisplayedOutsideTemp not found
2024-10-30 17:03:45.375 [mqtt error] read message hmu CurrentCompressorUtil not found
2024-10-30 17:03:45.784 [bus error] send to 08: ERR: SYN received, retry
2024-10-30 17:03:45.820 [bus error] send to 08: ERR: wrong symbol received, retry
2024-10-30 17:03:46.497 [bus error] send to 08: ERR: read timeout
2024-10-30 17:03:46.497 [bus error] send message part 0: ERR: read timeout
2024-10-30 17:03:46.497 [mqtt error] read hmu EnergyIntegral: ERR: read timeout
2024-10-30 17:03:47.391 [update notice] received update-write hmu SetMode QQ=10: auto;38.5;-;-;0;1;1;0;0;0
2024-10-30 17:03:47.508 [bus error] poll hmu CompressorBlocktime failed: ERR: read timeout
2024-10-30 17:03:58.160 [bus error] poll hmu CompressorCurrentLimit failed: ERR: SYN received
2024-10-30 17:04:00.139 [mqtt error] read message ctlv2 z1ActualHeatingRoomTempDesired not found
2024-10-30 17:04:00.547 [update notice] received read hmu State07 QQ=71: 21;12.0;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:01.139 [mqtt error] read message ctlv2 z1RoomTemp not found
2024-10-30 17:04:01.139 [mqtt error] read message ctlv2 Hc1RoomTempCompensation not found
2024-10-30 17:04:01.139 [mqtt error] read message ctlv2 z1RoomHumidity not found
2024-10-30 17:04:01.139 [mqtt error] read message ctlv2 HwcStorageTemp not found
2024-10-30 17:04:03.555 [update notice] received unknown MS cmd: 0376b51206130009590300 / 0200ff
2024-10-30 17:04:04.030 [update notice] received read hmu State07 QQ=71: 22;12.1;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:05.210 [update notice] received read hmu State01 QQ=10: 34.0;30.0;-;-;-;on
2024-10-30 17:04:05.473 [update notice] received read vwzio State01 QQ=10: -;-;-;-;-;off
2024-10-30 17:04:05.739 [update notice] received read vwz unknownMPoll10sB512h QQ=10: 00 80 02 00 80 ff 00
2024-10-30 17:04:06.001 [update notice] received update-write hmu SetMode QQ=10: auto;38.5;-;-;0;1;1;0;0;0
2024-10-30 17:04:06.265 [update notice] received update-write vwzio SetMode QQ=10: auto;0.0;-;-;1;0;1;0;0;0
2024-10-30 17:04:07.591 [bus error] send to 08: ERR: read timeout, retry
2024-10-30 17:04:08.190 [bus error] send to 08: ERR: SYN received, retry
2024-10-30 17:04:08.516 [bus error] send to 08: ERR: SYN received
2024-10-30 17:04:08.516 [bus error] send message part 0: ERR: SYN received
2024-10-30 17:04:08.516 [mqtt error] read hmu BuildingCircuitPumpPower: ERR: SYN received
2024-10-30 17:04:08.677 [update notice] sent poll-read hmu WaterThroughput QQ=31: 864
2024-10-30 17:04:08.677 [mqtt notice] read hmu WaterThroughput:
2024-10-30 17:04:08.861 [update notice] sent poll-read hmu CurrentConsumedPower QQ=31: 0.7
2024-10-30 17:04:08.861 [mqtt notice] read hmu CurrentConsumedPower:
2024-10-30 17:04:09.041 [update notice] sent poll-read hmu CurrentYieldPower QQ=31: 3.3
2024-10-30 17:04:09.041 [mqtt notice] read hmu CurrentYieldPower:
2024-10-30 17:04:09.221 [update notice] sent poll-read hmu FlowTemp QQ=31: 34.12
2024-10-30 17:04:09.221 [mqtt notice] read hmu FlowTemp:
2024-10-30 17:04:09.371 [update notice] sent poll-read hmu ReturnTemp QQ=31: 30.0
2024-10-30 17:04:09.371 [mqtt notice] read hmu ReturnTemp:
2024-10-30 17:04:09.371 [mqtt error] read message basv z1RoomTemp not found
2024-10-30 17:04:09.371 [mqtt error] read message basv DisplayedOutsideTemp not found
2024-10-30 17:04:09.371 [mqtt error] read message hmu CurrentCompressorUtil not found
2024-10-30 17:04:09.540 [update notice] sent poll-read hmu EnergyIntegral QQ=31: -180
2024-10-30 17:04:09.540 [mqtt notice] read hmu EnergyIntegral:
2024-10-30 17:04:09.712 [update notice] sent poll-read hmu CompressorHours QQ=31: 211
2024-10-30 17:04:10.907 [update notice] received read hmu State07 QQ=71: 23;12.1;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:11.515 [update notice] received unknown MS cmd: 0376b512061300095b0300 / 0200ff
2024-10-30 17:04:14.335 [update notice] received read hmu State07 QQ=71: 24;12.1;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:15.171 [update notice] received read hmu State01 QQ=10: 34.0;30.0;-;-;-;on
2024-10-30 17:04:15.439 [update notice] received read vwzio State01 QQ=10: -;-;-;-;-;off
2024-10-30 17:04:15.708 [update notice] received read vwz unknownMPoll10sB512h QQ=10: 00 80 02 00 80 ff 00
2024-10-30 17:04:15.919 [update notice] received update-read broadcast unknownBCb505h5c QQ=10: 00
2024-10-30 17:04:16.178 [update notice] received update-write hmu SetMode QQ=10: auto;38.5;-;-;0;1;1;0;0;0
2024-10-30 17:04:16.442 [update notice] received update-write vwzio SetMode QQ=10: auto;0.0;-;-;1;0;1;0;0;0
2024-10-30 17:04:16.681 [update notice] received update-read broadcast vdatetime QQ=10: 16:02:58;28.10.2024
2024-10-30 17:04:16.919 [update notice] received unknown MS cmd: 1008b50702094d / 02e401
2024-10-30 17:04:17.182 [update notice] received poll-read hmu State00 QQ=10: 34.25;9;43.5;Heating;Heating;0;inactive;24.5
2024-10-30 17:04:17.398 [update notice] received update-read broadcast OutsideTemp QQ=10: 12.328
2024-10-30 17:04:19.524 [update notice] received unknown MS cmd: 0376b512061300095b0300 / 0200ff
2024-10-30 17:04:20.220 [update notice] sent poll-read hmu CompressorHysteresisCooling QQ=31: 5.00
2024-10-30 17:04:21.242 [update notice] received read hmu State07 QQ=71: 25;12.1;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:24.676 [update notice] received read hmu State07 QQ=71: 25;12.1;on;off;off;off;off;off;on;on;hc;0.90;standby
2024-10-30 17:04:24.905 [bus notice] scan 15: ;Vaillant;BASV3;0760;7304
2024-10-30 17:04:24.905 [update notice] store 15 ident: done
2024-10-30 17:04:24.905 [update notice] sent scan-read scan.15 QQ=31: Vaillant;BASV3;0760;7304
2024-10-30 17:04:24.905 [bus notice] scan 15: ;Vaillant;BASV3;0760;7304
2024-10-30 17:04:25.049 [update notice] sent unknown MS cmd: 3115b5090124 / 09003231323431303030
2024-10-30 17:04:25.138 [update notice] received read hmu State01 QQ=10: 34.0;30.0;-;-;-;on
2024-10-30 17:04:25.241 [update notice] sent scan-read scan.15 id QQ=31:
2024-10-30 17:04:25.396 [update notice] sent scan-read scan.15 id QQ=31:
2024-10-30 17:04:25.539 [update notice] received read vwzio State01 QQ=10: -;-;-;-;-;off
2024-10-30 17:04:25.678 [update notice] sent scan-read scan.15 id QQ=31: 21;24;10;0020328845;0082;011377;N6
2024-10-30 17:04:25.678 [bus notice] scan 15: ;21;24;10;0020328845;0082;011377;N6
2024-10-30 17:04:25.698 [main notice] read scan config file vaillant/15.basv.csv for ID "basv3", SW0760, HW7304
2024-10-30 17:04:25.698 [main notice] found messages: 799 (0 conditional on 0 conditions, 276 poll, 18 update)
2024-10-30 17:04:25.860 [update notice] received read vwz unknownMPoll10sB512h QQ=10: 00 80 02 00 80 ff 00
2024-10-30 17:04:26.044 [bus notice] max. symbols per second: 146
2024-10-30 17:04:26.387 [update notice] received update-write vwzio SetMode QQ=10: auto;0.0;-;-;1;0;1;0;0;0
2024-10-30 17:04:27.370 [update notice] received unknown MS cmd: 7108b51a0304c934 / 0ec9cf2000c0022101001800061800
2024-10-30 17:04:27.700 [main notice] scan completed 2 time(s), check again
2024-10-30 17:04:31.211 [bus error] poll hmu CompressorHysteresisHc failed: ERR: read timeout
2024-10-30 17:04:37.521 [bus error] send to 08: ERR: read timeout, retry
2024-10-30 17:04:38.371 [bus error] send to 08: ERR: SYN received, retry
[/code]

So the above log has 6 unknown messages
2024-10-30 17:04:03.555 [update notice] received unknown MS cmd: 0376b51206130009590300 / 0200ff
2024-10-30 17:04:11.515 [update notice] received unknown MS cmd: 0376b512061300095b0300 / 0200ff
2024-10-30 17:04:15.708 [update notice] received read vwz unknownMPoll10sB512h QQ=10: 00 80 02 00 80 ff 00
2024-10-30 17:04:16.919 [update notice] received unknown MS cmd: 1008b50702094d / 02e401
2024-10-30 17:04:25.049 [update notice] sent unknown MS cmd: 3115b5090124 / 09003231323431303030
2024-10-30 17:04:27.370 [update notice] received unknown MS cmd: 7108b51a0304c934 / 0ec9cf2000c0022101001800061800

In MQTT Explorer, it shows the following entries within the HMU section
unknownMB509h2802 = { "0": {"name": "", "value": "02 00 09 02 5f 01 00 48 4d 55 30 33"}}
unknownMB513h0528 = { "0": {"name": "", "value": "01"}}
unknownMB51Ah0532 = { "0": {"name": "", "value": "05 07 c0 cf c0 7b 3c 00 b0 1b 20 00 00 00"}}
hmuUnknownFFFF2F = { "0": {"name": "", "value": "ff ff"}}
hmuUnknownFFFF60 = { "0": {"name": "", "value": "22 fc"}}
hmuUnknownFFFF62 = { "0": {"name": "", "value": "00 00"}}
hmuUnknownFFFF68 = { "0": {"name": "", "value": "00 00"}}
hmuUnknownFFFF69 = { "0": {"name": "", "value": "00 00"}}

@chrizzzp
Copy link

chrizzzp commented Dec 7, 2024

Just wanted to share I recently noticed besides the error history (invoked by the errors.inc) there is also a statuscode history which can be read the same way as the error history (using index option).

For the Arotherm Split individual statuscode histories can be polled from the hmu as well as from the vwz (that's why I placed the message definition in the errors.inc).

*r,,,,,,B503,01,,,,,,,,,
r,,errorhistory,error history,,,,01,index,m,UCH,,,,,,history3
r,,statushistory,statushistory,,,,03,index,m,UCH,,,,,,history3

The following templates are required:

history3,status;time3;date2;error;error,,,
error,UIN,,,error number
status,UCH,,,Status
time3,BTM,,,time
date2,BDA:3,,,date

For example
ebusctl r -f -c hmu -i 0 statushistory
results in
2;16:35;07.12.2024;101;0
indicating on 7.12.2024 at 16:35 the statuscode 101 (compressor off) was active.

ebusctl r -f -c hmu -i 1 statushistory
2;16:29;07.12.2024;107;255
ebusctl r -f -c hmu -i 2 statushistory
2;15:26;07.12.2024;104;255

107 = compressor overrun ("Nachlauf")
104 = compressor on

Index (-i) can take numbers from 0 to 9, index 0 corresponds to the latest entry in the history. I'm not yet sure what the 'status' field (2) reflects and what kind of information the last two bytes hold (currently templated with the error number).

@Gilgahmesh
Copy link

Hello,

I am really sorry for the offtopic but I just want to start with the installation of ebusd.
My mother tongue is german and as far as I can see all the updates from @jonesPD are made to the english files.
Is there any chance to get the most current german files with all the changes discovered here?

Anyways thanks a lot to the great work here :).
As soon as I have my installation running and understood how everything is working I will post the registers I find here as well.
I will use Loxone with a arotherm VWL 55/6 Plus, VRC720/2 and a VR940f.

@meierchen006
Copy link

Hello, the same for me.
My native language is also German,
I would also like to have the data in German.

I hope you can translate the data from @jonesPD into German

My HP is also an aroTHERM 55/6, VRC 720/3 and VR921

@miho9
Copy link

miho9 commented Dec 10, 2024 via email

@jonesPD
Copy link

jonesPD commented Dec 15, 2024

Just wanted to share I recently noticed besides the error history (invoked by the errors.inc) there is also a statuscode history which can be read the same way as the error history (using index option).
For the Arotherm Split individual statuscode histories can be polled from the hmu as well as from the vwz (that's why I placed the message definition in the errors.inc).

Thanks @chrizzzp for another great addition. I propose a slightly different implementation, to translate the statuscode into human readable text using the 'scode' template:

errors.inc
*r,,,,,,"B503","01",,,,,,,,, r,,errorhistory,Error history,,,,01,index,m,UCH,,,,,,errorhistory r,,statushistory,statushistory,,,,03,index,m,UCH,,,,,,statushistory

_templates.csv
statushistory,status;time3;date2;scode;error,,,
Note: ensure to place above statushistory definition after the definition of scode to avoid an error.

...snap... what kind of information the last two bytes hold (currently templated with the error number).

I think we can actually ignore the last two bytes, because when I read the same register twice, this value changes. Does this happen with your unit too?

@chrizzzp
Copy link

chrizzzp commented Dec 15, 2024

@jonesPD

I propose a slightly different implementation, to translate the statuscode into human readable text using the 'scode' template:

errors.inc:

*r,,,,,,"B503","01",,,,,,,,, 
r,,statushistory,statushistory,,,,03,index,m,UCH,,,,,,statushistory

Yes, very good idea. I agree.

...snap... what kind of information the last two bytes hold (currently templated with the error number).

I think we can actually ignore the last two bytes, because when I read the same register twice, this value changes. Does this happen with your unit too?

Yes, same with my unit. So I think we can ignore them also in the template:

_templates.csv:
statushistory,status;time3;date2;scode,,,

BTW:
Could you check whether the 'errorhistory' template works for your system?
I noticed the responses vary from the different circuits:
hmu and vwz give a 10-byte response:

3108b50303010100 / 0a010000000000ffff0000
3176b50303010100 / 0a010000000000ffff0000

ctlv2 and vr_71 give an 8-byte response:

3115b50303010100 / 0800ffffffffffffff
3126b50303010100 / 080236121905245102

While at the moment I have no errors in the hmu/vwz/ctlv2 history, I previously validated the errorhistory-template and found time and date of the errors are actually encoded as data type BTM and BDA:3, respectively.

In case of the vr_71 in my system the last error was decoded to:

3126b50303010100 / 080236121905245102
2;12:36;19.05.2024;593

So I suggest the (new) template should rather be:
errorhistory2,status;time3;date2;error,,,
where the last byte (vr_71, ctlv2) or the last three bytes (hmu,vwz) can be ignored.

Unfortunately I haven't found any error code reference for the vr_71 module, thus I cannot really decode them any further.

Maybe someone can confirm this, although this needs current errors in the history...

@chrizzzp
Copy link

chrizzzp commented Dec 15, 2024

I noticed the responses vary from the different circuits: hmu and vwz give a 10-byte response:

3108b50303010100 / 0a010000000000ffff0000
3176b50303010100 / 0a010000000000ffff0000

ctlv2 and vr_71 give an 8-byte response:

3115b50303010100 / 0800ffffffffffffff
3126b50303010100 / 080236121905245102

There is also another issue with the different repsonses:

When the error entry is empty (no error), hmu and vwz response with '0000' for the time and '000000' as the date, while vr_71 and ctlv2 response with'ffff' and 'ffffff', respectively. This is correctly decoded to '-:-' and '-.-.-' for the latter, while for hmu and vwz the value '000000' for the data type BDA:3 creates a decoding error: ERR: argument value out of valid range .

I'm not sure how to deal with this properly...

@stadid
Copy link
Contributor

stadid commented Dec 16, 2024

@chrizzzp @jonesPD

chrizzzp commented Dec 15, 2024

@jonesPD

I propose a slightly different implementation, to translate the statuscode into human readable text using the 'scode' template:

errors.inc:

*r,,,,,,"B503","01",,,,,,,,, 
r,,statushistory,statushistory,,,,03,index,m,UCH,,,,,,statushistory

Yes, very good idea. I agree.

Please be warned that there is no universal status codes description. Status code description (description for the same status number) varies from family to family plus varies even inside one family of heat generators (i.e. for different generations). If you do status code conversion from number to human readable description only for yourself (only for your specific equipment) it's ok, but if you want to implement this feature for everyone one of the the approaches (which I've implemented in my software) is to link status code description to the article number of the heat generator. Group of article numbers form a family sharing the same status code description. I've made it outside of ebusd config, but I have a feeling that it could be implemented in ebusd config files using conditional loading of appropriate status description files based on article number.

picture

@chrizzzp
Copy link

Thanks @stadid, very valid point.

So the 'statushistory' probably shouldn't go in the errors.inc, but for the moment rather in the device-specific CSV (hmu/vwz etc.). If there are further variations within a device family, we really would need the conditional configurations (https://github.com/john30/ebusd/wiki/4.5.-Conditions) which I haven't really looked into yet.

For the 'scode' template we'd also need device-specific templates then or put the human-readable status codes back in the device-specific CSV.

Probably same with the 'errorhistory', as the messages also seem to be device-specific... At the moment I use two different errors.inc depending on the device (one for hmu/vwz, one for ctlv2/vr_71).

@stadid
Copy link
Contributor

stadid commented Dec 16, 2024

@chrizzzp

Probably same with the 'errorhistory', as the messages also seem to be device-specific...

Yes. Error messages are device specific.
BTW, please see below error codes reference for VRC720/VRT380/VR92 (codes are similar for the wired and wireless versions)
Error_codes-VRC720(f)-VRT380(f)-VR92(f).xlsx. Wish I have the same document for VRC700. ))))

@john30
Copy link
Owner

john30 commented Dec 23, 2024

reworked+merged in 7a4561c.
the duplication of 1a05 ff34 into 1a05 e534 and others still needs to be sorted out though.
see also #316 (comment)

@john30 john30 closed this Dec 23, 2024
@john30
Copy link
Owner

john30 commented Dec 29, 2024

please check the next generated csvs with ebusd 24.1 (or current source) as described there or by using a local clone of https://github.com/eBUS/ebus.github.io and using the "next" folder in there

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.