Giter Club home page Giter Club logo

Comments (16)

perefouras avatar perefouras commented on July 19, 2024

Here is my contribution to help understand the handshake over ebus.

Boiler : Ariston Clas one 25 (brand new PCB #65116585-06)
No thermostat on the ebus (only Daniel Kucera ebus adapter v6.0)
TA1 shunt to be able to control heating via HA integration (it looks like a device with address 70 missing on the bus might prevent the full control of the boiler).

Log file attached
ariston-clas-one-reset.log.gz

from ebusd_configuration_chaffoteaux_bridgenet.

ysard avatar ysard commented on July 19, 2024

Ok thank you I read it.

You have an interesting bus reset response to your manual bus reset, not seen until now 37fe2034 0a 3c5affffffffff010300.
It's sent at the beginning of the handshake instead of 37fe2034 00.

Plus a normal silent error for the external temp probe during boot (command 2004, 0xec opcode).

Its all the changes it see. It's more opaque than before with this unexpected bus reset...

from ebusd_configuration_chaffoteaux_bridgenet.

perefouras avatar perefouras commented on July 19, 2024

Thank you for the analysis.

So, there could be differences between makes/manufacturers ?!
Or maybe this 37fe2034 0a rather could be some kind of a (desperate!) call to somebody with a 7x id (at least one zone to give control to/accept control from) ?

It really looks like it's going to be hard to get something out of this mysterious first exchange.

I'd really like to be able to properly control the heating from HA though.

I'm a little concerned the method I use when I reach the requested temperature (lower/set fixed temperature to minimum to trigger/force circulation, wait a handfull of minutes for the hot water to reach all radiators and then trigger "winter mode" with 0120) might be to stressfull to the electronics in the long term.
It was obviously not designed to operate like this...

It seems I'm the only one with no ebus thermostat at play and it prooves quite hard to try and guess a working hack !

from ebusd_configuration_chaffoteaux_bridgenet.

ysard avatar ysard commented on July 19, 2024

there could be differences between makes/manufacturers ?!
There could be some updates of the protocol, my boiler was installed in 2013. But there are also a lot of unknown parts in it...
I found that the protocol is robust to missing bytes in the packets.
For example in the 2004 packets (errors) some fields can be omitted, the boiler will react the same.
It could be an indication about a protocol update with backward compatibility.
Your 0xec error is 5 bytes long, mine is 4, but 2 are enough...

maybe this 37fe2034 0a rather could be some kind of a (desperate!) call to somebody with a 7x id
Yeah it might be possible, I thought about it but I can't be sure as long I have a genuine thermostat on my bus (and you know that I'm using it rather than a didicated ebus module).

Above all, at this stage the enumeration of packets and serial number publications have not yet begun.
Each device is not yet supposed to know each other.

Also don't forget that you can change the address of your ebusd service with the parameter -a, --address=ADDR.
So 70 will be ok.

It might be possible to simulate the full handshake, but not with command line tool, the timings will not be ok.
There should be around 100ms between packets, so the full sequence sent with a shell script will take too long .
The time required to complete the sequence would exceed the boiler reboot window (~14s).

The solution could be to send the full hex sequence at once.

Like exposed on https://github.com/john30/ebusd/wiki/eBUS-background, the byte sequences are terminated with a CRC.
There is a test program in the ebusd sources that you can compile:

$ cd ~/ebusd/src/lib/ebus/test
$ make test_symbol
$./test_symbol 31fe202003022001      #<= wake up DHW
calculated CRC: 0x76
$./test_symbol 31fe2004020c02        #<= 114 error
calculated CRC: 0x87

$./test_symbol 31fe202003022000      #<= shutdown DHW
calculated CRC: 0x77
$./test_symbol 31fe2004020c00        #<= 114 error suppress
calculated CRC: 0x85

Then these sequences with their CRC appended can be sent to the esp8266 module as a new client via netcat.
The firmware of the esp should handle multiple clients that want to send or receive data to/from ebus
(my version does it, like the original one if I remember correctly).
Here are some examples:

$ echo -n -e "\x31\xfe\x20\x20\x03\x02\x20\x01\x76" | ncat 192.168.1.65 3333    <= wake up DHW
$ echo -n -e "\x31\xfe\x20\x04\x02\x0c\x02\x87" | ncat 192.168.1.65 3333        <= 114 error

