Giter Club home page Giter Club logo

ebusd_configuration_chaffoteaux_bridgenet's Introduction

Here you will find a configuration for the ebusd demon adapted to the Chaffoteaux boilers Mira C Green and Serelia. This configuration should also be compatible with other brands of the Ariston company using the BridgeNet/eBus2 protocol (Elco, Ariston, etc.).

The messages supported are explicit read/write & those broadcast by the boiler.

The goal is to achieve complete control of the device on solutions like Home Assistant:

If you are interested in more/other details, do not hesitate to consult this series of blog articles (french) Domotiser son chauffage avec Home Assistant.

Hardware related information is at: ./hardware_reversing/.

Any help in filling in the gaps is VERY welcome.

Foreword

In an ethical world we wouldn't have to spend so much time trying to reverse this kind of proprietary protocols. If you don't think it's appropriate, if you don't have the energy to do this tedious/time-consuming/ work, or if you don't want to buy the overpriced devices sold by these companies, then you should consider to go with manufacturers who respect your right to repair/modify what you own without ruining yourself.

And you would be wise to do so.

Official documentation

Some links to understand the interest of these data and their organization.

How to install it ?

Put the .csv files into a directory, then launch ebusd with --configpath argument.

Example of command used to launch ebusd daemon:

ebusd -d 192.168.1.65:3333 --latency=200000 --configpath=/path_to_your_config_files/ --enablehex --receivetimeout=100 --sendretries=2

Logs will be generated into /var/log/ebusd.log.

Monitor unknown messages:

watch -n 3 -d ./build/src/tools/ebusctl grab result

How to install Home Assistant integration ?

See the Readme here: ./home_assistant_integration/.

How to use it ?

Here is a quick usage example. Keep in mind that read queries return cached values by default (see -m setting of ebusctl). Raw hex queries are not concerned by caching issues.

Turn on the heating (winter mode/ability to heat water in heaters if you prefer):

$ ebusctl write -c boiler heating_status on
# or
$ ebusctl hex 3c 2020 03 0120 01

Activate the heating of the water (command sent by thermostat for example):

$ ebusctl write -c boiler z1_heating_activation on
# or
$ ebusctl hex 3c 2020 03 1919 01

In SRA mode with an external temp probe, read the computed temp for the first 3 zones:

$ ebusctl read -c boiler hot_water_target_temp_1
43.4;58.0;58.0
# or
$ ebusctl hex 3c 2000 02 6197

Now, increase the offset of temp starting the computed temp:

$ ebusctl write -c boiler z1_thermoreg_offset 6

Check the modification:

$ ebusctl read -c boiler hot_water_target_temp_1
49.4;58.0;58.0

Protocol description

Primary & secondary command bytes (PBSB)

PBSB Signification Uncertain
2000 cast features/read values
2001 cast features/read values with additional data (allowed range of values?) x
2002 error log interrogation
2004 error detection/disappearance
200f
2010 cast features/cast data read-only values/set values*
2020 cast manual changes/dump registers/set values*
2031 master device identificator broadcasts
2034 bus reset
2036 handshake x
2038
203a request slave device x
203b cast slave addr
2050 time related data x
2051 cast comfort timer programs**
2070 broadcast date

*: 2010 command may be for values that should not be modified by a device and that should be accepted by another. i.e calculated/measured/status values (current temp measured, boiler status, settings change counter, computed target temp, heat request status). 2020 commands may be for values that can be modified on the device and accepted by another.

**: Timer programs protocol is described below

Command IDs

Note: Naming is subject to change. Note: In case of multiple values, there is 1 value per zone (z1, z2, etc.).

Observed commands (max 7 zones) Uncertain observed values Tech menu entry
Heat related commands
heat request status 0191,0291,0391,0491,0591,0691,0791 434
heat activation 1919,1a19,1b19,1c19,1d19,1e19,1f19
heat temp range 0081,0082,0083,0084,0085,0086,0087 420
heat water computed target temp 6197,6297,6397,6497,6597,6697,6797 830
heat water max temp 6071,6072,6073,6074,6075,6076,6077 425
heat water min temp 6171,6172,6173,6174,6175,6176,6177 426
heat day temp 6271,6272,6273,6274,6275,6276,6277
heat night temp 6371,6372,6373,6374,6375,6376,6377
heat offset 6471,6472,6473,6474,6475,6476,6477 423
heat fixed temp 6571,6572,6573,6574,6575,6576,6577 402
? 6671,6672,6673,6674,6675,6676,6677
? 6771,6772,6773,6774,6775,6776,6777
? 6971,6972,6973,6974,6975,6976,6977
heat slope 6a71,6a72,6a73,6a74,6a75,6a76,6a77 422
? 6b71,6b72,6b73,6b74,6b75,6b76,6b77
? 6c71,6c72,6c73,6c74,6c75,6c76,6c77
boiler status c04b 0x65,0x06,0x12 (pump circ??) unknown
heat thermoregulation selection c079,c07a,c07b,c07c,c07d,c07e,c07f 421
heat room temp influence c279,c27a,c27b,c27c,c27d,c27e,c27f 424
heat request mode c679,c67a,c67b,c67c,c67d,c67e,c67f
? c979,c97a,c97b,c97c,c97d,c97e,c97f
heat water temp out 6810 831
heat water temp in 6910 832
heat boost time (s) 602b 244
fan speed (x100 rpm) 4013 822
Domestic Hot Water (DHW) related commands
DHW comfort mode c028 250
DHW water target temp 6126 200
DHW water real temp 6147
DHW comfort zones d746 250
? da46
? dc46
? de46
DHW cleansing function ?? 0b20
DHW Celectic status 0f20 256
Face panel related commands
heating status 0120
DHW status 0220
SRA status 0520 224
Misc
settings change counter d140
boiler life time (minutes)* 50d9
ignition cycles 42d8 813
external temp 7647 835
external temp offset 7426 249
room temp 7118,7218,7318,7418,7518,7618,7718
heating in progress 0c19
burner heat life time 4bd1 810
Unknown
6047
6d26
6f10
7526
c528
6226,6426
6bc0,2b70
6997,6a97,6b97,6c97,6d97,6e97,6f97
7997,7a97,7b97,7c97,7d97,7e97,7f97
0119,0219,0319,0419,0519,0619,0719
0990,0a90,0b90,0c90,0d90,0e90,0f90

