Administration
The product can be identified using the following information:
-
Manufacturer string = ELV
-
Medium = Room sensor
-
Generation = 70-79
The Generation field between product releases will only change (increase by 1) if the M-Bus protocol information changes between versions. Use the software version field in the M-Bus telegram to identify current software version.
The product implements both primary and secondary addressing mode. The primary and secondary addresses can be changed using M-Bus standard command. Primary address from factory is 0 and secondary address from factory is the fabrication number (serial number).
The product can handle 300 or 2400 baud. No auto-baud detection is available. The baud rate can be changed using M-Bus standard commands. Baud rate from factory is 2400 baud.
Multi-telegram mode, or FCB-bit toggling, is implemented. First telegram contains momentary values, min/max and average values of measured temperature and humidity. Second telegram contains 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 127. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x10 |
Start character |
1 |
0x40 |
C-Field = SND_NKE |
2 |
0xnn |
A-Field = Address of slave |
3 |
0xnn |
Checksum |
4 |
0x16 |
Stop character |
Request user data from product and wait for slave response.
Table 129. Master to slave
Byte index |
Data |
Description |
---|---|---|
0 |
0x10 |
Start character |
1 |
0x4b | 0x5b | 0x6b | 0x7b |
C-Field = REQ_UD2 |
2 |
0xnn |
A-Field = Address of slave |
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 130. Slave to master – Telegram 1
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 70 to 79 (dec) |
14 |
0x1B |
Device type/medium = room sensor |
15 |
0xnn |
Access number |
16 |
0x00 |
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: Not used (= 0 or 1) Bit 6: Not used (= 0 or 1) Bit 5, 4, 3: Not used (= 0) Bit 2: 24 h average value indicator
Bit 1: 1 h 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 |
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 averages 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 6 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 hour has 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 131. 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 70 to 79 (dec) |
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 + 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 |
Set baud rate of slave.
Table 132. 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 |
Restore all information to factory default.
Table 134. 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 |
Change M-Bus primary address.
Table 136. 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 |
Change M-Bus secondary address.
Table 138. 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 |
Select slave for further secondary addressing. After successful selection, the slave can be addressed using primary address 253.
Table 140. 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 change the relative humidity VIF presentation.
This command was implemented in software version 4.1.0.
Table 142. 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)