$ echo -n -e "\x31\xfe\x20\x20\x03\x02\x20\x00\x77" | ncat 192.168.1.65 3333    <= shutdown DHW
$ echo -n -e "\x31\xfe\x20\x04\x02\x0c\x00\x85" | ncat 192.168.1.65 3333        <= 114 error suppress

$ echo '31fe20200302200176' | xxd -r -p | ncat 192.168.1.65 3333    <= wake up DHW
$ echo '31fe20200302200077' | xxd -r -p | ncat 192.168.1.65 3333    <= shutdown DHW

It "works" but I have a few misfires and I have to send the orders several times :/
I don't understand this because according to my code, data from clients have priority over data sent to them.
Maybe it's due to my hardware hack, once again.

Here is a Wireshark filter to check that the data is fired on the network:

ip.dst eq 192.168.1.65 and tcp.flags.push eq 1

It's a start for a Python-Fu program that does the reset/handshake itself.

from ebusd_configuration_chaffoteaux_bridgenet.

ogkita avatar ogkita commented on July 19, 2024

Hi ysard,

Thank you very much for your work. It help me with my integration.

This is my installation:

  • Ariston Nimbus pocket Net
  • MGZ2 with zone manager (pump group) with 3 zones
  • Sensys (I use it for configuration not like zone thermostat)
  • External sensor.

The problem of my installation is that Ariston not allow several thermostats for the same zone. For example I have 1 zone for each floor and in each floor I have several thermostat, one for each room. This configuration is not supported by Ariston.

Then I have installed one thermostat for each room and when one of thermostats in the same floor need heat/cold I swith on this zone with external rele. I Hope explain correctly ;-).

The problem is that the Ariston system do not know the current temperature (set point and current tempereature) for each zone. Well, with your work and others that you know (komw, wrongisthenewright, john30, danielkucera, ...) I have configured this:

1.- When eBus receive "10fe2001027118" I send:
"70 FE 20 0E 09 71 18 XX XX 00 00 FF FF 00"

2.- For each 2 minutes I send the rooms temperature:
"70 FE 20 0E 09 71 18 XX XX 00 00 FF FF 00"
"70 FE 20 20 04 71 18 XX XX"
"70 FE 20 20 04 62 71 XX XX"

3.- When eBus receive "7ffe2000027118" I send:
"70 FE 20 0F 05 71 18 XX XX 00"

All is for each zone (three zones).

This way we get 2 things:

1.- We can see in the diagnostic zone both temperatures.

2.- When I see the calculated temperatures I can see the Ariston system calculate different temperatures for each zone, I think that Ariston is using the temperatures that I send for each zone (only for heat, not for cold).

3.- I can not set zone thermoregulation to 4 (external senor + room thermostat), We only can use 3 (Only external sensor). But like I explained before, I think whit option thermoregulation in 3 Ariston is using this temperatures for calculate the output temperature.

Regarding Handshake protocol, I think it is not mandatory for a optimal installation. It would be great in other to have a total integration but I think the system will work with some integrations.

I hope the comment will help you.

Thank you very much again.

from ebusd_configuration_chaffoteaux_bridgenet.

ysard avatar ysard commented on July 19, 2024

@ogkita :

Hello, thank you for your feedback and information.

You do indeed have a more advanced configuration than the manufacturer suggests/allows.

For your comments:

  • Id 6271 is indeed reserved for heating,
    Take a look at the cooling ids (especially 7071):

      Z1 Cooling Set Temp                   7071
      Z1 cooling Temp Range                 0681
      Z1 Cooling Thermoreg Type Selection   CB79
      Z1 Cool Thermoreg Slope               7671
      Z1 Cool Thermoreg Offset              7571
      Z1 Cooling Max Water Temp             7171
      Z1 Cooling Min Water Temp             7371
    
  • I see that you're using the thermoregulation type 3 (external sensor only).
    This is normal, since mode 4 (thermostat + external sensor) requires a full room thermostat handshake, which we don't have.

    Personally, I use the boiler in mode 0 (Fixed Temp), and the water law is calculated in HomeAssistant.

    I do this because mode 3 doesn't take into account the current zone temperature.
    I'm therefore surprised that your id 7118 has any influence on the temperature calculation!
    I'm guessing that the reason you're doing this is that when you send a temperature value
    that's very far from the actual temperature,
    you've noticed a significant variation in the computed temperature?

    I may have missed something, as it's hard to get back into a project several weeks/months later.