*: Yes, the boiler life time value is accessible in read AND write modes...

Protocol of Timer programs

  • packets are emitted every minute
  • there are 14 different packets
  • the rotation of packets occurs every 14 minutes
  • the usable field is alternated every minute
  • there are 2 different fields per program
  • each usable field is composed of 24 nibbles/quartet, so 12 bytes, it covers 12 hours with a precision of 30 min

Packets dump (packets are ordered by reception time):

QQZZPBSB length ID Default program Prog 1 Prog 2 Prog3
37fe2051 0e 0007 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1007 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0107 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1107 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0207 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1207 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0307 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1307 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0407 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1407 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0507 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1507 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
37fe2051 0e 0607 000000000000004055150000 000000000000555555555555 000000000000555500000000 000000000000555500000000
37fe2051 0e 1607 000000000000000000000000 555555555555555555550000 555500000055555555550000 000000005555555555550000
Prog 1
000000000000555555555555    => Heating enabled from 6h to 12h
555555555555555555550000    => Heating enabled from 12h to 22h
Prog 2
000000000000555500000000    => Heating enabled from 6h to 8h
555500000055555555550000    => Heating enabled from 12h to 14h, then from 17h to 22h
Prog 3
000000000000555500000000    => Heating enabled from 6h to 8h
000000005555555555550000    => Heating enabled from 16h to 22h
Default prog
000000000000004055150000    => ???
000000000000000000000000    => no heating

Protocol for the errors

  • Appearance/disappearance packets always go through 3 repetitions.

  • The order of appearance plays no role since they can be deleted in any order. However, an error masks the previous one on the display.

  • Unknown errors (not supported by the boiler) are displayed as ---, and cannot (for now?) be removed unless a bus reset command is sent. However, they do not prevent further testing of other errors.

  • Some errors are silent because they are not displayed. For example, disconnecting the external temperature sensor always triggers an error (0xec). On the other hand, disconnecting it when the control mode is 3 or 4 (external sensor required) will generate an additional error 0x0c, code 114, which is displayed this time.

  • The resolution command is made of the error code, followed by a default byte.

  • The minimal trigger command is made of the error code, followed by the default byte + a flag value.

  • You can generate/replay errors by broadcasting them, not just by touching the hardware (which is very useful for reversing). In this way, the following command will generate a 411 error (z1 missing ambient probe) on the boiler display :

    ~/ebusd/build/src/tools/ebusctl hex fe20040469030061

However, to remove it, you need to use its resolution command :

~/ebusd/build/src/tools/ebusctl hex fe200403690100

Overall packet structure:

Any packet error consists of:

QQ,ZZ,PBSB,SS,XX,YY,00,ZZ
  • QQ: src address
  • ZZ: dest address
  • PBSB: command bytes, always 2004 here
  • SS: packet length in bytes
  • XX: error code (which we want to map with the code displayed on the boiler)
  • YY: zone flags (see below)
  • 00: spacer ?
  • ZZ: specific error codes sent by the boiler but not mandatory to define an error => redundant data ?

Each bit in YY byte has a signification. The LSB seems to be always set when a zone is concerned.

Here is a table with all the zone flags deducted from packet sniffing operations :

zone flags dec value bin value
zone_enable 1 0b00000001
z1 2 0b00000010
z2 4 0b00000100
z3 8 0b00001000
z4 16 0b00010000
z5 32 0b00100000
z6 64 0b01000000
z7 non-functional? ?

Examples

The XX and YY bytes, for a missing ambient probe on z1 (error 411) and z2 (error 412) will be :

XX: 0x69                                       <= code for "missing ambient probe" error
YY: zone_enable + z1 + z2 = 1 + 2 + 4 = 0x07

Thus, the minimal trigger command will be :

fe2004026907

The resolution command is the YY byte without the flags, but it's still an error related to some zones, so the zone_enable flag must be set :

fe2004026901

In fact, other bytes are present after YY such as ZZ sequence; but they are not mandatory to trigger and resolute errors.

Packet sniffing

Steps to reverse the protocol:

  • Disconnect ambient probe from eBus if there is one ;
  • Set the thermoregulation type (command ids c079,c07a,c07b,c07c,c07d,c07e) to a mode that require it (4) for the various zones (z1 to z6) ;
  • Wait for packets in ebusd logs ;
  • Switch the thermoregulation type to 0 or 1 for a zone and wait for the resolution packet
