Copyright © 2014,2016 Peter Popovec <popovec.peter@gmail.com>
Transparent mode
Allow send frame as defined in chapter 4.2 Opentherm™ Protocol Specification v.2.2 (http://www.domoticaforum.eu/uploaded/Ard%20M/Opentherm%20Protocol%20v2-2.pdf)
In this mode only parity bit is calculated automatically, all other bits are transparently mapped to Opentherm frame.
Line format:
Line must end with CR (0x0d) or LF (0x0a) or CRLF (0x0d 0x0a). There is waiting time for about 3 chars after CR to test if LF is received. Response from device uses same line ends as found in received lines.
< MSG-TYPE-TX DATA-ID DATA-VALUE-1 DATA-VALUE-2
-
< - character "<" (value 0x3c)
-
MSG-TYPE-TX - decadic number 0-255 interpreted per bit:
-
Bit 7 - is ignored, parity bit is calculated internally
-
Bits 6,5,4 - message type - transparently forwarded to boiler
-
Bits 3..0 - reserved - transparently forwarded to boiler
-
-
DATA-ID - decadic number 0-255
-
DATA-VALUE-1 - decadic number 0-255
-
DATA-VALUE-2 - decadic number 0-255
These numbers are transparent forwarded to boiler, the number is greater than 255, real value is number modulo 256.
Response format
> MSG-TYPE-RX DATA-ID DATA-VALUE-1 DATA-VALUE-2
-
> - character ">" (value 0x3e)
-
MSG-TYPE-RX - decadic number 0-255 interpreted per bit:
-
Bit 7 - 0 no error, 1 error, DATA-VALUE-2 represent error code
-
Bits 6..0 - response from boiler (msg type, reserved)
-
-
DATA-ID - decadic number 0-255
-
DATA-VALUE-1 - decadic number 0-255
-
DATA-VALUE-2 - decadic number 0-255
User mode
In this mode 1st byte of Opentherm frame is filled for TX automatically and response from boiler is checked automatically:
Line format
Line must end with CR (0x0d) or LF (0x0a) or CRLF (0x0d 0x0a). There is waiting time for about 3 chars after CR to test if LF is received. Response from device uses same line ends as found in received lines.
Read register
< r DATA-ID DATA-VALUE-1 DATA-VALUE-2
-
r - character "r" or "R"
-
DATA-ID - decadic number 0-255
-
DATA-VALUE-1 - decadic number 0-255
-
DATA-VALUE-2 - decadic number 0-255
Device generate 1st byte for Opentherm frame as message type 0,0,0 reserved bites 0,0,0,0, then calculate parity bit and this frame is send to boiler.
Rest of frame (DATA-ID, DATA-VALUE-1, DATA-VALUE-2) are transparently forwarded to boiler.
Write register
< w DATA-ID DATA-VALUE-1 DATA-VALUE-2
-
w - character "w" or "W"
-
DATA-ID - decadic number 0-255
-
DATA-VALUE-1 - decadic number 0-255
-
DATA-VALUE-2 - decadic number 0-255
Device generate 1st byte for Opentherm frame as message type 0,0,1 reserved bites 0,0,0,0, then calculate parity bit and this frame is send to boiler.
Rest of frame (DATA-ID, DATA-VALUE-1, DATA-VALUE-2) are transparently forwarded to boiler.
Response format
> R-CODE DATA-ID DATA-VALUE-1 DATA-VALUE-2
-
R-CODE - return code
-
128 - error in response, DATA-VALUE-2 represent error code
-
0-15 - transparent copy of reserved bites from boiler
-
-
DATA-ID - decadic number 0-255
-
DATA-VALUE-1 - decadic number 0-255
-
DATA-VALUE-2 - decadic number 0-255
Error codes
-
ERR: 1 missing < on line start
-
ERR: 2 wrong character in number
-
ERR: 4 wrong separator
-
ERR: 5 too many parameter
-
ERR: 8 not enough parameters on line
-
ERR: 10 response before expected period ( < 20ms)
-
ERR: 11 response timeout ( > 800ms)
-
ERR: 20 timeout for bit middle transition
-
ERR: 21 transition before window
-
ERR: 22 transition outside 0,1 window
-
ERR: 23 transition before bit middle
-
ERR: 24 parity error
Return codes for user mode:
-
ERR: 30 returned register ID does not match transmitted register ID
-
ERR: 31 returned data not for slave → master direction
-
ERR: 32 failed unknown data ID
-
ERR: 33 failed invalid data
-
ERR: 34 no read ack for read / no write ack for write