mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
129 lines
4.4 KiB
Markdown
129 lines
4.4 KiB
Markdown
### How to interpret the tables below
|
|
|
|
Take an example telegram:
|
|
```
|
|
OO TTTTT
|
|
10 00 FF 00 01 A5 00 D7 21 00 00 00 00 30 01 84 01 01 03 01 84 01 F1 00 00 11 01 00 08 63 00
|
|
data block --> 00 01 02 03 04 06 07 08 09 0A...
|
|
^
|
|
|
|
|
start of data (n=0)
|
|
|
|
OO = offset, 1 byte
|
|
TTTTT = type, 2 bytes
|
|
```
|
|
|
|
The data starts at the 7th byte straight after the typeID of `x01A5`. Position 0 is the first byte of the data block.
|
|
|
|
### Reading from and Writing to an EMS+ Telegram
|
|
|
|
```
|
|
Reading 2 bytes of data from 0x1A5 its: send 0B 90 FF 00 02 01 A5
|
|
Meaning:
|
|
0B - sender
|
|
90 - receiver (RC300) (Read request)
|
|
FF - EMS+ extended mode
|
|
00 - offset
|
|
02 - data length to query
|
|
01 A5 - EMS+ Command/Type
|
|
|
|
And writing a value of 0x77 to type 0x1B9 its: send 0B 10 FF 08 01 B9 77
|
|
|
|
Meaning:
|
|
0B - sender
|
|
10 - receiver (RC300) (Write request)
|
|
FF - EMS+ extended mode
|
|
08 - offset
|
|
01 B9 - EMS+ Command/Type
|
|
77 - the value to write
|
|
```
|
|
|
|
example to retrieve 25 bytes of data from HC1:
|
|
|
|
```
|
|
send 0B 90 FF 00 19 01 A5
|
|
Thermostat -> me, type 0x01A5, telegram: 10 0B FF 00 01 A5 00 D3 21 22 00 00 22 27 00 EF 01 01 03 00 EF 01 4B 00 00 11 01 04 08 42 00 (CRC=ED) #data=25
|
|
```
|
|
|
|
|
|
|
|
# Type 01A5
|
|
|
|
0x1A5 is a monitoring telegram from the 1st Heat Controller (HC1). The other HCs use `01A6`, `01A7` and `01A8` respectively and share the same format as below.
|
|
|
|
| data position (0..n) in decimal | description | format | notes |
|
|
| - | - | - | - |
|
|
| 0 + 1 | current room temperature | 2 bytes, *10 |
|
|
| 2 | ?? (room night set point temperature) | 1 byte, *2 | **(needs verifying!)** most probably to be processed as bit(s) known values are always in (03, 21 ,23)|
|
|
| 3 | current target temperature | 1 byte, *2 | current target value |
|
|
| 4 | target flow temperature | 1 byte | target flow temp |
|
|
| 6 | current setpoint temperature | 1 byte, *2 | temperature for current mode |
|
|
| 7 | next setpoint temperature | 1 byte, *2 | note, only when in auto mode |
|
|
| 8 | remaining time until next temp change | 2 bytes | remaining time in minutes.|
|
|
| 10 | mode and eco/comfort bits info | 1 byte| bit 1 : 0=manual 1=mode auto, bit 2 : 0=night 1=comfort2 |
|
|
| 11 | Current temperature mode | 1 byte | eco : 1, comfort1 : 2, comfort2 : 3, comfort3 : 4 |
|
|
| 12 | Next temperature mode | 1 byte | eco : 1, comfort1 : 2, comfort2 : 3, comfort3 : 4 |
|
|
| 13 + 14 | remaining time to next setpoint | 2 bytes | time in minutes.|
|
|
| 15 + 16 | elapsed time in this setpoint | 2 bytes | time in minutes. |
|
|
|
|
|
|
# Type 01B9
|
|
|
|
This telegram type is for managing the Heating mode
|
|
|
|
```
|
|
AUTO Mode, setting temporary temp to 21.5(0x2B)
|
|
(03:43:45.965) Gateway -> Thermostat, type 0x01B9 telegram: 48 10 FF 08 01 B9 2B (CRC=FA)
|
|
(03:43:46.445) Thermostat -> all, type 0x01B9 telegram: 10 00 FF 08 01 B9 2B (CRC=17)
|
|
|
|
SET to Manual mode ( manual temp is 20.5 (0x29) )
|
|
(03:49:44.575) Gateway -> Thermostat, type 0x01B9 telegram: 48 10 FF 00 01 B9 00 (CRC=91)
|
|
(03:49:45.825) Thermostat -> all, type 0x01A5 telegram: 10 00 FF 0A 01 A5 02 (CRC=16)
|
|
(03:49:51.726) Thermostat -> all, type 0x01A5 telegram: 10 00 FF 03 01 A5 29 (CRC=75)
|
|
<--- RCPLUSStatusMessage(0x1A5) received
|
|
(03:49:51.918) Thermostat -> all, type 0x01A5 telegram: 10 00 FF 06 01 A5 29 (CRC=5D)
|
|
<--- RCPLUSStatusMessage(0x1A5) received
|
|
|
|
```
|
|
|
|
| data position (0..n) in decimal | description | format | notes |
|
|
| - | - | - | - |
|
|
| 0 | operation mode | 1 byte | (Auto=xFF, Manual=x00) |
|
|
| 1 | comfort3 level | 1 byte, *2 | |
|
|
| 2 | comfort2 level | 1 byte, *2 | |
|
|
| 3 | comfort1 level | 1 byte, *2 | |
|
|
| 4 | eco level | 1 byte, *2 | |
|
|
| 5 | | | |
|
|
| 6 | | | |
|
|
| 7 | | | |
|
|
| 8 | temporary setpoint temperature | 1 byte, *2 | when changing of templevel (in auto) value is reset and set to FF |
|
|
| 9 | | | |
|
|
| 10 | manual setpoint temperature | 1 byte, *2 | |
|
|
|
|
# Type 01AF
|
|
|
|
Summer - Winter Mode
|
|
|
|
change the mode
|
|
```send 0B 10 FF 00 AF 07 02```
|
|
|
|
query the mode
|
|
```send 0B 90 FF 00 AF 07 01```
|
|
|
|
1 Byte value.
|
|
|
|
|Byte value | Meaning |
|
|
| - | - |
|
|
| 00 | Off |
|
|
| 01 | Automatic |
|
|
| 02 | Forced |
|
|
|
|
Data log example :
|
|
```
|
|
Thermostat -> all, type 0x01AF telegram: 10 00 FF 07 01 AF 00 (Off)
|
|
Thermostat -> all, type 0x01AF telegram: 10 00 FF 07 01 AF 01 (Automatic)
|
|
Thermostat -> all, type 0x01AF telegram: 10 00 FF 07 01 AF 02 (Forced)
|
|
```
|
|
|
|
|