from ebusd_configuration_chaffoteaux_bridgenet.

wrongisthenewright avatar wrongisthenewright commented on July 19, 2024

2.- When I see the calculated temperatures I can see the Ariston system calculate different temperatures for each zone, I think that Ariston is using the temperatures that I send for each zone (only for heat, not for cold).

I'll try to dump the initial handsake in the next weeks (I'm on vacation...) but on this point I can shed some lights (at least I think).
Every zone calculate the setpoint differently because every sensys thermostat has its own temp sensor so the setpoint is calculated differently. The zone manager then picks the highest temperature from all the zone (in heating mode), the one with the lower ambient temp.

In this way the system can heat the colder zone, the others simply will shut off when the desired temp is reached.

from ebusd_configuration_chaffoteaux_bridgenet.

wrongisthenewright avatar wrongisthenewright commented on July 19, 2024

I've discovered that in my system (Ariston Genus One+Nimbus 70m heatpump+hybrid manager+sensys+wifi gateway) the command I need to send to cause a bus reset is

w,broadcast,ebus_reset,Reset ebus,,fe,2031,ffffffffffffffffffffffff23fe00,ebus_reset,m,BCD,,,,,,,,,,,,,,,,,,,,,,

23 I think it's a "special" bus address, I have several on my system not "explicitly" associated with devices, this is the result of a ebusctl info command:

address 00: master #1
address 01: master #6
address 03: master #11
address 09: slave
address 0f: master #21
address 13: master #12  - Hybrid Energymanager
address 18: slave #12  - Hybrid Energymanager
address 1e: slave - Heatpump (master address uknown, should be 1e-5=19)
address 23: slave
address 30: master #3
address 31: master #8, ebusd
address 35: slave #3
address 36: slave #8, ebusd
address 37: master #18 - Boiler
address 3c: slave #18 - Boiler
address 6d: slave
address 70: master #4  - Sensys
address 75: slave #4  - Sensys
address 7f: master #24  - Gateway
address 84: slave #24  - Gateway

00 from eBus standard should be the control computer address, I think it's "emulated" by some other device, like the others...

Another interesting thing is (at least I interpret it in this way) that after a bus reset that one device "impersonating" the 00 address, the "master of masters", start the discovery protocol polling on the bus with the PBSB 203a all the available addresses

...
00fe203a0149 = 30
00fe203a014a = 29
00fe203a014b = 30
00fe203a014c = 30
00fe203a014d = 30
00fe203a014e = 30
00fe203a014f = 30
00fe203a0150 = 30
00fe203a01fe = 39
...

and only 2 instances of 203a PBSB queries from 70 master address (sensys)

70fe203a011e = 31
70fe203a0123 = 29

in my system only 6 devices reply to this polling with the 203b PBSB, communicating in the last hex byte their own slave address:

70 fe 203b 01 75 = 3084  --> Sensys Thermostat
03 fe 203b 01 1e = 3082  --> Heatpump slave but 03 as master address
03 fe 203b 01 23 = 3091  --> 23 special address with 03 as master
13 fe 203b 01 18 = 3030  --> Hybrid EnergyManager
37 fe 203b 01 3c = 3105  --> Boiler
7f fe 203b 01 84 = 3089  --> Wifi GW
 
 

from ebusd_configuration_chaffoteaux_bridgenet.

ogkita avatar ogkita commented on July 19, 2024

Hi @ysard,

Attached is the txt with temperatures calculated:
temp_calculated.txt

On the other hand, my Ariston installation does not support thermoregulation for cooling:
image

Others params that I am getting are:

 Slope for heating
 Requested status (on/off)
 Energy consumption
 Operation mode
 Compressor frequency

Here is my csv file:
ariston.csv

I think your idea of using fixed mode and calculating the temperature in home assistant is very good. The problem is the formula, I was going through your link where you talk about it, but it didn't seem to solve everything.

What formula do you use?

I'm also investigating how to send the minimum and maximum temperatures for each zone, but I haven't found the right parameters. If you look at my csv you will see that I am investigating with e.g. 6072, 6073, 6074, ... but so far I have not been successful, I am still working on it.

