- The s command is to send settings to the connected devices.
- The S message contains the response.
The outgoing 's' command looks like this:
s:AARAAAAAB5EAAWY=\r\n
Like other messages the parameter is base64 encoded.
Converted to hex, this is:
0000000000: 00 04 40 00 00 00 07 91 00 01 66
The first part of the s command consists of following fields:
Description Length Example Value
=====================================================================
Unknown 1 00
RF flags 1 04
Command 1 40
RF Address from 3 000000
RF Address to 3 0FDAED
Room nr 1 01
In the rest of this document, the first 6 bytes together are referred to as the "base string".
The RF flags field is set to 04 to address a group (room). For devices not tied to a room this byte should be 00. The MAX! application software always links an device to a room.
40 Set tmperature
10 Set program data
11 Set eco mode temperature
12 Config valve functions
20 Add link partner
21 Remove link partner
22 Set group address
23 Remove group address
82 Enable/disable display of current temperature
Note: other commands exist and it should be useful to send a wakeup (z: command) before
This can be left at 000000.
Set to the target device's RF address. Field seems to be ignored for group commands (so can be left at 000000).
Group number of the receiving device(s).
Description Length Example Value
=====================================================================
Base String 6 000440000000
RF Address 3 0FDAED
Room nr 1 01
Temperature & 1 66
Mode (similar to the L message)
Date Until 2 9d 0b Note: Only in case of vacation mode setting. Otherwise this byte is omitted
Time Until 1 04 Note: Only in case of vacation mode setting. Otherwise this byte is omitted
01100110: 66
The temperature indicates the configured temperature and the mode of a device. It can be decoded as following:
hex: | 66 |
dual: | 0110 1100 |
|||| ||||
||++-++++-- temperature: 10 1100 -> 38 = temp * 2
|| (to get the temperature, the value must be divided by 2: 38/2 = 19)
||
||
++--------- mode: 00=auto/weekly program
01=manual
10=vacation
11=boost
In case of a vacation program
0000000000: 9d 0b
Date until indicates to which date the given temperature is set. It can be decoded as following:
+-++++--------------- day: 1 1101 -> 29
| ||||
dual: | 1001 1101 | 0000 1011 | (9D0B)
||| | | ||||
||| | +-++++--- year: 0 1011 -> 11 = year - 2000
||| | (to get the actual year, 2000 must be added to the value: 11+2000 = 2011)
||| |
+++---------+----------- month: 1000 -> 8
In this example the temperature is set till Aug 29, 2011.
Time until indicates to which date the given temperature is set. In this example it is set to 2:00 (04 * 0,5 hours = 2:00)
s:AAQQAAAAD8OAAQJASUxuQMtNIE0gTSBNIA==
Again the parameter is base64 encoded. Converted to hex, this is:
00 04 10 00 00 00 0f c3 80 01 02 40 49 4c 6e 40
cb 4d 20 4d 20 4d 20 4d 02
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000410000000
RF Address 3 0FC380
Room Nr 1 01
Day of week 1 02
Temp and Time 2 4049
Temp and Time (2) 2 4c6e
Temp and Time (3) 2 40cb
Temp and Time (4) 2 4d20
Temp and Time (5) 2 4d20
Temp and Time (6) 2 4d20
Temp and Time (7) 2 4d02
hex: | 02 |
dual: | 0000 0010 |
||||
|+++-- day: 000: saturday
| 001: sunday
| 010: monday
| 011: tuesday
| 100: wednesday
| 101: thursday
| 110: friday
|
+----- telegram: 1: set
0: not set
The thermostat supports 13 setting-points of temperatur and time for a weekly program. But the s-message with command 10 does only allow 7 entries. Updating the lower 7 entries telegram is not set, updating the upper entries (only 6 entries in this case) the flag telegram has to be set to 1.
hex: | 40 | 49 |
dual: | 0100 0000 | 0100 1001 |
|||| |||| |||| ||||
|||| |||+---++++-++++-- Time: 001001001: 06:05
|||| |||
|||| |||+-------------- Temperature: 0100000: 16
This 16 bit word contains the temperature on the 7 MSB and Time until that temperature is set on the 9 LSB. Temperature value has to be divided by 2.
20 (hex) = 32 (decimal) -> 32/2 = 16
Time is the value * 5 minutes since midnight.
49 (hex) = 73 (decimal) -> 73*5 = 365 -> 6:05
s:AAARAAAAD8OAACshPQkHGAM=
Again the parameter is base64 encoded.
Converted to hex, this is:
00 00 11 00 00 00 0f c3 80 00 2b 21 3d 09 07 18
03
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000011000000
RF Address 3 0FC380
Room Nr 1 00
Temperature Comfort 1 2b
Temperature Eco 1 21
Temperature Max 1 3d
Temperature Min 1 09
Temperature Offset 1 07
Temperature Window Open 1 18
Duration window open 1 03
Temperature comfort, temperature eco, temperature max, temperature min, temperature window open decode the same way. To get the actual temperature, the value must be divided by 2.
2b (hex) = 43 (decimal) -> 43/2 = 21.5
Temperature Offset is decoded as following:
07 (hex) = 7 (decimal) -> 7/2 - 3.5 = 0
Duration window open is simply the time in minutes * 5
03 (hex) = 3 (decimal) -> 3*5 -> 15 (minutes)
s:AAQSAAAAD8OAATIM/wA=\r\n
Again the parameter is base64 encoded.
Converted to hex, this is:
00 04 12 00 00 00 0f c3 80 01 32 0c ff 00
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000412000000
RF Address 3 0FC380
Room Nr 1 01
Boost 1 32
Decalcification 1 0C
Valve Maximum 1 FF
Valve Offset 1 00
hex: | 32 |
dual: | 0011 0010 |
|||| ||||
|||+-++++--- valve position: 10010 -> 18 = 18/20 = 90 % (20 is fully open)
|||
+++--------- boost duration: 001 -> 1 = duration / 5 minutes
(to get the actual duration, the value must be multiplied by 5: 1 * 5 = 5 minutes)
hex: | 0C |
dual: | 0000 1100 |
|||| ||||
|||+-++++--- hour: 01100 -> 12
|||
+++--------- day: 000: saturday
001: sunday
010: monday
011: tuesday
100: wednesday
101: thursday
110: friday
s:AAAgAAAAD8NzAA/a7QE=\r\n
Again the parameter is base64 encoded.
Converted to hex, this is:
00 00 20 00 00 00 0f c3 73 00 0f da ed 01
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000020000000
RF Address 3 0FC373
Room Nr 1 00
RF Adress Partner 3 0FDAED
Partner Type 1 01
Partner type tells what device the partner is.
Device Type
=====================================================================
Heating Thermostat 1
Heating Thermostat Plus 2
Wall Mounted Thermostat 3
Shutter Contact 4
Push Button 5
s:AAAhAAAAD8NzAA/a7QE=\r\n
Again the parameter is base64 encoded.
Converted to hex, this is:
00 00 21 00 00 00 0f c3 73 00 0f da ed 01
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000021000000
RF Address 3 0FC373
Room Nr 1 00
RF Adress Partner 3 0FDAED
Partner Type 1 01
Partner type tells what device the partner is.
Device Type
=====================================================================
Heating Thermostat 1
Heating Thermostat Plus 2
Wall Mounted Thermostat 3
Shutter Contact 4
Push Button 5
s:AAAiAAAAD8OAAAE=\r\n
Again the parameter is base64 encoded.
Converted to hex, this is:
00 00 22 00 00 00 0f c3 80 00 01
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000022000000
RF Address 3 0FC380
Not Used 1 00
Room Nr 1 01
s:AAAjAAAAD8OAAAE=\r\n
Again the parameter is base64 encoded.
Converted to hex, this is:
00 00 23 00 00 00 0f c3 80 00 01
It is decoded as following:
Description Length Example Value
=====================================================================
Base String 6 000023000000
RF Address 3 0FC380
Not Used 1 00
Room Nr 1 01
Command only works on wall thermostats.
Has a single byte parameter after the header:
Description Length Example Value
=====================================================================
Header(BS+RF+Gr) 10 000082000000123ABC00
Setting 1 04
A setting of 04 sets the thermostat to displaying the actual (measured) temperature, a setting of 00 (default) sets it to displaying the configured temperature setpoint.
A thermstat that displays the actual temperature, will temporarily show the set temperature when + or - is pressed. Further presses of these buttons will change the setting.
The incoming 'S' message response looks like this:
S:00,0,31
This can be decoded as following
Description Length Example Value
=====================================================================
Duty Cycle 2 00
Command Result 1 0
Free Memory Slots 2 31
868MHz radio comms is limited to 1% transmission, i.e. 36 seconds in each hour. The cube monitors this, and returns the hex representation of the permitted duty cycle as a percentage. When this percentage reaches 100% it will queue S commands in memory or reject additional commands.
0: command processed
1: command discarded
The hex representation of the free memory slots