# Trigger missing ambient probe z1 (411) by switching c079 to mode 4
~/ebusd/build/src/tools/ebusctl hex fe202003c07904
00:44:57.863     37fe200404 69030061
00:44:57.985     37fe200404 69030061
00:45:27.857     37fe200404 69030061
# Resolution by switching to mode 0
~/ebusd/build/src/tools/ebusctl hex fe202003c07900
00:49:15.420     37fe200403 690100
00:49:17.620     37fe200403 690100
00:49:27.642     37fe200403 690100
# Trigger missing ambient probe z2 (412) by switching c07a to mode 4
~/ebusd/build/src/tools/ebusctl hex fe202003c07a04
00:55:03.297     37fe200404 69050062
00:55:07.301     37fe200404 69050062
00:55:27.314     37fe200404 69050062
# Resolution by switching to mode 1
~/ebusd/build/src/tools/ebusctl hex fe202003c07a01
00:55:56.450     37fe200403 690100
00:55:57.279     37fe200403 690100
00:57:27.213     37fe200403 690100
# Trigger missing ambient probe z3 (413) by switching c07b to mode 4
~/ebusd/build/src/tools/ebusctl hex fe202003c07b04
0:58:44.920      37fe200404 69090063
0:58:47.124      37fe200404 69090063
0:59:27.108      37fe200404 69090063
# Resolution by switching to mode 1
~/ebusd/build/src/tools/ebusctl hex fe202003c07b01
01:00:28.030     37fe200403 690100
01:00:37.280     37fe200403 690100
01:01:27.235     37fe200403 690100

Cumulated errors & flags discovery

Trigger missing ambient probe errors for z4 + z5 + z6 + z3 + z2 + z1 via the previously showed commands.

QQZZPBSPSS XX YY 00 ZZ Action YY flag formula
37fe200404 69 11 00 64 +z4 0x11-0x01 = 16
37fe200405 69 31 00 6465 +z5 0x31-0x11 = 32
37fe200406 69 71 00 646566 +z6 0x71-0x31 = 64
37fe200407 69 79 00 63646566 +z3 0x79-0x71 = 8
37fe200408 69 7d 00 6263646566 +z2 0x7d-0x79 = 4
37fe200409 69 7f 00 616263646566 +z1 0x7f-0x7d = 2
37fe200408 69 3f 00 6162636465 -z6
37fe200407 69 1f 00 61626364 -z5
37fe200406 69 0f 00 616263 -z4
37fe200405 69 07 00 6162 -z3
37fe200404 69 03 00 61 -z2
37fe200403 69 01 00 -z1

Discovering error codes

See: Bruteforce the errors to discover their corresponding codes.

Home Assistant integration

See the Readme here: ./home_assistant_integration/.

Full error codes for Mira C Green

YY Displayed code Documented (x if yes) Signification
00 101 x Surchauffe du circuit primaire
01 102 Anomalie capteur de pression (court-circuité ou pas de signal)
02 1P1 x Anomalie débit chauffage
03 1P2 x Anomalie débit chauffage
04 1P3 x Anomalie débit chauffage
05 104 x Anomalie débit chauffage
06 107 x Anomalie débit chauffage
07 1P4 Pression insuffisante, remplissage demandé
08 1P4 Pression insuffisante, remplissage demandé
09 109 Pression excessive >= 3bars
0a 110 x Défaut sonde sortie échangeur princ.
0b 112 x Défaut sonde entrée échangeur princ
0c 114 x Anomalie sonde extérieure
0d 116 x Thermostat plancher ouvert
0e 118 x Anomalie sonde circuit primaire
0f 103 x Anomalie débit chauffage
10 105 x Anomalie débit chauffage
11 106 x Anomalie débit chauffage
12 108 x Remplissage circuit chauffage demandé
13 111
14 1P5
15 1P6
16 1P7
17 1P8
18 201 x Anomalie sonde sanitaire - URBIA/ SERELIA GREEN
19 309 Dysfonctionnement du bloc Gaz
1a 203 x Anomalie sonde ballon - URBIA/ SERELIA GREEN
1b 308 Erreur de configuration atmosphérique
1c 205 x Anomalie sonde entrée sanitaire (solaire)
1e 2P2 Anti bactérie non complété (Urbia Green Evo Mod)
1f 209 x Surchauffe ballon - URBIA/ SERELIA GREEN
20 301 x Anomalie afficheur EEPROM
21 303 x Anomalie carte principale
22 304 x Trop de reset effectués (> 5 pour < 15min)
24 306 x Anomalie carte principale
26 120
27 121
28 122
29 123
2a 311
2b 312
2d 501 x Absence de flamme
2e 502 x Détect. flamme vanne gaz fermée
2f 504 x Anomalie ionisation brûleur en fonct.
30 5P1 x Echec première tentative allumage
31 5P2 x Echec seconde tentative allumage
32 5P3 x Décollement de flamme
33 5P4 Anomalie ionisation brûleur en fonct.
34 601 Anomalie débordement fumée (modèle CF)
35 602 Contact de la sécurité VMC (modèle VMC)
36 604 Vitesse de l'extracteur insuffisante/Anomalie tachymètre
38 607 Contact pressostat fermé avec extracteur non alimenté
39 421
3b 610 x Surchauffe échangeur primaire ; thermofusible ouvert
3c 612 x Anomalie sur ventilateur ; vitesse de ventilation faible pas de signal du tachymètre au démarrage
3d 6P1 Pas de fermeture contact du pressostat après 20s alimentation extracteur
3e 6P2 Défaut du pressostat lors d'un fonctionnement de l'extracteur
41 422
42 510
47 511
49 3P9 x Prévoir entretien. Contacter SAV
4b 620
4c 621
69 410 x* Sonde ambiance zone (*) non dispo.
69 411 x Sonde ambiance zone z1 non dispo.
69 412 x Sonde ambiance zone z2 non dispo.
69 413 x Sonde ambiance zone z3 non dispo.
69 414 Sonde ambiance zone z4 non dispo.
69 415 Sonde ambiance zone z5 non dispo.
69 416 Sonde ambiance zone z6 non dispo.
ec --- Sonde extérieure débranchée

