Ariston Group integration via eBusd

You may try also to send the boiler the “real” heating request. The command codes are:

z1 0191
z2 0291
z3 0391

and so on

these command are the ones sent from the bus thermostats to require heating, in my systems these are broadcasted regularly by the energy manager PCB via messages like this:

13fe20101001910000029100000391000004910000 (here z1,2,3 4 are all off, I have only Z1 configured)

you can try it via ebusctl hex commands (eg. for z1):
ebusctl hex fe20101001910100

you may want to repeat it regulary, in my system the energymanager broadcast these messages every 5 seconds.

I would definitely like to do it correctly. I have activated writing hex messages but after trying your command I get this error:

2ad9b828-ebusd:/# ebusctl hex fe20101001910100
ERR: invalid argument

sorry, my bad, I forgot to change the LEN part of the message. try this:

ebusctl hex fe20100401910100

That partly worked, done broadcast, nothing happened → ebusd log

2025-04-28 22:15:38.687 [main notice] hex cmd: 31fe20100401910100
2025-04-28 22:15:38.800 [update notice] sent unknown BC cmd: 31fe20100401910100

Just to be clear.
You had your boiler in winter mode
You had set the thermoregulation on outdoor probe
you issued that command

and nothing happened?

If that’s so I fear we miss some part of the protocol, seems there should be a piece of handshaking that ebusd (emulating a device on the bus) should do to be kind of enabled to issue the heating request command

EDIT: the sent unknown BC error is normal if in your CSV there’s no line to decode that kind of message (ebusd decode also the messages it transmits)

At first I didn’t set thermoregulation mode. Step I’ve taken now as I understand should be correct according to what you are writing.

boiler is in winter mode.
Published mqqt command:
ebusd/energymgr/z2_heat_therm_type_selection/set with payload 2
pushed ebusctl hex fe20100402910100

And got nothing. Just to be sure - I don’t have outdoor probe connected, just boiler and ebusd shield.

I’m now just one datapoint short of integrating our Ariston Nuos Split water heater in HA and that is the one that allows me to read and set the program type: Green, Comfort, Fast. I also do not yet know the codes for Holiday and Boost but I can live with that.
My csv file is like this:

# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment,field2,part (m/s),datatypes/templates,divider/values,unit,comment,field3,part (m/s),datatypes/templates,divider/values,unit,comment,field4,part (m/s),datatypes/templates,divider/values,unit,comment,field5,part (m/s),datatypes/templates,divider/values,unit,comment
b,dhw,date_time,DateTime,,fe,2070,,time,,VTM,,,,date,,HDA
b,dhw,heating,Heating Mode,,fe,2010,d69a,on_off,,SIN,1,,,code,,IGN:2,,,,mode,,BCD,0=off;1=heatpump;2=element;3=both
b,dhw,setting,setting,,fe,2010,6147,required_temp,,SIN,10,°C,,code,,IGN:3,,,,normal_reduced,,BCD,0=off;1=reduced;2=normal

r2,dhw,on_off,On/Off,,fe,2001,0220
b,dhw,on_off,On/Off,,fe,200e,0220,state,s,BCD,0=off;1=on
r2,dhw,program_manual,Program/Manual,,fe,2001,c028
b,dhw,program_manual,Program/Manual,,fe,200e,c028,state,s,BCD,1=program;2=manual
r2,dhw,normal_temp,Normal temperature,,fe,2001,6126
b,dhw,normal,normal_temp,,fe,200e,6126,temp,s,SIN,10,°C,,min,s,SIN,10,°C,,max,s,SIN,10,°C,,
w,dhw,normal,normal_temp,,fe,200e,6126,temp,s,SIN,10,°C
r2,dhw,reduced_temp,reduced_temp,,fe,2001,6226
b,dhw,reduced,reduced_temp,,fe,200e,6226,temp,s,SIN,10,°C,,min,s,SIN,10,°C,,max,s,SIN,10,°C,,
w,dhw,reduced,reduced_temp,,fe,200e,6226,temp,s,SIN,10,°C
r2,dhw,anti_legionella_switch,anti_legionella,,fe,2001,0b20
b,dhw,anti_legionella,anti_legionella,,fe,200e,0b20,state,s,BCD,0=off;1=on
r2,dhw,legionella_temp,legionella_temp,,fe,2001,7d26
b,dhw,legionella,legionella_temp,,fe,200e,7d26,temp,s,SIN,10,°C,,min,s,SIN,10,°C,,max,s,SIN,10,°C,,
w,dhw,legionella,legionella_temp,,fe,200e,7d26,temp,s,SIN,10,°C

r2,dhw,actual,Actual temp,,7c,2000,63a0,,s,IGN:1,,,,temp,s,SIN,10,°C

