CMi6110
User’s Manual English
CMi6110 User’s Manual English
page | 30 (42)
[2022-10]
v1.3
Encoder Type & Versioning
The following table defines allowed encoder types and versions. The information is sent in a special
record “Encoder Version field”.
•
This field encapsulates both the encoding of the data and versioning
•
It contains no timestamp
•
It is encoded as a SenML Value
•
It has a
Name
field with the single letter “V”
•
If, when parsing, an invalid version is encountered the parsing shall stop with an error
•
The value shall be interpreted as an UINT16
o
The first byte is the
encoder
type and the second is the encoder
version
, both interpreted
as UINT8.
o
Example:
value 0x0102 means Encoder type 0x01 and Encoder version 0x02.
o
Defined valid encoder types and versions are found in a table below on this page
o
Size of whole record is maximum 7 bytes
o
If we ever need to extend this beyond 256 encoder types or versions, we could use an
UINT32 and let the least significant byte overlap with the definition above and thus
simply extend encoder type and version to use UINT16 instead of UINT8
•
If record is excluded,
encoder
type is 0 and
encoder
version is 0
Record
Name field
Data
Comment
0 (M-Bus)
0
0x0000 M-Bus encoding of payload data. Each data record contains all
DIF/VIF/Values according to M-Bus.
Note that M-Bus uses LSB first byte order for the data and it
shall be preserved here as well.
Example and Data Size
Below is a break-down of the number of bytes used for the different parts described above.
1
: size (bytes)
2
98 18 # 24 item array : 2 (fixed)
3
A3 # Map with length 3 : 1 (fixed)
4
21 # Key 1 = -2 = Base name : 1 (fixed)
5
68 # Value 1 = String array, length 8 : 1 (fixed)
6
3132333435363738 # meter specific encoding : 8 (fixed, depends on meter)
7
22 # Key 2 = -3 = Base time : 1 (fixed)
8
1A 5DE02740 # Value 2 = 1574971200 = : 5 (fixed)
9
# Time "2019-11-28T20:00Z"
10
08 # Key 3 = 8 = Data value : 1 (fixed)
11
58 21 # Value 3 = Byte array, length 33 : 2 (payload1 < 256 bytes)
12
# or
13
# 3 (payload1 > 255)
14
04064E61BC000415
15
07870000022B9413
16
023BD400025A2303
17
025E1A0202FD1712
18
40 : variable
19
Sum : 22 + (1) + payload1 bytes
20
21
** Record for defining encoder and version **
22
23
A2 # Map with length 2 : 1 (fixed)
24
00 # Key 1 = "0" name : 1 (fixed)
25
61 56 # Value 1 = string => "V" = version : 2 (fixed)
26
02 # Key 2 = integer value : 1 (fixed)
27
00 # Value 2 UINT16
28
# 0x0000 => enc=0, ver=0 : 3 (max)
29
Sum : 8 bytes (max)
30
** Follows X items of same size **
31
32
A2 # Map with length 2 : 1 (fixed)
33
06 # Key 1 = 6 = Time : 1 (fixed)
34
39 0E0F # Value 1 = -3600 = : 3 (fixed)