Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Ariston BUS BridgeNet - komunikacja z kotłem

04 Sty 2018 22:44 1533 13
  • Poziom 11  
    Witam

    Poszukuję informacji na temat protokołu używanego w komunikacji z kotłami firmy Ariston. Producent nazywa go BUS BridgeNet ale nie udostępnia żadnych dalszych informacji. Chciałbym odczytać parametry pracy (temperaturę wody itp.). W sieci nie ma też dużo informacji na ten temat, jedynie że może bazować na Ebus. Ebus jest ogólno dostępny standardem opis. Niestety moje próby podglądu, komunikacji używając konwertera Ebus nie udały się. Może ktoś ma więcej informacji na ten temat i może sie nimi podzielić?

    Pozdrawiam
  • Poziom 2  
    Podczepiam się do tematu. Mam podobny problem. Chciałbym przejąć całkowitą kontrolę nad sterowaniem własnymi sterownikami i zabezpieczeniami przy okazji mając możliwość podczepienia pod własne aplikacje. Ariston prawie nic nie pisze o tym protokole komunikacyjnym. Jeśli nic nie znajdę to nie kupię tego kotła, a właśnie spodobał mi się tego producenta (jak nikt nic nie wie to wybiorę alternatywną firmę która ma lepiej opisane sposoby komunikowania się).
  • Poziom 2  
    I discover this:
    BUS Bridgenet have EBUS phys/link layer, but
    Code:

    <sync>
    QQ = 0x70 (termostat master)
    ZZ = 0x3C (boiler slave)
    PB = 0x20 (bridgenet command)
    SB = 0x01
      0x00 (get setpoints)
      0x01 (get params )
      0x02 (get faults)
      0x0E (return params)
      0x70 (cast time)
      0x38 (bus controls)  and more...
    N1 = 2 (master data len)
    IDL:IDH = 0x6810
      0x6810 (temperature heater out)
      0x6910 (temp return)
      0x6210 (tem hot water tank)
    <m_crc>
    <s_ack>
    N2 = 6 (slave data len)
    L:H = real temp in 0.1C
    L:H = min limit, ignored with measured
    L:H = max limit
    <s_crc>
    <m_ack>
  • Poziom 2  
    hanz0xFE napisał:
    I discover this:
    BUS Bridgenet have EBUS phys/link layer, but
    Code:

    <sync>
    QQ = 0x70 (termostat master)
    ZZ = 0x3C (boiler slave)
    PB = 0x20 (bridgenet command)
    SB = 0x01
      0x00 (get setpoints)
      0x01 (get params )
      0x02 (get faults)
      0x0E (return params)
      0x70 (cast time)
      0x38 (bus controls)  and more...
    N1 = 2 (master data len)
    IDL:IDH = 0x6810
      0x6810 (temperature heater out)
      0x6910 (temp return)
      0x6210 (tem hot water tank)
    <m_crc>
    <s_ack>
    N2 = 6 (slave data len)
    L:H = real temp in 0.1C
    L:H = min limit, ignored with measured
    L:H = max limit
    <s_crc>
    <m_ack>


    Where did you found this? It very hard to find any information about busbridge protocol, and it seems that is the one post on the internet that it seems to be working with data from Ariston heaters.
    Currently I'm working with reverse engineering of this protocol, and I found also few additional codes (to turn on/off winter mode, turn on/off comfort mode)
    I'm curious where did you found this :)
  • Poziom 3  
    Hello hanz0xFE/komw
    I also have an Ariston boiler (Genus One System) and have been working on understanding the communication when I found your posts.
    I'm still experimenting with the messages, but so far I can confirm the following codes working:

    Code:

    PBSB ID
    2010 6810 Heat Flow (out)
    2010 6910 Heat Return
    2010 6210 Hot Water Supply - For me the response to this is "06ff7f0080ff7f" so this is not connected.
    2010 6510 Hot Water Supply (alternate?) - This is giving me the actual temperature of HWS tank
    2010 c04b Boiler status (first byte of data) 01 - standby, 02 - heating, 04 - hotwater, 05 - circulating
    200f 6147 HWS temp. pre-set
    200f 6047 Heating #1 temp. pre-set
    2070      Date/time announcement

    I'm actually particularly interested in querying the boiler's system pressure, as I have a minor leakage in my system and would like to track it before it gets fixed.

    Anyone has identified a command for this yet?

    Btw I don't have any proprietary devices connected to BUS, only a FHEM ebus-ttl device which connects to a CH340 USB-TTL adaptor. I'm using ebusd for the communication.
  • Poziom 2  
    Please contact me directly, because I'm working for an ebusd deamon configuration, and I found many others working codes.


    gabor9 napisał:
    Hello hanz0xFE/komw
    I also have an Ariston boiler (Genus One System) and have been working on understanding the communication when I found your posts.
    I'm still experimenting with the messages, but so far I can confirm the following codes working:

    Code:

    PBSB ID
    2010 6810 Heat Flow (out)
    2010 6910 Heat Return
    2010 6210 Hot Water Supply - For me the response to this is "06ff7f0080ff7f" so this is not connected.
    2010 6510 Hot Water Supply (alternate?) - This is giving me the actual temperature of HWS tank
    2010 c04b Boiler status (first byte of data) 01 - standby, 02 - heating, 04 - hotwater, 05 - circulating
    200f 6147 HWS temp. pre-set
    200f 6047 Heating #1 temp. pre-set
    2070      Date/time announcement

    I'm actually particularly interested in querying the boiler's system pressure, as I have a minor leakage in my system and would like to track it before it gets fixed.

    Anyone has identified a command for this yet?

    Btw I don't have any proprietary devices connected to BUS, only a FHEM ebus-ttl device which connects to a CH340 USB-TTL adaptor. I'm using ebusd for the communication.
  • Poziom 2  
    Is good to know, that im not alone lost in ebus:)
    I spent much time with reversing this protocol and last half year this project sleeps.
    What i remebmer, and it was a reason for lay it aside, is devices handshake.
    Termostat(sensys) and boiler(genus evo) perform device scan and handshake on start or new device connected to the bus. If not, is impossible to put question to boiler - he only responds with <ack> and no data.
    Initialization of bus is started with bus reset emited from last connected device. Next are emited 16bytelen master identificators and then are asked slave adresses. Step 2 and 3 is repeated twice.
    PBSB
    2034 - bus reset
    2031 - master device identificator bcasts
    203A - request slave device
    If it do Sensys, all works, is possible to disconnect sensys and play with boiler. When i try do own HS, it dont pass. So there is some more to discover.
    I’ll reopen this case and put some more info.
    If somebody know more, do the same.
  • Poziom 3  
    I actually do not have any other devices but the boiler, still all functions seem to work (I can send and receive responses). I don't exactly know how, but after a bit of playing around I got a device with ID 3C appearing on the bus and therefore device 37 (the boiler) accepts and responds to any messages. I'll try to replicate this to learn how I got there. I only have a FHEM ebus board attached directly to the boiler's bus connector.
  • Poziom 2  
    Ok, so what you use as master address, when you communicating with boiler?
    Maybee this is what i do wrong, because im using Sensys addr (0x70/0x75)

    Note that:
    0x37 is master address (source) and 0x3C is slave address (destination) of same device (boiler in this case).
    Destination = Source + 5
  • Poziom 3  
    Alright, so I did everything from scratch. Restarted my pi that's communicating with the boiler (so ebusd as well) and the boiler itself.
    For a few minutes, I couldn't send commands, all reads were timing out. Noted that I didn't have device 3c showing up yet.

    Code:
    pi@raspberrypi:~ $ ebusctl hex 3c2001026910
    
    ERR: read timeout

    pi@raspberrypi:~ $ ebusctl info
    version: ebusd 3.3.v3.3-32-g3926e9c
    update check: revision v3.3-40-gd9d1b9a available
    signal: acquired
    symbol rate: 99
    max symbol rate: 191
    reconnects: 0
    masters: 2
    messages: 0
    conditional: 0
    poll: 0
    update: 0
    address 31: master #8, ebusd
    address 36: slave #8, ebusd
    address 37: master #18

    After a couple of minutes, device 3c appeared and I could start to issue commands.
    I didn't do anything in-between but re-execute the above "hex" and "info" commands.

    Code:
    pi@raspberrypi:~ $ ebusctl hex 3c2001026910
    
    06e6010080ff7f

    pi@raspberrypi:~ $ ebusctl info
    version: ebusd 3.3.v3.3-32-g3926e9c
    update check: revision v3.3-40-gd9d1b9a available
    signal: acquired
    symbol rate: 44
    max symbol rate: 191
    min arbitration micros: 44
    max arbitration micros: 51
    min symbol latency: 6
    max symbol latency: 7
    reconnects: 0
    masters: 2
    messages: 0
    conditional: 0
    poll: 0
    update: 0
    address 31: master #8, ebusd
    address 36: slave #8, ebusd
    address 37: master #18
    address 3c: slave #18

    Update: I realized that it might has to do something with boiler activity. If the boiler is active (heating for example) then it starts responding to messages from that point on.

    Dodano po 3 [godziny] 14 [minuty]:

    I attached a list of setting ID's I was able to read from my boiler with command 2001. I think command 2000 should return the same values with a slightly different binary representation. This should help on what values we need to focus on :wink:
    I already got the interpretation of some of these at least, please see the last column
  • Poziom 2  
    Guys, I've posted my configuration at:
    https://github.com/komw/ariston-bus-bridgenet-ebusd

    Did you faced problems with read timeout/ arbitration lost etc?
    If I'm asking boiler for values (active read by send request to boiler slave) for example in every 1 second, my thermostat (Cube S Net) are often restarting (also sending bus restart command and restarting my boiler)
  • Poziom 3  
    Thanks for the config :wink:
    I have random arbitration lost/ACK error messages every few seconds, and wrong symbol received/read timeout much less often.
    However, I also noticed that the communication occasionally turns to "read timeout"s, and then I cannot read any values. There is just no response from the boiler for a longer period of time. Interestingly, this seems to be resolved by itself if something "wakes it up", like if the heating or hot water kicks off. My suspicion is that the boiler turns to some form of sleeping mode after a while (probably after 30 minutes, according to my logs). Broadcast messages are still sent by the boiler continuously, so this is not a huge issue on my side - heating status is included in the broadcasts and that's what is most important for me.
    Still, it would be nice if we could get rid of these errors and keep communication steady. I tried to play around with latencies and timeouts, just to make sure it's not a HW issue but without any changes.
    If you get to timeouts a similar way, can you try to change something on the thermostat, push some buttons etc. to see if it restores the communication?
    I have no restarts on my boiler though.
  • Poziom 2  
    What type od ebus are you using? Ebus + wemos(esp-ebus) ? In a next few days I'll try to use ebus adapter directly connected to server via my USB-serial adapter. Maybe sending it via WIFI is the issue.
    I didn't have problems that after some time boiler doesn't response to my packages. I faced another problem, because If I send a active read messages (not broadcast messages, but sending it to heater slave) to often, my boiler and thermostat are resetting (thermostat shows logo, etc), and do all initialization, I noticed that in this case, boiler/thermostat send an bus reset message 2034)
    My thermostat constantly sending many packages over the net to boiler, It seems to be some kind of ping messages.

    Currently I'm trying to tweek how often I can ask the boiler for values without resets etc.
    I'm using Genus One + Cube S Net thermostat. For ebus I\m using a v2.0 adapter + wemos with ebus-esp firmware (I'm connecting ebusd to wemos via WIFI)



    gabor9 napisał:
    Thanks for the config :wink:
    I have random arbitration lost/ACK error messages every few seconds, and wrong symbol received/read timeout much less often.
    However, I also noticed that the communication occasionally turns to "read timeout"s, and then I cannot read any values. There is just no response from the boiler for a longer period of time. Interestingly, this seems to be resolved by itself if something "wakes it up", like if the heating or hot water kicks off. My suspicion is that the boiler turns to some form of sleeping mode after a while (probably after 30 minutes, according to my logs). Broadcast messages are still sent by the boiler continuously, so this is not a huge issue on my side - heating status is included in the broadcasts and that's what is most important for me.
    Still, it would be nice if we could get rid of these errors and keep communication steady. I tried to play around with latencies and timeouts, just to make sure it's not a HW issue but without any changes.
    If you get to timeouts a similar way, can you try to change something on the thermostat, push some buttons etc. to see if it restores the communication?
    I have no restarts on my boiler though.
  • Poziom 3  
    My setup is: Raspberry Pi 3B+ -> CH340 USB-TTL adaptor -> FHEM ebus adaptor.
    I'm also running a couple of other things on the Pi, like the "Evohome Listener/Sender" for communicating with Honeywell Evohome.
    Have you tried setting different polling priorities (r2..r9 instead of r1)?
    I thought it may make a difference if you pull the data less often.