In short, it seems that the option I took is working although it is not quite "good". Your idea seems to me also very good and I will take it into account if I manage to read and write the max/min temperatures of each zone.

Finally, it seems that my system has no pressure probe... something that seems incredible to me, but I am not able to see the water pressure in the circuit, when I say that it has no probe I mean that in any parameter of any diagnostic menu it appears... I think it is a very big fault of the device.

We are still working on it!
, Oscar

from ebusd_configuration_chaffoteaux_bridgenet.

ogkita avatar ogkita commented on July 19, 2024

Hi @wrongisthenewright ,

Yes, I think so, you can have different temperatures for each zone, but by only having one source of heat/cold, you can't send water at different temperatures to different zones..... That's my "basic" theory, but I think the system has a "mixing" valve that may be mixing return water with supply water to send water at different temperatures to different zones... I'm not sure about this actually.

from ebusd_configuration_chaffoteaux_bridgenet.

wrongisthenewright avatar wrongisthenewright commented on July 19, 2024

Hi @wrongisthenewright ,

Yes, I think so, you can have different temperatures for each zone, but by only having one source of heat/cold, you can't send water at different temperatures to different zones..... That's my "basic" theory, but I think the system has a "mixing" valve that may be mixing return water with supply water to send water at different temperatures to different zones... I'm not sure about this actually.