b,broadcast,c_2010_da46,2010 da46,,fe,2010,da46,c_da46,,IGN:* 
b,broadcast,c_2038_00,2038 00,,fe,2038,00,c_2038_00,,IGN:* 
b,broadcast,c_2038_01,2038 00,,fe,2038,01,c_2038_01,,IGN:* 
b,broadcast,c_2038_02,2038 00,,fe,2038,02,c_2038_02,,IGN:* 
b,broadcast,c_2020_7d26,2020 7d26,,fe,2020,7d26,c_7d26,,IGN:* 
b,broadcast,ign2050,ign2050,,fe,2050,,data,,IGN:*
b,broadcast,ign2051,ign2051,,fe,2051,,data,,IGN:*
b,broadcast,ign2071,ign2071,,fe,2071,,data,,IGN:*
b,broadcast,error,Error,,fe,2004,,reply,,IGN:*

b,dhw,reply,Reply,,fe,200f,,value,,HEX:*
w,dhw,command,Command,,fe,2020,,data,,HEX:*
w,dhw,query,Query,,fe,2000,,address,,HEX:*

In HA I get it like this (via mqtt configuration):

For me this shows the last configured holiday-end date and time (state / date / time)

# Every 5min
r,dhw,holiday_date,holiday,,fe,2071,,status,s,holiday_status,,,status,time,m,VTM,,,endtime,date,m,HDA:3,,,enddate,

But unfortunately I did not find out how to set these values…

I´m also still searching for this “program type: Green, Comfort, Fast” and also for the silent mode.

I checked all 65535 possible addresses with “hex 7c 2000 02 nnnn”. From 275 I got a value other then 0100. None of those seem to reflect program type, although I found address d140 (actually 40d1) that increases every time I change the program type in the app.

Oh, wow. Thats interesting. Then I do´nt need to search in this direction furthermore. Thanks! Some of the values I posted earlier just seem to be some counters, increasing every time the HP runs (41af and 42af) others seem to count the seconds, the HP runs (40af and 44af). But nothing really interesting…

Turned out that I made a mistake in comparing values. I found addres 89de (to be entered as de89 in the query: hex 7c 2000 02 de89) for the program: 0=green; 1=comfort; 2=fast.
The program can be set by hex 7c 2020 03 de89 nn where nn is 00, 01 or 02 for green, comfort and fast.
These are the addresses that gave a valid response. Remember that the addresses should be entered in little endian format. So address 0a0b should be entered as 0b0a in the query.