*: Zone error : variations for each zone are not displayed

Missing codes for Mira C Green (not supported?) : '302', '305', '307'

Tools

Bruteforce the errors to discover their corresponding codes

Just use the interactive script here. It can be adapted with the displayed expected codes from the boiler documentation. Feel free to modify the settings of the script (i.e. the variables EBUSCTL_BIN_PATH, LOG_FILE, EXPECTED_ERRORS).

Every boiler owner should run this program to obtain the error codes for your equipment. These are quite specific, and this procedure remains necessary until a database is built up.

  • Installation:

    $ pip install --user (--break-system-packages) argparse colorama

    Use --break-system-packages if you know what you are doing and not working inside a virtual env.

  • Usage:

$ ./bruteforce_errors.py -h
usage: bruteforce_errors.py [-h] {find_errors,analysis} ...

options:
-h, --help              show this help message and exit

subcommands:
{find_errors,analysis}
    find_errors         Broadcast errors & waits for the user to enter the
                        code displayed on the boiler. Results are stored in
                        the log file defined in LOG_FILE. User can skip the
                        current code or quit at any time. Each error code is
                        reset before the next test. If the reset is not
                        effective, a bus reset can be triggered.
    analysis            Display missing & extra codes vs the expected ones
                        defined in EXPECTED_ERRORS ; Output mapped errors for
                        ebusd config file : _templates.csv.
$ ./bruteforce_errors.py find_errors -h
usage: bruteforce_errors.py find_errors [-h] [-s START] [-e END]

options:
  -h, --help            show this help message and exit
  -s START, --start START
                        Start value for code search (0 <= val <= 255) (default: 0)
  -e END, --end END     End value for code search (0 <= val <= 255) (default: 128)

For example, to analyze the results of a boiler interrogation:

$ ./bruteforce_errors.py analysis
Missing codes:
 ['302', '305', '307', '411', '412', '413']
Excess codes:
 ['---', '102', '109', '111', '120', '121', ...]
CSV template string:
 0=101;1=102;2=1P1;3=1P2;4=1P3;5=104;6=107;7=1P4;8=1P4;...

Missing codes, are expected codes from your user manual but not found/functional ; excess codes are codes that are not in the user manual but are supported by the hardware.

The CSV template string can be used as it is in the ebusd config file (_templates.csv).

Finding registers

Use the interactive script here. Take the time to read the comments and adapt the script to your needs!

If you're looking for a register that manages an option you can read/modify on your boiler control panel, then this script is for you.

Like Cheat Engine, by successive iterations and pruning, you'll be able to identify the register.

The script is mainly made to search for registers like the very important 1919, which is used to switch the boiler ON/OFF from a thermostat for the Mira C Green boiler.

This register seems to be sent only by an eBus thermostat and it stays at 0 without it. The boiler doesn't broadcast its status.

