Difference between revisions of "Protocol decoder:Easymatic"

From sigrok
Jump to navigation Jump to search
 
(10 intermediate revisions by 2 users not shown)
Line 5: Line 5:
| status          = planned
| status          = planned
| license        = GPLv2+
| license        = GPLv2+
| source_code_dir = uart
| source_code_dir = easymatic
| image          = [[File:Easymatic.jpg|250px]]
| image          =  
| input          = logic
| input          = uart
| output          = Easymatic protocol
| output          = easymatic
| probes          = —
| probes          = —
| optional_probes = Thermostat, Boiler
| optional_probes =  
| options        = invert_thermostat, invert_boiler
| 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
* differential link
- about 24V
* about 24V
- tension modulation for boiler
* tension modulation for boiler
- intensity modulation for thermostat (easymatic) ?
* intensity modulation for thermostat (easymatic)?


In order to link with a logic analyzer [[Saleae Logic]] an interface must be done.
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 define]
[To be defined]


=== Idle state ===
=== Idle state ===


[To be define]
[To be defined]


== Protocol ==
== Protocol ==
Line 47: Line 48:
=== Uart based ===
=== Uart based ===


Whereas [https://en.wikipedia.org/wiki/OpenTherm OpenTherm] use [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).
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):
It's a :
- 1200 bauds communication.
- 8 bits of data
- no parity
- one stop bit


The bit order of the 8 data bits is LSB-first.
* 1200 baud
* 8 data bits (LSB-first)
* even parity
* one stop bit


=== details ===
=== Details ===


[To be discovered and detailed]
[To be discovered and detailed]


Frames are repeated twice
Frames are repeated twice.


To be define : how an order is send
To be defined: how an order is send


All frame are composed by 6 bytes
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 0A/0B''
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.


{| class="alternategrey sortable sigroktable"
''Frame description''
 
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
!Frame (first byte)
!Frame (first byte)
!Equipement
!Equipment
!2sd byte
!2nd byte
!3th 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 exterior
| colspan="2" | T°C outside
| example : 70,0°C = 0700DEC = 02BCHEX
| 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 exterior
| colspan="2" | Set point frost protection T°C outside
|  
|  


Line 112: Line 112:
| 00?
| 00?
| 00?
| 00?
| colspan="2"| T°C exterior
| 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"| exterior T°C
| 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 ** ***
| ?
| ?
| ?
| ?
Line 181: Line 181:
| 07
| 07
| Boiler
| Boiler
| Alarm ?
| ?
| ?
| ?
| ?
| ?
| colspan="2" | outside T°C
| colspan="2"| exterior T°C
|  
|  


Line 196: Line 196:
| ?
| ?
|
|


|-
|-
Line 204: Line 203:
| ?
| ?
| ?
| ?
| colspan="2"| exterior T°C
| 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 dedietrich information]
* [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

easymatic
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

Resources