Difference between revisions of "Protocol decoder:Easymatic"
(7 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
| status = planned | | status = planned | ||
| license = GPLv2+ | | license = GPLv2+ | ||
| source_code_dir = | | source_code_dir = easymatic | ||
| image = | | image = | ||
| input = | | input = uart | ||
| output = | | output = easymatic | ||
| probes = — | | probes = — | ||
| optional_probes = | | optional_probes = | ||
| options = | | options = | ||
}} | }} | ||
Line 20: | Line 20: | ||
=== Differential link === | === Differential link === | ||
The easymatic is linked to the boiler with two wires. This link can feed power to the easymatic. Easymatic can have two R4 accu in order to save data if the power cut. | The easymatic is linked to the boiler with two wires. This link can feed power to the easymatic. Easymatic can have two R4 accu in order to save data if the power is cut. | ||
Boiler power is a 24V modulated with communication power. | Boiler power is a 24V modulated with communication power. | ||
Line 27: | Line 28: | ||
[To be confirmed] | [To be confirmed] | ||
The hardware is similar to [https://en.wikipedia.org/wiki/OpenTherm OpenTherm Specifications] : | The hardware is similar to [https://en.wikipedia.org/wiki/OpenTherm OpenTherm Specifications]: | ||
* differential link | |||
* about 24V | |||
* tension modulation for boiler | |||
* intensity modulation for thermostat (easymatic)? | |||
In order to | In order to capture data with a logic analyzer an interface must be created (to reduce the voltages to levels the respective logic analyzer can handle). | ||
=== Electrical coding === | === Electrical coding === | ||
[To be | [To be defined] | ||
=== Idle state === | === Idle state === | ||
[To be | [To be defined] | ||
== Protocol == | == Protocol == | ||
Line 47: | Line 48: | ||
=== Uart based === | === Uart based === | ||
Whereas [https://en.wikipedia.org/wiki/OpenTherm OpenTherm] | Whereas [https://en.wikipedia.org/wiki/OpenTherm OpenTherm] uses [https://en.wikipedia.org/wiki/Manchester_code Manchester code], the easymatic seems to be based on [https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter Universal Asynchronous Receiver Transmitter] (UART): | ||
* 1200 baud | |||
* 8 data bits (LSB-first) | |||
* even parity | |||
* one stop bit | |||
=== | === Details === | ||
[To be discovered and detailed] | [To be discovered and detailed] | ||
Frames are repeated twice | Frames are repeated twice. | ||
To be | To be defined: how an order is send | ||
All | All frames consist of 6 bytes. | ||
Boiler frames begin with a byte in 01, 03, 05, 07, 09, 0B, 0D | |||
Thermostat frames begin with a "boiler beginning frame +1" : 02, 04, 06, 08, 0A, 0C, 0E | Boiler frames begin with a byte in 01, 03, 05, 07, 09, 0B, 0D. | ||
Thermostat frames begin with a "boiler beginning frame +1": 02, 04, 06, 08, 0A, 0C, 0E. | |||
''Frame description'' | ''Frame description'' | ||
Line 72: | Line 72: | ||
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable" | {| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable" | ||
!Frame (first byte) | !Frame (first byte) | ||
! | !Equipment | ||
! | !2nd byte | ||
! | !3rd byte | ||
!4th byte | !4th byte | ||
!5th byte | !5th byte | ||
Line 84: | Line 84: | ||
| Easymatic | | Easymatic | ||
| ? | | ? | ||
| colspan="2"|? | | colspan="2" | ? | ||
| ? | | ? | ||
| ? | | ? | ||
Line 95: | Line 95: | ||
| ? | | ? | ||
| ? | | ? | ||
| colspan="2"| T°C | | colspan="2" | T°C outside | ||
| | | Example: 70.0°C = 700 = 0x02bc | ||
|- | |- | ||
Line 102: | Line 102: | ||
| Easymatic | | Easymatic | ||
| 00? | | 00? | ||
| colspan="2"| T°C max boiler | | colspan="2" | T°C max boiler | ||
| colspan="2"| Set point frost protection T°C | | colspan="2" | Set point frost protection T°C outside | ||
| | | | ||
Line 112: | Line 112: | ||
| 00? | | 00? | ||
| 00? | | 00? | ||
| colspan="2"| T°C | | colspan="2" | T°C outside | ||
| | | | ||
Line 129: | Line 129: | ||
| Boiler | | Boiler | ||
| 40? | | 40? | ||
| colspan="2"| T°C drink water | | colspan="2" | T°C drink water | ||
| colspan="2"| T°C boiler water | | colspan="2" | T°C boiler water | ||
| | | | ||
Line 137: | Line 137: | ||
| Easymatic | | Easymatic | ||
| C1? | | C1? | ||
| colspan="2"| Set point room T°C day | | colspan="2" | Set point room T°C day | ||
| colspan="2"| Set point room T°C night | | colspan="2" | Set point room T°C night | ||
| | | | ||
Line 155: | Line 155: | ||
| Easymatic | | Easymatic | ||
| 05? | | 05? | ||
| colspan="2"| Set point frost protection room T°C | | colspan="2" | Set point frost protection room T°C | ||
| colspan="2"| Set point T°C drink water | | colspan="2" | Set point T°C drink water | ||
| | | | ||
Line 162: | Line 162: | ||
| 05 | | 05 | ||
| Boiler | | Boiler | ||
| Boiler bits command *** | | Boiler bits command ** *** | ||
| ? | | ? | ||
| ? | | ? | ||
| colspan="2"| | | colspan="2" | outside T°C | ||
| ***confirmation received order ? | | ***confirmation received order ? | ||
Line 171: | Line 171: | ||
| 06 | | 06 | ||
| Easymatic | | Easymatic | ||
| Boiler bits command *** | | Boiler bits command ** *** | ||
| ? | | ? | ||
| ? | | ? | ||
| ? | | ? | ||
| ? | | ? | ||
| ***order ? | | ***order ? | ||
|- | |- | ||
| 07 | | 07 | ||
| Boiler | | Boiler | ||
| Alarm ? | |||
| ? | | ? | ||
| ? | | ? | ||
| colspan="2" | outside T°C | |||
| colspan="2"| | |||
| | | | ||
Line 196: | Line 196: | ||
| ? | | ? | ||
| | | | ||
|- | |- | ||
Line 204: | Line 203: | ||
| ? | | ? | ||
| ? | | ? | ||
| colspan="2"| | | colspan="2" | outside T°C | ||
| | | | ||
|} | |} | ||
(**) bits signification?: Boiler pump/Hydraulic valve Close//Hydraulic valve Open/Burner 1,2/Burner 1,1 | |||
== Resources == | == Resources == | ||
* [https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter Wikipedia: Universal asynchronous receiver/transmitter] | * [https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter Wikipedia: Universal asynchronous receiver/transmitter] | ||
* [http://www.dedietrich-heating.com/index.php/products/product_ranges/floor_standing_boilers/oil_condensing_wingo | * [http://www.dedietrich-heating.com/index.php/products/product_ranges/floor_standing_boilers/oil_condensing_wingo De Dietrich information] | ||
[[Category:Protocol decoder]] | [[Category:Protocol decoder]] | ||
[[Category:UART]] | [[Category:UART]] |
Latest revision as of 07:12, 11 April 2018
Name | EASYMATIC |
---|---|
Description | Asynchronous, serial bus, differential |
Status | planned |
License | GPLv2+ |
Source code | decoders/easymatic |
Input | uart |
Output | easymatic |
Probes | — |
The easymatic protocol decoder can decode the thermostat Easymatic bus protocol used by De Dietrich.
Hardware
Differential link
The easymatic is linked to the boiler with two wires. This link can feed power to the easymatic. Easymatic can have two R4 accu in order to save data if the power is cut.
Boiler power is a 24V modulated with communication power.
Communication is always working.
[To be confirmed]
The hardware is similar to OpenTherm Specifications:
- differential link
- about 24V
- tension modulation for boiler
- intensity modulation for thermostat (easymatic)?
In order to capture data with a logic analyzer an interface must be created (to reduce the voltages to levels the respective logic analyzer can handle).
Electrical coding
[To be defined]
Idle state
[To be defined]
Protocol
Uart based
Whereas OpenTherm uses Manchester code, the easymatic seems to be based on Universal Asynchronous Receiver Transmitter (UART):
- 1200 baud
- 8 data bits (LSB-first)
- even parity
- one stop bit
Details
[To be discovered and detailed]
Frames are repeated twice.
To be defined: how an order is send
All frames consist of 6 bytes.
Boiler frames begin with a byte in 01, 03, 05, 07, 09, 0B, 0D. Thermostat frames begin with a "boiler beginning frame +1": 02, 04, 06, 08, 0A, 0C, 0E.
Frame description
Frame (first byte) | Equipment | 2nd byte | 3rd byte | 4th byte | 5th byte | 6th byte | Comments |
---|---|---|---|---|---|---|---|
0A | Easymatic | ? | ? | ? | ? | ? | |
0B | Boiler | ? | ? | ? | T°C outside | Example: 70.0°C = 700 = 0x02bc | |
0C | Easymatic | 00? | T°C max boiler | Set point frost protection T°C outside | |||
0D | Boiler | 00? | 00? | 00? | T°C outside | ||
0E | Easymatic | Hour | Day | Minutes | FF? | FF? | |
01 | Boiler | 40? | T°C drink water | T°C boiler water | |||
02 | Easymatic | C1? | Set point room T°C day | Set point room T°C night | |||
03 | Boiler | 00? | ? | ? | ? | ? | |
04 | Easymatic | 05? | Set point frost protection room T°C | Set point T°C drink water | |||
05 | Boiler | Boiler bits command ** *** | ? | ? | outside T°C | ***confirmation received order ? | |
06 | Easymatic | Boiler bits command ** *** | ? | ? | ? | ? | ***order ? |
07 | Boiler | Alarm ? | ? | ? | outside T°C | ||
08 | Easymatic | 00? | ? | ? | ? | ? | |
09 | Boiler | 00? | ? | ? | outside T°C |
(**) bits signification?: Boiler pump/Hydraulic valve Close//Hydraulic valve Open/Burner 1,2/Burner 1,1