Administration
The sensor supports both primary and secondary addressing. Primary address will by default be set to "0" and secondary address to the fabrication number (serial number) of the device.
-
To change primary address, use set primary address command.
Table 12. Master to slave
Byte index
Data
Description
0
0x68
Start character 1
1
0x06
L-Field 1
2
0x06
L-Field 2
3
0x68
Start character 2
4
0x43 | 0x53 | 0x63 | 0x73
C-Field = SND_UD
5
0xnn
A-Field = Primary address
6
0x51
CI-Field
7
0x01
Primary address DIF
8
0x7A
Primary address VIF
9
0xnn
New primary address (0x00-0xfa)
10
0xnn
Checksum
11
0x16
Stop character
-
To change secondary address, use set secondary address command.
Table 14. Master to slave
Byte index
Data
Description
0
0x68
Start character 1
1
0x09
L-Field 1
2
0x09
L-Field 2
3
0x68
Start character 2
4
0x43 | 0x53 | 0x63 | 0x73
C-Field = SND_UD
5
0xnn
A-Field = Primary address
6
0x51
CI-Field
7
0x0c
Secondary address DIF
8
0x79
Secondary address VIF
9..12
0xnnnnnnnn
New secondary address, 8-bit packed BCD
13
0xnn
Checksum
14
0x16
Stop character
The product supports baud rates of 300 and 2400 bit/s. No auto-baud detection is available. Baud rate will be set to "2400" bit/s by default.
-
To change baud rate of the sensor, use the Set baud rate command.
Table 16. Master to slave
Byte index
Data
Description
0
0x68
Start character 1
1
0x03
L-Field 1
2
0x03
L-Field 2
3
0x68
Start character 2
4
0x43 | 0x53 | 0x63 | 0x73
C-Field = SND_UD
5
0xnn
A-Field = Primary address
6
0xnn
CI-Field = Baud rate selection code:
0xb8 = 300 baud
0xb9 = 600 baud
0xbA = 1200 baud
0xbb = 2400 baud
0xbc = 4800 baud (note 1)
0xbd = 9600 baud (note 1)
0xbe = no change (note 2)
0xbf = no change (note 2)
Baud rates > 2400 baud do work but have not been tested to comply with the timing specifications in the M-Bus standard.
Baud rate codes 0xbe and 0xbf are ACKed with 0xe5 although they do not change the baud rate (this is in accordance with the M-Bus specification).
7
0xnn
Checksum
8
0x16
Stop character
The sensor supports FCB toggling, i.e. multi-telegram mode. The first telegram will contain momentary, min/max and average temperature/humidity values. The second telegram will contain information about the last 24 hours of temperature values.
M-Bus master break signals are handled according to the M-Bus standard. Any on-going communication from M-Bus slave to master will be aborted on break detection from the M-Bus master.
Table 18. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x10 |
Start character |
1 |
0x40 |
C-Field = SND_NKE |
2 |
0xnn |
A-Field = Primary address |
3 |
0xnn |
Checksum |
4 |
0x16 |
Stop character |
This command is used to request data from the product.
Table 20. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x10 |
Start character |
1 |
0x4b | 0x5b | 0x6b | 0x7b |
C-Field = REQ_UD2 |
2 |
0xnn |
A-Field = Primary address |
3 |
0xnn |
Checksum |
4 |
0x16 |
Stop character |
The RSP_UD telegram depends on the FCV and FCB bits in the C field of the calling REQ_UD2 telegram. There are two telegrams available:
If FCV is 0 in REQ_UD2 or if first, third, fifth etc. REQ_UD2 since last SND_NKE (primary addressing mode) or if first, third, fifth etc. REQ_UD2 since last successful secondary addressing selection first telegram is returned.
If FCV is 1 in REQ_UD2 and if second, fourth, sixth etc. REQ_UD2 since last SND_NKE (primary addressing mode) or if second, fourth, sixth etc. REQ_UD2 since last successful secondary addressing selection second telegram is returned.
Table 21. Slave to master - Telegram 1 - 1-50
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0xnn |
L-Field 1 |
2 |
0xnn |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x08 |
RSP_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x72 |
Variable data respond, mode 1 = LSByte first |
7..10 |
0xnnnnnnnn |
Secondary address |
11..12 |
0x9615 |
Manufacturer id “ELV” |
13 |
0xnn |
Generation field In the range from 40 to 49. |
14 |
0x1B |
Device type / medium = room sensor |
15 |
0xnn |
Access number |
16 |
0xnn |
Status byte 0x00 = Ok (no error) 0x0a = Sensor failure (permanent application error) |
17..18 |
0x0000 |
Signature, 16 bit binary |
19 |
0x01 |
Product status DIF |
20 |
0xfd |
Product status VIF |
21 |
0x1b |
Product status VIFE = digital input |
22 |
0xnn |
8-bit integer value with following bit-mask: Bit 7: Text message exists indicator
Bit 6: Text message read indicator
Bit 5,4,3: Not used (=0) Bit 2: 24h average value indicator
Bit 1: 1h average value indicator
Bit 0: Sensor failure
|
23 |
0x02 |
Instantaneous relative humidity DIF |
24 |
0xfb |
Instantaneous relative humidity VIF. |
25 |
0x9b |
Relative humidity, in % (integer) VIFE |
26 |
0x74 |
Scaling VIFE, x 0.01 |
27..28 |
0xnnnn |
Instantaneous relative humidity In case of error the relative humidity will be set to 0. An optional humidity VIF can be selected in the setup menu. In this case the 3-byte default VIF is replaced by
|
29 |
0x22 |
Minimum relative humidity DIF |
30 |
0xfb |
Minimum relative humidity VIF |
31 |
0x9b |
Minimum Relative humidity, in % (integer) VIFE |
32 |
0x74 |
Scaling VIFE, x 0.01 |
33..34 |
0xnnnn |
Minimum Instantaneous relative humidity In case of error the minimum relative humidity will be set to 0. This is the lowest instantaneous relative humidity since last min/max reset command. An optional humidity VIF can be selected in the setup menu. In this case the 3-byte default VIF is replaced by
|
35 |
0x12 |
Maximum relative humidity DIF |
36 |
0xfb |
Maximum relative humidity VIF |
37 |
0x9b |
Maximum Relative humidity, in % (integer) VIFE |
38 |
0x74 |
Scaling VIFE, x 0.01 |
39..40 |
0xnnnn |
Maximum Instantaneous relative humidity In case of error the maximum relative humidity will be set to 0. This is the highest instantaneous relative humidity since last min/max reset command. An optional humidity VIF can be selected in the setup menu. In this case the 3-byte default VIF is replaced by
|
41 |
0x02 |
Instantaneous temperature DIF |
42 |
0x65 |
Instantaneous temperature VIF, external temperature |
43..44 |
0xnnnn |
Instantaneous temperature x 100 In case of error, the temperature will be set to 0. |
45 |
0x22 |
Minimum temperature DIF |
46 |
0x65 |
Minimum temperature VIF, external temperature |
47..48 |
0xnnnn |
Minimum temperature x 100 In case of error, the temperature will be set to 0. This is the lowest instantaneous temperature since last min/max reset command. |
49 |
0x12 |
Maximum temperature DIF |
50 |
0x65 |
Maximum temperature VIF, external temperature |
Table 22. Slave to master - Telegram 1 - 51-80
Byte index |
Data |
Description |
---|---|---|
51..52 |
0xnnnn |
Maximum temperature x 100 In case of error the temperature will be set to 0. This is the highest instantaneous temperature since last min/max reset command. |
53 |
0x01 |
Average duration DIF |
54 |
0x72 |
Average duration VIF |
55 |
0xnn |
Number of hour average values collected since power-on (0..24) This counter starts from zero at power-on and is incremented once per hour when a new hour average temperature value is stored in the 24-hour table. The counter does not count beyond 24 (i.e. this value is equal to number of valid hour values stored in the 24-hour table) The 24-hour temperature rolling average will not be available until this counter has reached 24. |
56 |
0x42 | 0x72 |
1-hour temperature rolling average DIF, storage number 1 0x42 = The value is available 0x72 = The value is not yet calculated |
57 |
0x65 |
1-hour temperature rolling average VIF, external temperature |
58..59 |
0xnnnn |
1-hour temperature rolling average x 100 This value is unavailable (0) until 1 hour has passed since power-on. During this first hour the value will be flagged as “value during error state”, DIF bits 5 and 4 = 1. This value is updated every 6th minute. The temperature data will be 0 in case of sensor error. See slave status byte in data header. |
60 |
0x82 | 0xb2 |
24-hour temperature rolling average DIF, storage number 2 0x82 = The value is available 0xb2 = The value is not yet calculated |
61 |
0x01 |
24-hour temperature rolling average DIFE |
62 |
0x65 |
24-hour temperature rolling average VIF, external temperature |
63..64 |
0xnnnn |
24-hour temperature rolling average x 100 This value is unavailable (0) until 24 hours have passed since power-on. During this period the value will be flagged as “value during error state”, DIF bits 5 and 4 = 1. This value is updated every hour. The temperature data will be 0 in case of sensor error. See slave status byte in data header. |
65 |
0x0c |
Fabrication number DIF |
66 |
0x78 |
Fabrication number VIF |
67..68 |
0xnnnnnnnn |
Fabrication number, 8-digit packed BCD |
69 |
0x0d |
Firmware version DIF |
70 |
0xfd |
Firmware version VIF |
71 |
0x0f |
Firmware version VIFE = “Other software version” |
72 |
0x05 |
Length of firmware string (varying) |
73..77 |
0xnnnnnnnnnn |
Firmware version string in format: Major.Minor.PatchLevel |
78 |
0x1f |
End of telegram, more data follows |
79 |
0xnn |
Checksum |
80 |
0x16 |
Stop character |
Table 23. Slave to master – Telegram 2
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0xnn |
L-Field 1 |
2 |
0xnn |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x08 |
RSP_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x72 |
Variable data respond, mode 1 = LSByte first |
7..10 |
0xnnnnnnnn |
Secondary address |
11..12 |
0x9615 |
Manufacturer id “ELV” |
13 |
0xnn |
Generation field In the range from 40 to 49. |
14 |
0x1B |
Device type/medium = room sensor |
15 |
0xnn |
Access number |
16 |
0xnn |
Status byte 0x00 = Ok (no error) 0x0a = Sensor failure (permanent application error) |
17..18 |
0x0000 |
Signature, 16 bits binary |
19 + 5 x N |
0xc2 | 0xf2 | 0x82 | 0xb2 |
24-hour log temperature table DIF Table index = N = 0..23 Storage numbers N + 3 = 3..26 Value age = N (+1/-0) hours The newest value is transmitted first. During the first 24 hours after power-on, values are sent as 0 and flagged as “value during error state” (DIF bits 5 and 4 = 1), while not yet updated. All temperature data will be 0 in case of sensor error. See product status byte or status byte in data header. |
19 + 5 x N |
0xnn |
24-hour log temperature table DIFE nn = (N+3/2) |
20 + 5 x N |
0x65 |
24-hour log temperature table VIFE |
21..22 + 5 x N |
0xnnnn |
Average temperature of hour “now – N” x 100 |
23 + 5 x N |
0x0f |
End of telegram, no more data follows |
23 + 5 x N +1 |
0xnn |
Checksum |
23 + 5 x N +2 |
0x16 |
Stop character |
This command can be used to restore the device to factory default settings.
Table 24. Factory default settings
M-Bus baud rate |
2400 bit/s |
M-Bus primary address |
0 |
M-Bus secondary address |
Serial number |
LCD-contrast (only CMa10) |
52 |
Table 25. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x04 |
L-Field 1 |
2 |
0x04 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x50 |
CI-Field = Application reset |
7 |
0xb0 |
Application reset sub-code |
8 |
0xnn |
Checksum |
9 |
0x16 |
Stop character |
This command is used to select slave for further secondary addressing. After successful selection, the slave can be addressed using primary address 253.
Table 27. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0xnn |
L-Field 1 Variable depending on selection mask. The selection mask can have any size in the range 0..8 bytes except 5 (Manufacturer id requires a full 16-bit mask). |
2 |
0xnn |
L-Field 2 Variable depending on selection mask. |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x52 |
CI-Field = Slave selection The slave will be deselected if there is any mismatch. |
7..10 |
0xnnnnnnnn |
Optional M-Bus secondary address mask, packed BCD The M-Bus ID mask can use the nibble 0xf as a wildcard in any of the eight BCD digit positions. |
11..12 |
0xnnnn |
Optional M-Bus manufacturer id mask, 16-bit binary The M-Bus manufacturer id mask can use 0xff as wildcard for one or both bytes. |
13 |
0xnn |
Optional M-Bus generation mask, 8-bit binary The M-Bus generation mask can use 0xff as wildcard. |
14 |
0xnn |
Optional M-Bus medium mask, 8-bit binary The M-Bus meter medium mask will match if 0x00 ("unknown") or 0xff (wildcard). |
15 |
0xnn |
Checksum |
16 |
0x16 |
Stop character |
This command will reset the temperature and relative humidity min/max registers to the current real time values. Note that only the M-Bus min/max registers are reset; the user min/max registers, i.e. those shown on the LCD, can only be reset through user action (push-button).
Table 29. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x05 |
L-Field 1 |
2 |
0x05 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x00 |
Elvaco command Reset min/max registers VIF |
9 |
0xnn |
Checksum |
10 |
0x16 |
Stop character |
The LCD contrast default value will be 52 (0x34). Increasing the value will make the display darker, increasing it will lighten the display. Please note that the display may become invisible if the contrast value is set too low. Suggested minimum value is 40 (0x28). The LCD contrast is changed immediately after receiving the command. The value is also stored in EEPROM and will be in effect until a new Set LCD contrast command is received or of changed with the programming push-button.
Table 31. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x06 |
L-Field 1 |
2 |
0x06 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x01 |
Elvaco command Set LCD contrast VIF |
9 |
0xnn |
LCD contrast nn = 40..63 |
10 |
0xnn |
Checksum |
11 |
0x16 |
Stop character |
This command is used to send information to LCD display of a sensor.
The allowed size of a text message size is 1-210 characters. Each LCD page can display up to 42 characters, divided into 3 lines of 14 characters each.
User data byte index |
Data |
---|---|
2..15 |
Text for line 1 on page 1 |
16..29 |
Text for line 2 on page 1 |
30..43 |
Text for line 3 on page 1 |
44..57 |
Text for line 1 on page 2 |
Etc |
Etc |
Up to 5 pages of text can be stored. The text message is sent "first character first", in the order of reading (fortunately, the M-Bus standard does not dictate "reversed strings" in manufacturer specific data fields).
Exactly 42 characters are needed to fill a page. Unused space must be padded with ASCII space (0x20) if more text or another page follows.
In addition to the usual 7-bit ASCII table (0x20-0x7F), there are several other characters that can be used. Please see Sitronix ST7036 data sheet for more information. Elvaco manufacture defined characters are listed in the following table:
Character |
Byte |
---|---|
Å |
0x00 |
Ä |
0x01 |
Ö |
0x02 |
° |
0x03 (Degrees, used for °C) |
This command will overwrite a previously stored message, if any.
Reception of this command will turn on the mail icon on the LCD screen. It will be displayed until the message is deleted. The message can be deleted either by an M-Bus command (see below) or by user action (push-button).
For normal messages, the LED light of CMa10 will flash until the message has been read. CMa10 also has an invisible message features which can be used to prevent the LED light from reacting upon message receiving. The normal and the invisible message is described in the following table.
Table 33. Master to slave – normal message
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0xnn |
L-Field 1 3..(N+3) |
2 |
0xnn |
L-Field 2 3..(N+3) |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x02 |
Elvaco command Send/store text message VIF |
9..N |
0xnn |
Message N = 2-211 |
N+1 |
0xnn |
Checksum |
N+2 |
0x16 |
Stop character |
Table 34. Master to slave – invisible message
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0xnn |
L-Field 1 3..(N+3) |
2 |
0xnn |
L-Field 2 3..(N+3) |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x07 |
Elvaco command Send/store text message VIF |
9..N |
0xnn |
Message N = 2-211 |
N+1 |
0xnn |
Checksum |
N+2 |
0x16 |
Stop character |
This command will delete any text message stored in the slave and turn off both the mail icon and the flashing LED (if on).
Table 36. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x05 |
L-Field 1 |
2 |
0x05 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x03 |
Elvaco command Delete text message VIF |
9 |
0xnn |
Checksum |
10 |
0x16 |
Stop character |
This command will change the display language in the user menu.
Table 38. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x06 |
L-Field 1 |
2 |
0x06 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x05 |
Elvaco command Select user display language VIF |
9 |
0xnn |
Language code nn = English=0x00 Swedish=0x01 German=0x02 Spanish=0x03 Finnish=0x04 Italian=0x05 |
10 |
0xnn |
Checksum |
11 |
0x16 |
Stop character |
This command will change the relative humidity VIF presentation.
Table 40. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x68 |
Start character 1 |
1 |
0x06 |
L-Field 1 |
2 |
0x06 |
L-Field 2 |
3 |
0x68 |
Start character 2 |
4 |
0x43 | 0x53 | 0x63 | 0x73 |
C-Field = SND_UD |
5 |
0xnn |
A-Field = Primary address |
6 |
0x51 |
CI-Field |
7 |
0x0F |
Manufacture specific follows DIF |
8 |
0x06 |
Elvaco command Select humidity VIF code |
9 |
0xnn |
Humidity VIF selector nn = Dimensionless (0xFDBA)=0x00 Plain text (%RH)=0x01 |
10 |
0xnn |
Checksum |
11 |
0x16 |
Stop character |
Comments (0 comments)