030b - 020101
1363 - 03017102
1364 - 03016e02
1365 - 0301c000
1366 - 0301f500
1367 - 03016f02
136c - 0301fa00
136d - 0301ce00
1600 - 020100
1601 - 020100
2109 - 020101
210b - 020100
2114 - 020100
211a - 020100
211f - 020101
27ce - 020100
27cf - 020100
27d8 - 020118
2ace - 020103
2d4c - 0301c800
2d66 - 0301f401
2d67 - 03019cff
2d69 - 03016c02
2d6a - 03013200
2d6b - 0301bc02
3dc0 - 020100
3dd0 - 020100
3dd9 - 020100
3dda - 020100
3ec4 - 020100
3ecb - 020100
3ed5 - 020100
40d1 - 020178
40da - 020138
40db - 02010b
40dc - 02010a
40dd - 020105
40de - 020106
40df - 020119
4509 - 020100
450a - 020100
450f - 020100
46da - 0201e5
477d - 03010000
4bcc - 020108
4bd0 - 020105
4bd1 - 020100
4bd2 - 020105
4bd4 - 020100
4bd5 - 020100
4bd6 - 020100
4bd7 - 020100
5143 - 0301ffff
880b - 020101
880c - 020100
880d - 020101
880e - 020101
89dd - 020100
89de - 020100
8b6e - 03016c02
8e59 - 0301dc05
8e5a - 0301e803
8e5b - 0301c201
8e73 - 0301f401
8f40 - 03010807
9ac2 - 020100
9ac3 - 020100
9ac4 - 02013e
9aca - 020100
9ad6 - 020101
9ad7 - 020101
9ad8 - 020164
9ad9 - 020100
9d4c - 03010000
9d4d - 03010000
9d4e - 03010000
9e40 - 03010000
9e41 - 03010000
9e42 - 03010000
9e43 - 03010000
9e44 - 03010000
9e45 - 03010000
9e46 - 03010000
9e49 - 03010000
9e52 - 03010000
9e53 - 03010000
9e54 - 03010000
9e6f - 03016f02
9e70 - 03016c02
9f62 - 03010000
a000 - 020100
a001 - 020100
a002 - 020100
a003 - 020100
a040 - 03010000
a041 - 03010000
a042 - 03015801
a043 - 03010a00
a044 - 03019501
a045 - 03010000
a046 - 03010700
a047 - 0301ce02
a048 - 03011c00
a049 - 03010000
a04a - 0301b202
a04b - 0301b202
a04c - 0301ad01
a04d - 03010000
a04e - 03010000
a04f - 03018948
a050 - 0301ad01
a051 - 03010000
a052 - 03010000
a053 - 0301c348
a060 - 03016f02
a061 - 03016f02
a062 - 03010000
a063 - 03016f02
a064 - 03015a00
a065 - 03014000
a066 - 03012b00
a067 - 03010402
a068 - 03013500
a069 - 03010000
a06a - 03010000
a06b - 03016f02
a06c - 03014f00
a06d - 03016c02
a06e - 03015f02
a06f - 03016b02
a070 - 03016b02
a071 - 03015102
a072 - 03016c02
a073 - 03016c02
a074 - 03012002
a075 - 03015702
a076 - 03017700
a077 - 03010000
a078 - 03010000
a0c0 - 020104
a0c1 - 020104
a0c2 - 020100
a0c3 - 020100
a0c4 - 020100
a0c5 - 020100
a0c6 - 020100
a0c7 - 020101
a0c8 - 020102
a0c9 - 020101
a0ca - 020100
a0cb - 020107
a0cc - 020100
a0cd - 020100
a0ce - 020100
a0cf - 020100
a0d0 - 020106
a0d1 - 020101
a0d2 - 020100
a0d3 - 020100
a0d4 - 02010c
a0d5 - 020105
a0d6 - 020104
a0d7 - 020100
a0d8 - 020100
a0d9 - 020102
a0da - 020100
a0db - 020100
a0dc - 020100
a0dd - 020100
a0de - 020100
a0df - 020100
a1c0 - 020100
a1c1 - 020100
a1c2 - 020100
a1c3 - 020100
a1c4 - 020100
a1c5 - 020100
a840 - 03010000
a841 - 03010000
a842 - 03010000
a860 - 03010000
a861 - 03010000
a862 - 03010000
a863 - 03010000
a864 - 03010000
a865 - 03010000
a8c0 - 020100
a8c1 - 020100
a8c2 - 020100
a8c3 - 020100
a8c4 - 020100
a940 - 03013100
a941 - 03010000
a942 - 03010000
a943 - 0301ffff
ab40 - 0301857b
ab41 - 0301867b
ac40 - 03010000
ac41 - 03010000
ac42 - 03010000
ac43 - 03010e00
ac44 - 03010000
ac45 - 03012a00
ac46 - 03011400
ac47 - 03013c00
ac48 - 0301b004
ac49 - 03011e00
ac4a - 03011e00
ac4b - 0301f000
ac4c - 03012c01
ac4d - 03010500
ac4e - 03010000
ac4f - 0301f000
ac50 - 03012b01
ac51 - 03010000
ac52 - 03010000
ac53 - 03010b00
ac54 - 03010000
ac55 - 03012c01
ac56 - 03016b0d
ac57 - 03010000
ac58 - 03010000
ac59 - 03010000
ae40 - 03010000
ae41 - 03010000
ae42 - 03011e00
ae43 - 03010500
ae44 - 03010000
ae45 - 0301a700
ae46 - 03011c00
ae47 - 030151a6
ae48 - 03010000
ae49 - 03011e00
ae4a - 03011e00
ae4b - 03010000
ae4c - 03011e00
ae4d - 03012b01
ae4e - 03010000
ae4f - 03010500
af40 - 03010000
af41 - 0301f40b
af42 - 03016f09
af43 - 03016d05
af44 - 03010b00
d844 - 0301d803
d845 - 03010000
d846 - 03010c00
d847 - 03010000
d84c - 03010700
d84d - 03010000
d84e - 03011c02
d84f - 03010000
d852 - 03014202
d853 - 03010000
d854 - 03013002
d855 - 03010000
d856 - 0301dd26
d857 - 03010000
da40 - 0301d891
da41 - 03010200
da52 - 0301b06e
da53 - 03010200
da54 - 03012823
da55 - 03010000
f0de - 020100
f0df - 020108
f2c0 - 020100
f6c1 - 020100
f7d2 - 020103
f7d3 - 020104
fa7b - 0301fd02
fa7c - 0301b801
fc44 - 03010000
fc45 - 03010000
fc46 - 0301a000

Great find. This indeed shows the current temperature of my boiler. Thanks, you are the hero of the week now :grinning:

in my case (boiler) the “party” setting for CH (not DHW) is broadcasted with a 2073 command code, you can try it.

My writing line (not tested becausa I already turned off heating) is this one