People without "smart" thermostat (i.e. people that only have a thermostat with dry contact connected to the TA1 pins of the boiler's motherboard) can't guess the register without such a bruteforce script.

General process:

  • With some "read" iterations you will find registers that have changed (ex: Those that have a value of 0 when the boiler is off, and that have a value of 1 when it's on). The script can be modified to adopt another behaviour.

  • Then, "write" tests can be started. Multiple registers are tested until the boiler responds. The interactive script will help you to find the unique triggering register.

Installation:

$ pip install --user (--break-system-packages) colorama

Use --break-system-packages if you know what you are doing and not working inside a virtual env.

Handshake procedure

TODO: help needed; See Issue #3.

Help request

  • Handshake study of new device on the bus in order to emulate it with a custom one.
  • Packet dissections for missing ids. For example:
37fe2020 0c c079 01 c07a 01 c07b 01 c07c 01
            z1 heat thermoregulation selection
37fe2020 0c c07d 01 c07e 01 c07f 01 c279 0a
            ^z5     ^z6     ^z7     ^z1 heat room temp influence
37fe2020 0c c27a 0a c27b 0a c27c 0a c27d 0a
            ^z2     ^z3     ^z4     ^z5 heat room temp influence
37fe2020 0c c27e 0a c27f 0a c679 03 c67a 03
            ^z6     ^z7     ^z1 ??  ^z2 ??
37fe2020 0c c67b 03 c67c 03 c67d 03 c67e 03
            ^z3     ^z4     ^z5 ??  ^z6 ??
37fe2020 0c c67f 03 c979 06 c97a 06 c97b 06
            ^z7     ^z1     ^z2 ??  ^z3 ??
37fe2020 0c c97c 06 c97d 06 c97e 06 c97f 06
            ^z4     ^z5     ^z6 ??  ^z7 ??

Other repositories & inspirations

ebusd_configuration_chaffoteaux_bridgenet's People

Contributors

ysard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ebusd_configuration_chaffoteaux_bridgenet's Issues

Customizing Discovered Items in HA

Hi,
you state in the README that with autodiscovery you cannot impose limit on discovered entities, It's not really correct.
I was able to impose limits and steps in Ebusd Mqtt discovred items with the customize option in configuration.yaml in HA

customize:
    number.ebusd_energymgr_z1_heat_offset:
      name: Z1 Heat Offset
      min: -7
      max: 7
      step: 1
      mode: box

You need obviously to do it for every single input entity but it's a minor problem,since I've noted that a single error in inseting data in HA can result in handling error of the command by ebusd/remote controller/energy manager.

Hope it helps

Handshake protocol - Help needed

How to help

  • Force a bus reset with the following command:

    ~/ebusd/build/src/tools/ebusctl hex fe203400

  • The boiler restarts, and the packets concerned have the following commands: 2031, 203a, 2036.

  • To listen to the packets coming from the boiler, don't do anything special, just read the logs generated.

  • To listen to packets coming from the thermostat or any other device connected to the bus,
    replace the TX wire with the RX wire from your adapter/mcu (leave the TX wire disconnected, as it's useless in this case).
    => in other words: put the RX line of the adapter/mcu on the RX line of the boiler.

  • Specify the type of equipment you have and, if possible, the exact product reference...

Knowledge summary

Addresses src/dest (or emitter/receiver) of devices on the bus:

ebusd: 31/36
boiler: 37/3c
thermostat z1: 70/75
thermostat z2: f0/f5
thermostat z3: 01/06

Boot time:

boiler: 13.5s - 13.57s; 12.7ms/packet
thermostat: 16.2s - 16.4s; 11.8ms/packet

Handshake sequence is divided into the following parts:

  • start sequence: command 2031; hardware identification
  • first sequence of addresses cast: command 203a
  • special packet: command 2036
  • second sequence of addresses cast: command 203a; equivalent to the first one
  • special packet: command 2036

Addr not found in boiler boot sequence but present for thermostat:

[
'04', '05', '06', '08', '0c',
'14', '15', '16', '18', '1c',
'24',
      '35', '36', '38', '3c',
'44'
]

=> some logic here...

Special packets (boot from offline and reboot):

In the following:

    - chaffoteaux thermostat: Honeywell EasyControl 3318604
    - chaffoteaux boiler: Mira C Green
    - ariston boiler1: Ariston Genus Premium Evo (from john30/ebusd-configuration#103)
    - ariston boiler2: Ariston Clas One without thermostat on ebus
  • reset seq:

      70fe 2034 00                        <= chaffoteaux boiler
      37fe 2034 0a 3c5affffffffff010300   <= ariston boiler2
    
  • start seq:

      70fe203110 3239313332334d453030323275020014         <= chaffoteaux thermostat z1
      01fe203110 3239313332334d453030323206080014         <= chaffoteaux thermostat z3
      37fe203110 3233313332324d50313136373cfe0100         <= chaffoteaux boiler
      37fe203110 3239323330375655313035353cfe0100         <= ariston boiler1
    
      333731373231363834343938 75 02 01 01     <= ariston thermostat          (SN: 371721684498)
      3239313332334d4530303232 75 02 00 14     <= chaffoteaux thermostat z1   (SN: 291323ME0022)
                                               <= chaffoteaux thermostat z2   (SN: 291323ME0022)
      3239313332334d4530303232 06 08 00 14     <= chaffoteaux thermostat z3   (SN: 291323ME0022)
    
      303231383037313730333539 3c fe 01 00     <= ariston boiler1             (SN: 021807170359)
      323932333037565531303535 3c fe 01 00     <= ariston boiler2             (SN: 292307VU1055)
      3233313332324d5031313637 3c fe 01 00     <= chaffoteaux boiler          (SN: 231322MP1167)
      ^ serial number found in eeprom at offset 0x1A (12 bytes)
                               ^ addr slave
                                  ^ broadcast
    
  • end seq1:

      70fe203605 0075000075       <= chaffoteaux thermostat z1
      01fe203605 0042000106       <= chaffoteaux thermostat z3
      37fe203605 003c00003c       <= chaffoteaux boiler
      37fe203605 003c00003c       <= ariston boiler2
    
      00 b1 00 01 75              <= ariston thermostat
      00 b1 00 01 3c              <= ariston boiler1
      00 3c 00 00 3c              <= chaffoteaux boiler
                  ^ addr slave
    
  • end seq2:

      70fe203605 0100000075       <= chaffoteaux thermostat z1
      37fe203605 010000003c       <= chaffoteaux boiler
      37fe203605 010100003c       <= chaffoteaux boiler with errors: 411 or 411 + 412
      37fe203605 010100003c       <= ariston boiler2 with silent error ec: external probe disconnected
    
      01 00 00 01 75              <= ariston thermostat
      01 00 00 01 3c              <= ariston boiler1
      01 01 00 00 3c              <= chaffoteaux boiler with errors: 411 or 411 + 412
      ^ I'm ready ?
         ^ error is present
                  ^ addr slave
    

Extra sources:

Dumps

thermostat chaffoteaux                                      boiler chaffoteaux
17:36:35.991  70fe203400                                    17:37:54.371  37fe203400
17:36:36.266  70fe2031103239313332334d453030323275020014    17:37:54.642  37fe2031103233313332324d50313136373cfe0100
17:36:37.316  70fe203a0102                                  17:37:55.697  00fe203a0102      [bus notice] new master 00, master count 4
17:36:37.414  70fe203a0104
17:36:37.515  70fe203a0105
17:36:37.616  70fe203a0106
17:36:37.717  70fe203a0108
17:36:37.848  70fe203a0109                                  17:37:55.799  00fe203a0109
17:36:37.908  70fe203a010a                                  17:37:55.902  00fe203a010a
17:36:38.003  70fe203a010b                                  17:37:56.005  00fe203a010b
17:36:38.103  70fe203a010c
17:36:38.205  70fe203a010d                                  17:37:56.108  00fe203a010d
17:36:38.305  70fe203a010e                                  17:37:56.211  00fe203a010e
17:36:38.401  70fe203a0112                                  17:37:56.314  00fe203a0112
17:36:38.528  70fe203a0114
17:36:38.601  70fe203a0115
17:36:38.702  70fe203a0116
17:36:38.803  70fe203a0118
17:36:38.903  70fe203a0119                                  17:37:56.417  00fe203a0119
17:36:39.004  70fe203a011a                                  17:37:56.520  00fe203a011a
17:36:39.105  70fe203a011b                                  17:37:56.629  00fe203a011b
17:36:39.205  70fe203a011c
17:36:39.306  70fe203a011d                                  17:37:56.725  00fe203a011d
17:36:39.407  70fe203a011e                                  17:37:56.828  00fe203a011e
17:36:39.507  70fe203a0120                                  17:37:56.931  00fe203a0120
17:36:39.611  70fe203a0121                                  17:37:57.034  00fe203a0121
17:36:39.709  70fe203a0122                                  17:37:57.137  00fe203a0122
17:36:39.809  70fe203a0123                                  17:37:57.240  00fe203a0123
17:36:39.910  70fe203a0124
17:36:40.010  70fe203a0125                                  17:37:57.343  00fe203a0125
17:36:40.111  70fe203a0126                                  17:37:57.446  00fe203a0126
17:36:40.207  70fe203a0127                                  17:37:57.549  00fe203a0127
17:36:40.308  70fe203a0128                                  17:37:57.652  00fe203a0128
17:36:40.408  70fe203a0129                                  17:37:57.759  00fe203a0129
17:36:40.503  70fe203a012a                                  17:37:57.857  00fe203a012a
17:36:40.599  70fe203a012b                                  17:37:57.960  00fe203a012b
17:36:40.700  70fe203a012c                                  17:37:58.063  00fe203a012c
17:36:40.801  70fe203a012d                                  17:37:58.166  00fe203a012d
17:36:40.901  70fe203a012e                                  17:37:58.269  00fe203a012e
17:36:41.002  70fe203a012f                                  17:37:58.372  00fe203a012f
17:36:41.102  70fe203a0132                                  17:37:58.475  00fe203a0132
17:36:41.203  70fe203a0134                                  17:37:58.578  00fe203a0134
17:36:41.304  70fe203a0135
17:36:41.399  70fe203a0136
17:36:41.500  70fe203a0138
17:36:41.600  70fe203a0139                                  17:37:58.681  00fe203a0139
17:36:41.696  70fe203a013a                                  17:37:58.786  00fe203a013a
17:36:41.792  70fe203a013b                                  17:37:58.886  00fe203a013b
17:36:41.892  70fe203a013c
17:36:41.993  70fe203a013d                                  17:37:58.990  00fe203a013d
17:36:42.093  70fe203a013e                                  17:37:59.093  00fe203a013e
17:36:42.195  70fe203a0140                                  17:37:59.200  00fe203a0140
17:36:42.297  70fe203a0141                                  17:37:59.298  00fe203a0141
17:36:42.399  70fe203a0142                                  17:37:59.403  00fe203a0142
17:36:42.497  70fe203a0143                                  17:37:59.506  00fe203a0143
17:36:42.592  70fe203a0144
17:36:42.687  70fe203a0145                                  17:37:59.608  00fe203a0145
17:36:42.788  70fe203a0146                                  17:37:59.711  00fe203a0146
17:36:42.888  70fe203a0147                                  17:37:59.813  00fe203a0147
17:36:42.989  70fe203a0148                                  17:37:59.916  00fe203a0148
17:36:43.091  70fe203a0149                                  17:38:00.019  00fe203a0149
17:36:43.191  70fe203a014a                                  17:38:00.121  00fe203a014a
17:36:43.291  70fe203a014b                                  17:38:00.224  00fe203a014b
17:36:43.387  70fe203a014c                                  17:38:00.327  00fe203a014c
17:36:43.482  70fe203a014d                                  17:38:00.431  00fe203a014d
17:36:43.583  70fe203a014e                                  17:38:00.533  00fe203a014e
17:36:43.684  70fe203a014f                                  17:38:00.636  00fe203a014f
17:36:43.784  70fe203a0150                                  17:38:00.739  00fe203a0150
17:36:43.885  70fe203a01fe                                  17:38:00.842  00fe203a01fe
17:36:44.959  70fe2036050075000075                          17:38:01.913  37fe203605003c00003c
17:36:45.164  70fe203a0102                                  17:38:02.117  00fe203a0102
17:36:45.266  70fe203a0104
17:36:45.359  70fe203a0105
17:36:45.460  70fe203a0106
17:36:45.560  70fe203a0108
17:36:45.662  70fe203a0109                                  17:38:02.220  00fe203a0109
17:36:45.761  70fe203a010a                                  17:38:02.323  00fe203a010a
17:36:45.861  70fe203a010b                                  17:38:02.426  00fe203a010b
17:36:45.960  70fe203a010c
17:36:46.061  70fe203a010d                                  17:38:02.529  00fe203a010d
17:36:46.163  70fe203a010e                                  17:38:02.632  00fe203a010e
17:36:46.256  70fe203a0112                                  17:38:02.735  00fe203a0112
17:36:46.357  70fe203a0114
17:36:46.452  70fe203a0115
17:36:46.552  70fe203a0116
17:36:46.655  70fe203a0118
17:36:46.757  70fe203a0119                                  17:38:02.841  00fe203a0119
17:36:46.856  70fe203a011a                                  17:38:02.941  00fe203a011a
17:36:46.957  70fe203a011b                                  17:38:03.046  00fe203a011b
17:36:47.057  70fe203a011c
17:36:47.157  70fe203a011d                                  17:38:03.148  00fe203a011d
17:36:47.257  70fe203a011e                                  17:38:03.253  00fe203a011e
17:36:47.357  70fe203a0120                                  17:38:03.353  00fe203a0120
17:36:47.453  70fe203a0121                                  17:38:03.455  00fe203a0121
17:36:47.552  70fe203a0122                                  17:38:03.558  00fe203a0122
17:36:47.654  70fe203a0123                                  17:38:03.661  00fe203a0123
17:36:47.753  70fe203a0124
17:36:47.852  70fe203a0125                                  17:38:03.764  00fe203a0125
17:36:47.952  70fe203a0126                                  17:38:03.867  00fe203a0126
17:36:48.052  70fe203a0127                                  17:38:03.970  00fe203a0127
17:36:48.154  70fe203a0128                                  17:38:04.073  00fe203a0128
17:36:48.247  70fe203a0129                                  17:38:04.176  00fe203a0129
17:36:48.347  70fe203a012a                                  17:38:04.278  00fe203a012a
17:36:48.448  70fe203a012b                                  17:38:04.381  00fe203a012b
17:36:48.547  70fe203a012c                                  17:38:04.484  00fe203a012c
17:36:48.645  70fe203a012d                                  17:38:04.588  00fe203a012d
17:36:48.744  70fe203a012e                                  17:38:04.690  00fe203a012e
17:36:48.838  70fe203a012f                                  17:38:04.793  00fe203a012f
17:36:48.933  70fe203a0132                                  17:38:04.900  00fe203a0132
17:36:49.033  70fe203a0134                                  17:38:04.999  00fe203a0134
17:36:49.132  70fe203a0135
17:36:49.235  70fe203a0136
17:36:49.333  70fe203a0138
17:36:49.433  70fe203a0139                                  17:38:05.102  00fe203a0139
17:36:49.533  70fe203a013a                                  17:38:05.205  00fe203a013a
17:36:49.633  70fe203a013b                                  17:38:05.307  00fe203a013b
17:36:49.733  70fe203a013c
17:36:49.833  70fe203a013d                                  17:38:05.410  00fe203a013d
17:36:49.933  70fe203a013e                                  17:38:05.513  00fe203a013e
17:36:50.034  70fe203a0140                                  17:38:05.616  00fe203a0140
17:36:50.133  70fe203a0141                                  17:38:05.719  00fe203a0141
17:36:50.233  70fe203a0142                                  17:38:05.822  00fe203a0142
17:36:50.333  70fe203a0143                                  17:38:05.925  00fe203a0143
17:36:50.429  70fe203a0144
17:36:50.529  70fe203a0145                                  17:38:06.028  00fe203a0145
17:36:50.630  70fe203a0146                                  17:38:06.131  00fe203a0146
17:36:50.730  70fe203a0147                                  17:38:06.234  00fe203a0147
17:36:50.829  70fe203a0148                                  17:38:06.336  00fe203a0148
17:36:50.929  70fe203a0149                                  17:38:06.439  00fe203a0149
17:36:51.030  70fe203a014a                                  17:38:06.542  00fe203a014a
17:36:51.129  70fe203a014b                                  17:38:06.645  00fe203a014b
17:36:51.235  70fe203a014c                                  17:38:06.748  00fe203a014c
17:36:51.335  70fe203a014d                                  17:38:06.851  00fe203a014d
17:36:51.435  70fe203a014e                                  17:38:06.954  00fe203a014e
17:36:51.535  70fe203a014f                                  17:38:07.057  00fe203a014f
17:36:51.636  70fe203a0150                                  17:38:07.160  00fe203a0150
17:36:51.737  70fe203a01fe                                  17:38:07.264  00fe203a01fe
17:36:52.284  70fe2036050100000075                          17:38:07.825  37fe203605010000003c

Temperatures computed and LWT temperatures

Hola @ysard, @wrongisthenewright.

This topic for computation temperatures discursion ;-)

Yes, I have read the installer document, about 20 or 25 times... I even generated the translated version from the Italian... It helped a bit, but do not think it helped a lot.

In the document, it explains how it works in heating mode. The formula... understood and there are no doubts. I hope to be able to check the values it calculates and uses next winter.

Now, in cooling mode I have not found in the document the formula that applies. I understand that it cannot be the same as the slope configured has nothing to do, in the case of heating it goes from 0.2 to 1 and in cooling it goes from 0 to 30. They are very different values and I think that the same formula does not support these variations:

For heating:
image

For cooling:
image

For heating. Simplifying and using only external probe:

Tset_term = Tmand_min +SL*( Tamb_set -Text)+OF.
dove:

  • Tmand_min = lwt_min, parameters 6171 6172 6173. We will use the same value in all. 25°C
  • Tamb_set = Target room temperature, parameters 6271, 6272, 6273. We will use the same value in all of them. 21°C
  • Text = External temperature. param 7647. Here we have 2 parameters 7647 external probe and 7810 from the hp, but I understand that the system uses the external probe. -5-20:

image

II must wait to winter to check if this is correct.

For cooling. Remember that I have not found the formula that applies in the document you indicate. Just changing the external temperature and the slope in the above formula we have:

image

I think it is not correct

The algorithm is influenced by various offset that must be taken into account when checking the temps.
There is a heating (par 12.2.a1) and a cooling (par 12.4.2) compensation offset for LWT at HP level, this helps to deliver the right water temp at the zone manager in case the water gets cooled (in heating mode) or heated (in cooling mode) while the water is in transit from the HP to the zone manager for poor insulation or very long tubing.

It may be as you indicate, the point is that to simplify everything I have the offset parameters set to 0.

7f2b
7571
7572
7573

In addition, I have checked the following values in the menu and they are all set to 0:

For heating, these should not affect the cooling system:
4.2.3
4.2.4
5.2.3
5.2.4
6.2.3
6.2.4

For cooling, these are now the ones that should be affected:
4.5.4
5.5.4
5.5.4

7.3.0

Remember I configured this params at 0,

Finally, I believe that by simply applying your formula and making the temperature delivery fixed, we are losing some feature of the system.....

Another thing I have done is to ask different AI if they would give me a formula for heating and a formula for cooling using this data:

Current:
External temperature.
External humidity.
Wind speed.

Forecast 3h:
Outside temperature.
External humidity.
Wind speed.

Room:
Current temperature.
Target temperature.

Factors:
Housing insulation level: 0-10, in order to be able to set several.
Outside influence on the calculation: 0-10, so that several can be configured.
Room influence on the calculation: 0-10, so that several can be configured.

Let's say that this could be as complicated as we want and the more data we have, the more optimal it will be...

Well, sorry for the talk... We are still working on it!

Thanks, Oscar

Error codes on Hybrid HVAC system

Hi,
I've just tested your brute force error discovery script, I was able to dump these correlations:
1=102;2=1P1;3=1P2;4=1P3;5=104;6=107;7=1P4;8=1P4;9=109;10=110;11=112;12=114;13=116;14=118;15=103;16=105;17=106;18=108;19=111;20=1P5;21=1P6;22=1P7;23=1P8;24=201;25=309;26=203;27=308;28=205;29=000;30=2P2;31=209;32=301;33=303;34=304;35=000;36=306;37=000;38=110;39=112;40=122;41=123;42=311;43=312;44=5P6;45=501;46=502;47=504;48=5P1;49=5P2;50=5P3;51=5P4;52=601;53=602;54=604;55=605;56=607;57=421;58=000;59=610;60=612;61=6P1;62=6P2;63=611;64=000;65=422;66=510;67=753;68=750;69=603;71=511;73=3P9;75=620;76=621;79=752;80=976;81=972;82=973;83=974;84=975;85=978;86=979;87=980;88=981;90=974;91=755;92=944;93=945;94=946;95=140;96=1P9;97=141;100=701;101=711;102=721;105=411;112=962;113=9P9;114=990;115=971;116=970;117=961;118=960;119=2P8;120=901;121=902;122=903;123=904;124=905;125=906;126=907;127=908;128=909

my boiler manual (Genus One 30) reports other error codes that should be available eg. :

801 Richiesta Taratura Automatica (Auto Calibration needed) 802 Taratura automatica non riuscita (Auto calibration error) 803 Sttaggio parametro 229 errato (Wrong setting on prameter 229 - boiler nominal power) 804 Richiesto clip-in disaccoppiatore bus801 Richiesta Taratura Automatica 802 Taratura automatica non riuscita 803 Sttaggio parametro 229 errato (potenza nominale caldaia errata) 804 Richiesto clip-in disaccoppiatore bus (Bus decoupler clip-in required)????

is it possible that the scripts tests only the first 128 error codes but my system has more "error slots"? Can I modify the script to test also 129-256 errors or I'm I risking of writing gibberish things on the bus?

TY

external temp is wrong

Hi, I used your config to my Chaffoteux mira C green boiler, and everything is working fine except the external temp ( as far as I know i don't have an external sensor).
image
image

do you know what could be the problem? i am very new to ebusd

thanks

How to had the widgets_and_configuration.yaml? no writable entities in HA

Hi Ysard,
Thanks for your work,
I use the ebusd add-on in HA with a wifi adapter
I can have all the reading sensors with the mqtt-hassio.cfg patched.
But I have no writable entities to pilot my Mira C green
I try to had the widgets_and_configuration.yaml, I try to rename it to customize.yaml and hading customize: !include customize.yaml under homeassistant: I have these errors: nvalid config for 'homeassistant' at customize.yaml, line 129: 'counter' is an invalid option for 'homeassistant', check: customize->counter
Invalid config for 'homeassistant' at customize.yaml, line 134: 'sensor' is an invalid option for 'homeassistant', check: customize->sensor
Invalid config for 'homeassistant' at customize.yaml, line 142: 'automation format_error_code' is an invalid option for 'homeassistant', check: customize->automation format_error_code
Invalid config for 'homeassistant' at customize.yaml, line 19: 'input_select' is an invalid option for 'homeassistant', check: customize->input_select
Invalid config for 'homeassistant' at customize.yaml, line 286: 'homeassistant' is an invalid option for 'homeassistant', check: customize->homeassistant
Invalid config for 'homeassistant' at customize.yaml, line 39: 'automation z1_thermoreg_type' is an invalid option for 'homeassistant', check: customize->automation z1_thermoreg_type
Invalid config for 'homeassistant' at customize.yaml, line 85: 'automation dhw_comfort_mode' is an invalid option for 'homeassistant', check: customize->automation dhw_comfort_mode
when I check my config

Can you help ?
Thanks

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.