Hi,
please take a lokk at this Ariston Professional Manual (it's in italian as I was not able to find the english version, but google translate can help):

https://agenziavirgilio.it/wp-content/uploads/2021/06/Sistemi_Ibridi_Net_-_Professional_Manual_LE211AR_03_2021.pdf

It's related to hybrid systems like mine (HP+Boiler) but the setpoint logics and algorithms are still valid, on a HP only configuration simply ingore the boiler settings and the logic will be simpler, only the HP will be used.

The more important parts are on Chapter 15 (functioning logics). In a multiple zone env. you can offset the setpoint by a different value for each zone to compensate different insulation / solar exposure of the various zones.

P.S.:
This seems the version for a Split system like yours, but still the italian version...
https://agenziavirgilio.it/wp-content/uploads/2021/06/Nimbus_S_Net__Professional_Manual_LE132AR_03_2021.pdf

from ebusd_configuration_chaffoteaux_bridgenet.

wrongisthenewright avatar wrongisthenewright commented on July 19, 2024

Hi @wrongisthenewright ,

Yes, I think so, you can have different temperatures for each zone, but by only having one source of heat/cold, you can't send water at different temperatures to different zones..... That's my "basic" theory, but I think the system has a "mixing" valve that may be mixing return water with supply water to send water at different temperatures to different zones... I'm not sure about this actually.

Note that there's no "mixing" of cool/heat water. The system in heating will heat the water at the max setpoint calculated for the various zones, when a zone reach the desired room temp then the module will close the valve of that zone, the valve will be re-opened when the room temp fall below Tsetpoint -0.3°C. In cooling the reverse is applied.

from ebusd_configuration_chaffoteaux_bridgenet.

ysard avatar ysard commented on July 19, 2024

@ogkita :

What formula do you use?

The paragraph defining this formula is here:

https://pro-domo.ddns.net/blog/domotiser-son-chauffage-avec-home-assistant-automatisation-partie-3.html#implementation-des-differentes-regulations

As I said, I use the temperature from the weather service, but you can use the temperature from your external sensor instead.

In other words:

{% set theoric_target_temp = z1_slope * (z1_room_temp_setpoint - ext_temp) + z1_slope * z1_room_temp_influence  * (z1_room_temp_setpoint - z1_room_temp) + 30 + z1_offset %}

With a low and a high limit (I use a low limit of 35°C but I should have used the minimum temperature specified in the boiler instead, as I'm using the boiler parameter for the high limit: z1_water_max_temp).

Choosing the “Outdoor and room temp” option from my drop-down menu allows me to apply the same water law as if I had the official room thermostat.

Of course, the result of the temperature calculation is applied to ebusd_boiler_z1_fixed_temp via the automation set_z1_fixed_temp.
The boiler control mode must be set to “Fixed”.

I'm also investigating how to send the minimum and maximum temperatures for each zone

Indeed 6071,6072,6073,6074 and 6171,6172,6173,6174 are the registers I'm thinking about.

Also note that when you modify a parameter on the boiler, it should quickly broadcast it on the ebus network.
Useful to identify registers.

Finally, it seems that my system has no pressure probe

I haven't found (or looked for) this sensor; you're right it should exist as the boiler is capable of emitting a low pressure error.
However, this value is not mentioned in my troubleshooting menu manual.

If you know the value to look for, you could use my bruteforce script in the tools/ folder.

from ebusd_configuration_chaffoteaux_bridgenet.

ogkita avatar ogkita commented on July 19, 2024

Hi @ysard and @wrongisthenewright

Thank you very much for your comments and documentation.

We keep pushing!

I will continue with the max/min temperatures for each zone and I will tell you the results.

@ysard, did you see the temperature variations in heat mode? They are not very high, but it is clear that it uses the data for the calculation, isn't it? Otherwise they would always be the same.

, Oscar

from ebusd_configuration_chaffoteaux_bridgenet.

wrongisthenewright avatar wrongisthenewright commented on July 19, 2024

Hi @ysard,
Here is my csv file: ariston.csv

Since you have a Nimbus Heatpump have you tried my complete CSV? It should give you back many parameters, I imagine at least all the energymaager/heatpump related codes should be decoded.

I'm also investigating how to send the minimum and maximum temperatures for each zone, but I haven't found the right parameters. If you look at my csv you will see that I am investigating with e.g. 6072, 6073, 6074, ... but so far I have not been successful, I am still working on it.

These are the codes you're looking for:

6071 Heating max temp setting for Z1
6072 Heating max temp setting for Z2
6073 Heating max temp setting for Z3

6171 Heating min temp setting for Z1
6172 Heating min temp setting for Z2
6173 Heating min temp setting for Z3

7171 Cooling max temp setting for Z1
7172 Cooling max temp setting for Z2
7173 Cooling max temp setting for Z3

7371 Cooling min temp setting for Z1
7372 Cooling min temp setting for Z2
7373 Cooling min temp setting for Z3

all present in my CSV, as stated before try it if you already haven't

In short, it seems that the option I took is working although it is not quite "good". Your idea seems to me also very good and I will take it into account if I manage to read and write the max/min temperatures of each zone.

My CSV has corresponding lines for writing some of these parameters (only for Z1 as I have a single zone, but is simple to extend to other zones...

Finally, it seems that my system has no pressure probe... something that seems incredible to me, but I am not able to see the water pressure in the circuit, when I say that it has no probe I mean that in any parameter of any diagnostic menu it appears... I think it is a very big fault of the device.

Try to read the 7547 code, in my case is the boiler pressure sensor, but I suspect it can be valid also for a heatpump only plant.

from ebusd_configuration_chaffoteaux_bridgenet.

ysard avatar ysard commented on July 19, 2024

@ogkita

did you see the temperature variations in heat mode? They are not very high, but it is clear that it uses the data for the calculation, isn't it? Otherwise they would always be the same.

Yeah it would be the same but you need to make sure that both parameters (external temp + current zone temp) play a role in the calculation. This is not so easy to see at a glance.

Here is a capture from my data ("External temp" is my room temp as I said before):

screenshot_HA_entities

  • You see that since jan. 10, there is a cutoff for the max temp (50°C)
  • The boiler is shutdown during the night until the beginning of the evening => the elevation of the computed temp is a desperate way from the formula to increase the room temp with an external temp that is falling.
  • Most of the time, few hours before the shutdown at around 1 am. you should see a computed temp decrease (to ~36°C), it's because the room temp specified is reached. So yes here again, the room temp is used.
  • At the end of jan. 13, there is a brutal outdoor temp elevation that is immediately translated into a drop of the computed temp.
    So yes the outdoor temps is used.

Since I use the meteo service, I could use the previsions instead of the current temp in order to anticipate the changes.
But it's for another time...

@wrongisthenewright
7547 id: Hum, I have doubts about it on my side. It returns 3.0; but the pressure gauge on the boiler shows 2.8bars.
I do not expect such discrepancy here. And if It's really 3 bars I will not add water since It's a maximum allowed.
I'm a bit lazy about purging the circuit afterwards :D I will try to test during the next maintenance.

from ebusd_configuration_chaffoteaux_bridgenet.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.