w,energymgr,z1_setp_override,Temporary Z1 Temp override,,fe,2073,,temp,s,UCH,10,°C,,time,s,VTI,,,,date,s,HDA:3,,,,constant,s,UIN 

and the command to send the message must be like this:

ebusctl write -c energymgr z1_setp_override "220;13:00:00;12.02.2025;257"

the 257 at the end is a kind of constant (0x0101) appended by my remote control unit as it send this messages on the bus.

d140 is the config counter, I have the same behaviour in my system, I have multiple devices (boile, HP, energy manager…) and that value is sent by every device, I interpret is as the device is saying: “I have this config number, so if you (other devices) have stored parameters that I have broadcasted with a different config number please update them with the new values”…

Thanks you for that list!
I can confirm that de89 sets the the green, comfort and fast mode for my devices as well.
With your output list I could easily find out the silent mode setting: :grinning:

r,dhw,dhw_silent,DHW Silent Mode,77,7c,2000,0b21,onoff,s,onoff,
w,dhw,dhw_silent,DHW Silent Mode,77,7c,2020,0b21,,m,onoff,

I found the following additional datapoints for the Ariston Nuos Split (addresses to be be entered in little endian format. So address 0a0b should be entered as 0b0a in the query. In big endian format related datapoints cluster better). The Pxx numbers refer to the settings in the manual.

Address - Result Parameter Value
1363 - 03016a02 P22 T-high 618
1364 - 03016602 P21 T-low 614
1365 - 0301b400 P24 T-air 180
1366 - 0301fa00 P26 T-suct 250
1367 - 03016902 P23 T-dome 617
136c - 0301fa00 P25 T-evap 250
2d4c - 0301c800 P10 Tankvol 200
2d66 - 0301f401 P5 Set min 500
2d67 - 03019cff P8 Minair -10
2d69 - 03016c02 P7 T-max HP 620
2d6a - 03013200 P9 Hist HP 50
2d6b - 0301bc02 P4 Set max 700
880c - 020100 Preheat 0
fa7b - 0301f802 P28 T-disc 760
fa7c - 03018601 P27 T-cond 390

The heating circuit temperatures All heatpump related values only seem to update when the heatpump is active.

One last datapoint for the Ariston Nuos Split:
Boost can be activated / reset with hex 7c 2020 03 1a21 0x
Effective only when heating.

Finally managed to get the control for the Ariston Nuos Split in HA. I had to use a climate entity instead of a water-heater entity as the water-heater entity does not have the preset control.

The target temperature cannot be set in the control as the target temperature is a computed value. This is also valid for the Ariston App. In there in the Program (auto) mode the target temperature cannot be set and in manual (heat) mode adjusting the target temperature sets the comfort temperature.
It could be implemented with an automation on change of the temperature attribute of the climate entity when it differs from the comfort or the reduced temperature.

Thank you for all your effort and investigation on this!
Now I think that I also have all parameters to automate my HP depending on the photovoltaic system… :grinning: :+1:
…and also add it to my dashboard, but I think in a more basic way :wink:

Hi,
I was playing around with your suggestion and really got it working, generally.
Thanks for that!
This is my reading line, showing the holiday status, date and time in the HA dashboard:

r,dhw,holiday_date,Urlaub,,fe,2071,,onoff,s,urlaub_status_template,,,Status,time,s,VTM,,,Enduhrzeit,date,s,HDA:3,,,Enddatum,

My writing line looks like this according to your suggestion:

w,dhw,holiday_date,Urlaub,,fe,2071,,,m,urlaub_status_template,,,status,,m,VTM,,,Enduhrzeit,,m,HDA:3,,,Enddatum,constant,s,UIN

With the following command I now can enable/disable the holiday mode and set date and time correctly:

Switch holiday mode on and set end date/time:

ebusctl write -c dhw holiday_date "3;23:59:59;11.05.2025;257"

Switch holiday mode off:

ebusctl write -c dhw holiday_date "0;23:59:59;11.05.2025;257"

(This also works with and without this constant at the end)

Executing these lines in CLI of my Ebusd server works quite well,
but I have honestly no idea how to set these values in HA now, because adding the writing line to my config does not change anything in HA. There I still only have the values in read-only mode and cannot directly set date, time, or enable the status.

Do you have an idea, how this can be solved in HA?

As a new member I´m not able to reply to this topic anymore, therefore I try to edit this one :frowning: :

Maybe I did not explain that very well.
I also use mqtt, which is working fine in general.
I only have problems to understand how I can SET the specific values for this holiday mode.
With the lines I posted above, I only get the values displayed in HA like this:

But I´m not able to SET those values.
For other values, like setting the temperature or switching the DHW on and off it is working.
I´m thankful for any hint :slight_smile: