Rev. 1.34
The document describes encryptions related to LoRaWAN® payloads. Relevant chapters per product of interest are marked with a cross “X”.
1. UPLINK MESSAGES from END-DEVICES
PRODUCT PART NUMBER | 1.1 TIME SYNC REQUEST | 1.2 T/P/RH | 1.3 UART | 1.4 POWER | 1.5 IO | 1.6 REPORT DATA | 1.7 T/P/TH/LUX/VOC | 1.8 ANALOG DATA | 1.9 T/P/RH/LUX/VOC/CO2 | 1.10 SPECIAL DATA | 1.11 DIGITAL DATA | 1.12 SERIAL DATA | 1.13 LENGTH ERROR | 1.14 LEVEL MEASUREMENT | 1.15 CURRENT CONFIGURATION | 1.16 T/RH | 1.17 T/RH LOG |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MCF-LW06485/B | X | X | X | X | |||||||||||||
MCF-LW06VMC | X | X | X | ||||||||||||||
MCF-LW06VMC2 | X | X | X | ||||||||||||||
MCF-LW06232 | X | X | X | X | X | ||||||||||||
MCF-LW06CNT/B | X | X | X | X | X | ||||||||||||
MCF-LW06420/D | X | X | X | X | |||||||||||||
MCF-LW06010/D | X | X | X | X | |||||||||||||
MCF-LW06424/D | X | X | X | X | |||||||||||||
MCF-LW06420B | X | X | X | X | |||||||||||||
MCF-LW06010B | X | X | X | X | |||||||||||||
MCF-LW06424B | X | X | X | X | |||||||||||||
MCF-LW06420T | X | X | X | X | X | ||||||||||||
MCF-LW06010T | X | X | X | X | X | ||||||||||||
MCF-LW06424T | X | X | X | X | X | ||||||||||||
MCF-LW06KIO | X | X | X | X | X | X | X | X | |||||||||
MCF-LW06DO | X | X | X | X | X | X | X | ||||||||||
MCF-LW12PLG | X | X | X | X | X | ||||||||||||
MCF-LW12MET | X | X | X | X | X | X | |||||||||||
MCF-LW13IO | X | X | X | X | X | ||||||||||||
MCF-LW13MIO | X | X | X | X | X | ||||||||||||
MCF-LW12TERWP | X | X | X | X | |||||||||||||
MCF-LW12TERPM | X | X | X | X | |||||||||||||
MCF-LW12TER | X | X | X | X | |||||||||||||
MCF-LW12VOC | X | X | X | X | X | ||||||||||||
MCF-LW12CO2/E | X | X | X | X | X | ||||||||||||
MCF-LWWS00 | X | X | X | X | |||||||||||||
MCF-LWWS01 | X | X | X | X | |||||||||||||
MCF-LW06DAVK/P | X | X | X | X | |||||||||||||
EGK-LW20Lxx | X | X | X | X | |||||||||||||
EGK-LW20Wxx | X | X | X | X | |||||||||||||
EGK-LW20LTxx | X | X | X | X | |||||||||||||
EGK-LW20WTxx | X | X | X | X | |||||||||||||
EGK-LW22PLG | X | X | X | X | X | ||||||||||||
EGK-LW22CCMxx | X | X | X | X | X | ||||||||||||
EGK-LW22TWPxx | X | X | X | X |
2. DOWNLINK MESSAGES to END-DEVICES
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 01 | Time sync request |
Sync ID | 4 byte | XX XX XX XX | ID of sync request |
Sync Version | 3 byte (optional) | XX XX XX | Major and minor version and build |
Application type | 2 byte | 02 00 | for MCF-LW06VMC |
02 01 | for MCF-LW06232 | ||
02 03 | for MCF-LW06485 | ||
02 04 | for MCF-LWWS00 and MCF-LW06DAVK | ||
02 05 | for MCF-LW06KIO | ||
02 07 | for MCF-LW06420/010 OBSOLETE | ||
02 08 | for MCF-LWWS01 and MCF-LW06DAVKP | ||
02 09 | for MCF-LW06420 | ||
02 0A | for MCF-LW06010 | ||
02 0B | for MCF-LW06424 | ||
02 0C | for MCF-LW06420D | ||
02 0D | for MCF-LW06010D | ||
02 0E | for MCF-LW06424D | ||
02 0F | for MCF-LW06VMC2 | ||
02 10 | for MCF-LW06420B | ||
02 11 | for MCF-LW06010B | ||
02 12 | for MCF-LW06424B | ||
02 13 | for MCF-LW06CNT | ||
02 14 | for MCF-LW06CNTB | ||
02 15 | for MCF-LW06010T | ||
02 16 | for MCF-LW06420T | ||
02 17 | for MCF-LW06424T | ||
02 18 | for MCF-LW06DO | ||
04 00 | for MCF-LW12TER (old) | ||
04 01 | for MCF-LW12TERWP | ||
04 02 | for MCF-LW12VOC | ||
04 03 | for MCF-LW12CO2 | ||
04 05 | for MCF-LW12TERPM | ||
04 06 | for MCF-LW12TER | ||
04 07 | for MCF-LW12CO2 | ||
07 00 | for MCF-LW12MET | ||
07 01 | for MCF-LW13IO | ||
07 02 | for MCF-LW12PLG | ||
09 00 | for MCF-LW13MIO | ||
0A 00 | for EGK-LW20L00 | ||
0A 01 | for EGK-LW20W00 | ||
0A 02 | for EGK-LW20LT00 | ||
0A 03 | for EGK-LW20WT00 | ||
0A 04 | for EGK-LW22CCM | ||
0A 05 | for EGK-LW22TWP | ||
0B 00 | for EGK-LW22PLG | ||
Option | 1 byte (optional) | XX | bit 0 set if first message after boot |
bit 1 set if external power is going down | |||
RFU | X byte | XX.. | Optional RFU byte |
The device, after sending the message, waits for the time sync answer (2.1 TIME SYNC ANSWER).If nothing received, it will try to send the request a couple of times. If error persists, it will try again after one week. If it receives the right answer, it aligns the internal clock and a new sync message will be sent after a week to overcome real time clock drift.
If not handled in the right way can cause a unnecessary battery consumption.
Example
message after a power-on:
01787d3c250002000203 01
Uplink ID 01 = Time Sync request
Sync ID 787d3c25 = ID of this Sync Reuest
Sync Version 000200 = Major and minor version and build
Application typ 0203 = MCF-LW06485
Option 01 = bit 0 set: first message after boot
message during a power down (only for MCF-LW06xxx family class C):
014e7d3c25000200020302
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 04 | Temperature/Pressure/Humidity |
Data | 10 byte | XX XX … | Measure 1, refer to Note 1 |
10 byte | XX XX … | Measure 2, refer to Note 1 | |
10 byte | XX XX … | Measure 3, refer to Note 1 | |
Batt % | 1 byte (optional) | XX | Battery percentage |
RFU | 4 byte (optional) | XX XX XX XX | Optional RFU byte |
Note 1
The 10 bytes for each measurement are divided as follows:
Example Sample payload: 04dc7e3721b40a47608801dd7e3721b10a43608801e07e3721b20a425d8801 Remove the first byte and divide the other 30 into 3 parts by 10 byte that correspond to 3 measurements. <color green>The 3 measurements will be:
Decipher the first measurement dividing it by groups and applying the necessary transformations:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 05 | UART |
Data | Application related | XX XX.. | Data to be forwarded (via serial or usb command) |
The recurrent message of metering end-nodes is as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 09 | Power |
Date/Time | 4 byte | XX XX XX XX | Date and time (as for Note1) |
Active energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Active energy (Wh) |
Reactive energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Reactive energy (VARh) |
Apparent energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Apparent energy (VAh) |
Running Time | 4 byte (u32 LSB) | XX XX XX XX | Seconds of running (s) |
After a message of metering request (2.5 METERING REQUEST), or enabled on the sensor, the uplink is as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 09 | Power |
Date/Time | 4 byte | XX XX XX XX | Date and time (as for Note1) |
Active energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Active energy (Wh) |
Reactive energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Reactive energy (VARh) |
Apparent energy | 4 byte (s32 LSB) | XX XX XX XX | Cumulative Apparent energy (VAh) |
Active power | 2 byte (s16 LSB) | XX XX | Active power (W) |
Reactive power | 2 byte (s16 LSB) | XX XX | Reactive power (VAR) |
Apparent power | 2 byte (s16 LSB) | XX XX | Apparent power (VA) |
Voltage | 2 byte (u16 LSB) | XX XX | Voltage (dV RMS) |
Current | 2 byte (u16 LSB) | XX XX | Current (mA RMS) |
Period | 2 byte (u16 LSB) | XX XX | Period (us) |
Running Time | 4 byte (u32 LSB) | XX XX XX XX | Seconds of running (s) |
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 0A | Input/output |
Date/Time | 4 byte | XX XX XX XX | Date and time (as for Note1) |
Inputs | 4 byte (u32 LSB) | XX XX XX XX | Bit mask of the inputs |
Outputs | 4 byte (u32 LSB) | XX XX XX XX | Bit mask of the outputs |
Events | 4 byte (u32 LSB) | XX XX XX XX | Bit mask of input events |
This uplink format is for 32 inputs and 32 outputs. Relevant bits depend on the device part number and its I/O capability.
In case of EGK-LW22PLG, the input status represents the status of the mains (1 for mains present, 0 for mains not present).
In case of MCF-LW12VOC or MCF-LW12CO2 with thresholds enabled, the input status represents the status of the measure (1 if over T+, 0 if under T-).
In case of MCF-LW12CO2E with thresholds enabled, the inputs 0 to 2 represents the led status (Input 0 = red, Input 1 = yellow, input 2 = green).
In case of EGK-LW20L00 and EGK-LW20W00, with accelerometer enabled, the inputs 0 represents the accelerometer status (Input = 1 start of accererometer event start, input = 0 end of accelerometer event).
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 0B | Report data |
Report ID | 1 byte | 0Y | for MCF-LW06KAM, “Y” is the sequential number of the transmission in progress, is incremented at the end of each transmission. |
1Y/4Y/7Y/8Y | for MCF-LW06485, successful reading, “Y” is the sequential number of the transmission in progress, is incremented at the end of each transmission, refer to Note 2 | ||
5Y/6Y/9Y/AY | for MCF-LW06485, error reading, “Y” is the sequential number of the transmission in progress, is incremented at the end of each transmission, refer to Note 2 | ||
2Y | for MCF-LWWS00, MCF-LWWS01, MCF-LW06DAVK and MCF-LW06DAVKP, “Y” is the sequential number of the transmission in progress, is incremented at the end of each transmission. | ||
3Y | for MCF-LW12TERPM, “Y” is the sequential number of the transmission in progress, is incremented at the end of each transmission. | ||
Frame ID | 1 byte | XX | Progressive frame index, increased at each transmission with the same identifier |
Data | 1..33 byte | XX XX .. | for MCF-LW06485 refer to Note 2 |
for MCF-LWWS00 refer to Note 3 | |||
for MCF-LW06DAVK refer to Note 3 | |||
for MCF-LWWS01 refer to Note 4 | |||
for MCF-LW06DAVKP refer to Note 4 | |||
for MCF-LW12TERPM refer to Note 4A |
Note 2
Report ID for MCF-LW06485:
The ModBus frame consists of at least 3 bytes.
In case of success (1Y/4Y), the first two bytes (us16 LSB) indicate the length (including the two bytes) and the remaining bytes is the data read from the peripheral Modbus device(s).
In case of error (5Y/6Y), the first two bytes (us16 LSB) indicate the length (including the two bytes) and the remaining bytes is the data successfully read from the peripheral Modbus device(s) before the error, and the last byte is the type of error:
For backwards compatibility in case of error, it will also return 0200XX where XX indicates the type of error:
Only for MCF-LW06485B
Report:
The ModBus frame consists of at least 4 bytes.
In case of success (7Y/8Y), the first two bytes (us16 LSB) indicate the length (including the two bytes) and the remaining bytes is the data read from the peripheral Modbus device(s). Last byte is the battery percentage.
In case of error (9Y/AY), the first two bytes (us16 LSB) indicate the length (including the two bytes) and the remaining bytes is the data successfully read from the peripheral Modbus device(s) before the error, then the type of error:
and as last byte the battery percentage.
Example
Sample payload:
0b10000a00be87424808010000
Uplink ID: 0b
Report ID: 10 (recurrent data)
Frame ID: 00
Data: 0a00be87424808010000
Note 3
The Davis weather station frame is made up of at least 4 bytes. In the event of an error it returns XXYYZZZZ , where XX indicates the data version, YY the type of error, ZZZZ the size of the read data.
Error type (YY):
If case of successful reading of weather data, the data sequence will be as in the following table (data with more than 1 bytes is LSB):
name | size [byte] | meaning |
---|---|---|
Data version | 1 byte | Current version is 0 |
Davis type | 1 byte | 16 (0x10) for Vantage Pro/Pro2 |
Barometer data | 2 byte (u16 LSB) | Unit is milli inch Hg (inchHg/1000) |
Outside temperature | 2 byte (s16 LSB) | Unit is d°F (°F/10) |
Wind speed | 1 byte | Unit is mph (miles per hour) |
Avg wind speed | 1 byte | Unit is mph |
Wind direction | 2 byte (u16 LSB) | Value from 1 to 360 degrees. (0° is no wind data, 90° is East, 180° is South, 270° is West and 360° is north) |
Outside humidity | 1 byte | Relative humidity in % |
Rain rate | 2 byte (u16 LSB) | Number of rain clicks. Rain clicks/hour |
UV | 1 byte | Unit is in UV index |
Solar radiation | 2 byte (u16 LSB) | The unit is in watt/meter2 |
Day rain | 2 byte (u16 LSB) | Number of rain clicks (0.2mm). |
Day et | 2 byte (u16 LSB) | Unit is inch / 1000 |
Date/time | 4 byte (u32 LSB) | Weather station date and time (as for Note 1) |
Dew Point | 2 byte (s16 LSB) | The value is a signed two byte value in whole degrees F. 255 = dashed data |
Altitude | 2 byte (s16 LSB) | Station elevation (ft.) |
Forecast icons | 1 byte | Single Bit meaning is: 0x01 = Rain, 0x02 = Cloud, 0x04 = Partly cloudy, 0x08 = Sun, 0x10 = Snow. Mixed forecasts are possible. See examples below. |
Bar trend | 1 byte | Signed byte that indicates the current 3-hour barometer trend. It is one of these values: -60 = Falling Rapidly = 196 (as an unsigned byte), -20 = Falling Slowly = 236 (as an unsigned byte), 0 = Steady, 20 = Rising Slowly, 60 = Rising Rapidly, 80 = ASCII “P” = no trend info is available. Any other value meanings that the Vantage does not have the 3 hours of bar data needed to determine the bar trend. |
RFU | 3 byte | Optional RFU bytes. Only present in MCF-LWWS01 and MCF-LW06DAVKP |
Examples of Forecast icons:
decimal | hex | Segments shown | Forecast |
---|---|---|---|
8 | 0x08 | Sun | Mostly Clear |
6 | 0x06 | Partial Sun + Cloud | Partially Cloudy |
2 | 0x02 | Cloud | Mostly Cloudy |
3 | 0x03 | Cloud + Rain | Mostly Cloudy, Rain within 12 hours |
18 | 0x12 | Cloud + Snow | Mostly Cloudy, Snow within 12 hours |
19 | 0x13 | Cloud + Rain + Snow | Mostly Cloudy, Rain or Snow within 12 hours |
7 | 0x07 | Partial Sun + Cloud + Rain | Partly Cloudy, Rain within 12 hours |
22 | 0x16 | Partial Sun + Cloud + Snow | Partly Cloudy, Snow within 12 hours |
23 | 0x17 | Partial Sun + Cloud + Rain + Snow | Partly Cloudy, Rain or Snow within 12 hours |
Note 4
Refer first to Note 3. In addition are PM readings are on a separate uplink. The field “Data”, in case of success, is as follow:
* 4 bytes LSB are for the date and time (as per Note 1)
Note 4A
The 17 (23) bytes of Data are divided as follows:
Example
Sample payload:
0b3a006caf51266409338b8701170022002a0063
Uplink ID: 0b
Report ID: 3a
Frame ID: 00
Data: 6caf5126 6409 33 8b8701 1700 2200 2a00 63
* date and time are: 6c af 51 26
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 11 byte | 0C | Temperature/Pressure/Humidity/Lux/Voc |
Data | 14 byte | XX XX … | Measure 1, refer to Note 5 |
14 byte | XX XX … | Measure 2, refer to Note Note 5 | |
Batt % | 1 byte (optional) | XX | Battery percentage |
RFU | 6 byte (optional) | XX XX XX XX | Optional RFU byte |
Note 5
The first 10 bytes for each measurement are the same as defined in Note 1, the following 4 bytes are as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 12 | Temperature/Pressure/Humidity/Lux/Voc |
Data | 15 byte | XX XX … | Measure 1, refer to Note 5A |
15 byte | XX XX … | Measure 2, refer to Note 5A | |
Batt % | 1 byte (optional) | XX | Battery percentage |
RFU | 4 byte (optional) | XX XX XX XX | Optional RFU byte |
Note 5A
The first 10 bytes for each measurement are the same as defined in Note 1, the following 5 bytes are as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 0D | Analog data |
Type | 1 byte | 01 | for MCF-LW06420/D/B/T |
01 | for MCF-LW06010/D/B/T | ||
01 | for MCF-LW06424/D/B/T | ||
Data | 1..34 byte | XX XX XX… | Refer to Note 6 |
Note 6
Data are as follow: 4 bytes are for the date and time (as per Note 1)
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 0E | T/P/rH/Voc/Lux/Co2 |
Data | 16 byte | XX XX … | Measure 1, refer to Note 7 |
16 byte | XX XX … | Measure 2, refer to Note 7 | |
Batt % | 1 byte (optional) | XX | Battery percentage |
RFU | 2 byte (optional) | XX XX | Optional RFU byte |
Note 7
Data are as follow:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 13 | T/P/rH/Voc/Lux/Co2 |
Data | 17 byte | XX XX … | Measure 1, refer to Note 7A |
17 byte | XX XX … | Measure 2, refer to Note 7A | |
Batt % | 1 byte (optional) | XX | Battery percentage |
Note 7A
Data are as follow:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 0F | Special data |
Type | 1 byte | 00 | Card Data message |
Data | 1..32 byte | XX XX… | for Card Data message refer to Note 8 |
Note 8
Data are as follow:
If card present, data frame also contains:
Example
Sample payload:
0f006caf512611010408447b8043\
<code>
Uplink ID: 0f
Type: 00
Date and time: 6caf5126
* The date of the measurement will be: 17/02/2019 21:59:24.
</code>
Communication status: 11
Card identifier: 01 UID Length: 04 SAK byte: 08 UID: 447b8043
—————
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 10 | Digital data |
Type | 1 byte | 00 | Input counters type 1 |
1 byte | 01 | Frequency meter type 1 | |
1 byte | 02 | Input counters type 2 | |
1 byte | 03 | Output counters | |
1 byte | 04 | Frequency meter type 2 | |
Data | 1..33 byte | XX XX… | For input counters message refer to Note 9 For frequency meter message refer to Note 10 For output counters message refer to Note 11 |
Note 9
Type 1: 2 bytes LSB per input counter (inputs 1 to 16).
Type 2: 30 byte for 5 measures (6 byte for every measure, 4 bytes date and time as defined in Note 1, 2 bytes LSB for counter value) and 1 byte (optional) for battery percentage.
Note 10
Type 1: 4 bytes for the date and time, 2 bytes LSB for frequency value (base 0.1Hz), 1 byte (optional) for battery percentage.
Type 2: 4 bytes for the date and time, 2 bytes LSB for frequency value (base 0.1Hz), 2 bytes LSB for input counter, 1 byte (optional) for battery percentage.
Note 11
Output counters: 1 bytes per output counter (inputs 1 to 8). Counter increases every ON to OFF or OFF to ON cycle.
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 11 | Serial data |
Data Option | 2 byte (u32 LSB) | XX XX | Refer to Note 12 |
Data | 0..33 byte | XX XX… | Data received, refer to Note 12 |
Note 12
Data Option is LSB and formatted as follow:
Data received from the device are buffered and sent via LoRa starting with index 0. Maximum data length is 1024 bytes. Empty data means receiving errors on RS232.
Example
Sample payload:
1100000103F4000400010324010400010334010400010366010200010376010200010380
1121000102000103880102000103900102000103A8010200FF6604000000020301000700
114280000000000000
Uplink ID: 11
Data option: 0000
Data: \\0103F4000400010324010400010334010400010366010200010376010200010380
Uplink ID: 11
Data option: 2100
Data: \\0102000103880102000103900102000103A8010200FF6604000000020301000700
Uplink ID: 11
Data option: 4280
Data: 0000000000000
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | EE | LENGTH ERROR |
Type | 1 byte | XX | Optional RFU byte |
Data | 1..9 byte | XX XX… | Optional RFU byte |
In case the sensor’s frame length is too long for the selected datarate (eg. for AS923, US915 devices). This means a problem with LoRa coverage or with the position of the sensor. If the NS receive the 0xEE, it should try with a lower SF.
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 14 | Level measurement |
Type | 1 byte | 00 | identifying a device EGK-LW20Lxx |
01 | identifying a device EGK-LW20Wxx | ||
02 | identifying a device EGK-LW20LTxx | ||
03 | identifying a device EGK-LW20WTxx | ||
Timestamp | 4 byte | XX XX XX XX | See Note 1 |
Battery voltage | 2 byte (u16 LSB) | XX XX | Battery voltage is an unsigned integer, least significant byte first. Unit is [mV] |
Debug only | 2 byte | XX XX | Reserved for debug. Not useful for application |
Distance | 2 byte (u16 LSB) | XX XX | unsigned integer, least significant byte first. This is the distance of the closest target within the defined range (refer to “Start” and “Length” settings on LoraTool APP). Distance is 0 if nothing is detected. Distance is > 60000 in case of errors. Unit is [mm]. |
Fill level [%] | 1 byte | XX | Fill level percentage, based on to “Start” and “Length”. Fill level is > 100 in case of errors. Only present for Type 01 and 03. |
Temperature | 2 byte (s16 LSB) | XX XX | The temperature is represented by a signed integer with the least significant byte first. The temperature is expressed in hundreds of a °C degree. Only present for Type 01, 02 and 03. |
Relative Humidity | 1 byte | XX | Relative humidity is an unsigned integer corresponding to twice the percentage of humidity. Only present for Type 02 and 03. |
Pressure | 3 byte (u24 LSB) | XX XX XX | Pressure is an unsigned integer with the least significant byte first; it is expressed in Pascal. Only present for Type 02 and 03. |
Battery % | 1 byte | XX | Remaining Battery percentage (if 0x65 not available) |
Frame lenght for each type:
Uplink ID | Type | Timestamp | Battery Voltage | Debug | Distance | Battery % |
0x14 | 0x00 | 4 byte | 2 byte | 2 byte | 2 byte | 1 byte |
Uplink ID | Type | Timestamp | Battery Voltage | Debug | Distance | Fill level % | Temperature | Battery % |
0x14 | 0x01 | 4 byte | 2 byte | 2 byte | 2 byte | 1 byte | 2 byte | 1 byte |
Uplink ID | Type | Timestamp | Battery Voltage | Debug | Distance | Temp | Rh | Pressure | Battery % |
14 | 0x02 | 4 byte | 2 byte | 2 byte | 2 byte | 2 byte | 1 byte | 3 byte | 1 byte |
Uplink ID | Type | Timestamp | Battery Voltage | Debug | Distance | Fill level % | Temp | Rh | Pressure | Battery % |
14 | 0x03 | 4 byte | 2 byte | 2 byte | 2 byte | 1 byte | 2 byte | 1 byte | 3 byte | 1 byte |
Example
Sample payload:
1403dc7e3721b20bb908d3025af9082d278a0163
14 03 dc7e3721 b20b b908 d302 5a f908 2d 278a01 63
The meaning is:
The date of the measurement will be: 23/09/2016 15:54:56.
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | C0 | Current configuration (from FW version 00.02.56) |
Type | 1 byte | 01 | General settings |
02 | Thresholds settings | ||
03 | Level sensor | ||
DATA | 1…33 byte | XX XX .. | For type 1 refer to Note 13 |
For type 2 refer to Note 14 | |||
For type 3 refer to Note 15 |
Note 13
Data are as follow:
size | meaning |
---|---|
1 byte | parity (0 = None 2 STOP, 1 = Odd, 2 = Even, 3 = None 1 STOP) |
1 byte | baud rate [bps] (values 1 to 7: 2400,4800,9600,19200,38400,57600,115200) |
1 byte | delay value ([s] for analog, [ms]for ModBus) |
2 byte (u16 LSB) | main period in minutes |
2 byte (s16 LSB) | pressure compensation(pressure offset offset in Pa for MCF-LW12xxx, elevation in ft.for MCF-LW06DAV/P) |
1 byte | output init (0x00 = OFF / 0x01 = ON) |
1 byte | rfu |
1 byte | rfu |
1 byte | rfu |
1 byte | I/O PERIOD in minutes |
1 byte | COUNTERS PERIOD in minutes |
1 byte | Input as pulses counters |
Bit 0…5: number of input as pulses counters | |
Bit 6/7: edge type - 0x00 rising - 0x80 falling - 0x40 both | |
1 byte | Number of measures before transmission (for EGK-LW22CCMxx) |
1 byte | VOC/PM format: |
0x00 = bVOC as IAQ (2 byte), PM as ug/m3 | |
0x01 = bVOC as ppb (2 byte), PM as #/cm3 | |
0x03 = bVOC as ppb (3 byte), PM as ug/m3 AND PM as #/cm3 | |
1 byte | first option bit mask (0 = disable / 1 = enable): |
0x01 Wake-up on accelerometer | |
0x02 CO2 ABC calibration | |
0x04 No Time Sync request | |
0x08 Unconfirmed uplink message | |
0x10 LED low intensity | |
0x20 Leds off | |
0x40 Uplink time syncronized | |
0x80 Single Join/day | |
1 byte | second option bit mask (0 = disable / 1 = enable): |
0x01 Send full metering data | |
0x02 120V input voltage range | |
0x04 Mifare USB card reader | |
0x08 termination resistors – only for MCF-LW06485B | |
0x10 input 1 as frequency meter | |
0x20 outputs counters | |
0x40 no output led | |
0x80 threshodls high no output | |
1 byte | third option bit mask (0 = disable / 1 = enable): |
0x01 button locked | |
0x02 Davis PM enabled | |
0x04 measure on UTC | |
… | RFU |
Note 14
Data are as follow:
MCF-LW06420, MCF-LW06010 and MCF-LW06424: Thigh and Tlow in bit for every channel (up to 4)
MCF-LW12VOC: Thigh only for channel 1 for bVOC [IAQ/ppm]
MCF-LW12CO2: Thigh only for channel 1 for bVOC [IAQ/ppm], Thigh only for channel 2 for CO2 [ppm]
MCF-LW12CO2E: channel 1 for bVOC [IAQ/ppm], channel 2 for CO2 [ppm]
Note 15
Data are as follow:
size | meaning |
---|---|
14 byte | RFU |
1 byte | Kref |
1 byte | Algorithm |
2 byte (u16 LSB) | Start [mm] |
2 byte (u16 LSB) | Lenght [mm] |
2 byte (u16 LSB) | Signal threshold |
1 byte | RFU |
1 byte | bits 3, 4, 5: Power / (bits 0,1,2,6,7: RFU) |
1 byte | bits 6,7: Sort / (bits 0 to 5: RFU) |
7 byte | RFU |
2 byte | CRC |
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 15 | Temperature/Humidity |
Type | 1 byte | 00 | CCM |
Data | n x 7 byte | XX XX … | Measure n (1 to 3), refer to Note 16 |
Batt % | 1 byte | XX | Battery percentage |
Note 16
The 7 bytes for each measurement are divided as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Uplink ID | 1 byte | 16 | Temperature/Humidity LOG |
Type | 1 byte | 00 | CCM |
Data | n x 9 byte | XX XX … | Measure n (1 to 3), refer to Note 16A |
Note 16A
The 7 bytes for each measurement are divided as follows:
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 00 | Time sync answer |
Sync ID | 4 byte | XX XX XX XX | Copy of received Sync ID |
Date/time | 4 byte | XX XX XX XX | Date/time GMT, refer to Note 17 |
Note 17
Date/time GMT in DOS format with epoch 2000. Sent as LSB. In bits, will be:
Example
For date 23/09/2016 15:54:56:
The sequence in bits is “00100001001101110111111011011100”, corresponding to the hexadecimal “21377edc”, which will be sent as LSB: dc 7e 37 21
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 03 | Uart |
Data | Application related | XX XX…. | Data to be forwarded, proprietary enginko protocol. |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 00 | Identify an IO message |
Enable | 4 byte (u32 LSB) | XX XX XX XX | Bit mask of the outputs to be enabled |
Disable | 4 byte (u32 LSB) | XX XX XX XX | Bit mask of the outputs to be disabled |
Ton | 16 byte (Optional) | XX ………XX | 2 bytes (LSB) per output (outputs 1 to 8): if ≠ 0, set the activation time (base 100ms) of output[n] |
If both the enable and the disable bit are equal to zero, the current status will be sent.
Example
Payload to set out#1
04000100000000000000
Downlink ID: 04 Option: 00 (IO message) Enable: 01000000 → 0x01 0x00 0x00 0x00 → u32 LSB → 0x00 0x00 0x00 0x01 → 0x01 → 00000001b (out #1)
Disable: 00000000 –> No output disable
Payload to reset out#1
04000000000001000000
Downlink ID: 04
Option: 00 (IO message)
Enable: 00000000 –> No output enable
Disable: 01000000 → 0x01 0x00 0x00 0x00 → u32 LSB → 0x00 0x00 0x00 0x01 → 0x01 → 00000001b (out #1)
Payload to set out#1 for 5 seconds:
040001000000000000003200
0x04 = Downlink ID
0x00 = Io type
Enable: 01000000 → 0x01 0x00 0x00 0x00 → u32 LSB → 0x00 0x00 0x00 0x01 → 0x01 → 00000001b (out #1)
Disable: 01000000 –> No output disable
0x3200 = Ton output[1] 0x32 0x00 → LSB → 0x00 0x32 → 50 * 100ms → Ton[1] = 5s
Ton is mandatory only if you want to use the pulse feature
Payload to set out#1 as normal and out#3 only for 1 second:
04000500000000000000000000000A00
0x04 = Downlink ID
0x00 = IO type
0x05000000 = Bit mask enable output 0x05 0x00 0x00 0x00 → u32 LSB → 0x00 0x00 0x00 0x05 → 0x05 → 00000101b → enable output[1]and output[3]
0x00000000 = Bit mask disable output–> No output disable
0x0000 = Ton output[1] 0x00 0x00 → LSB → 0x00 0x00 → 0 → 0 means infinite (as a normal output)
0x0000 = Ton output[2] 0x00 0x00 → LSB → 0x00 0x00 → 0 → 0 means infinite (as a normal output), in this case unused but mandatory to fill the space
0x0A00 = Ton output[3] 0x32 0x00 → LSB → 0x00 0x0A → 10 * 100ms → Ton[3] = 1s
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 01 | Identify a SET MAIN PERIOD message. fw release 1.40 and above supports Data size up to 2 byte LSB. |
04 | Identify a SET I/O PERIOD message | ||
05 | Identify a SET COUNTERS PERIOD message | ||
Data | 1 byte | XX | Set device operation period in minutes (note that some devices have a minimum period, eg MCF-LW12TER 10 min, MCF-LW12VOC 15 min, MCF-LW12TERPM 15 min) |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 02 | Identify a METERING REQUEST message. |
Option 2 | 1 byte | 00 | Full data reading. |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 03 | Identify a SET PRESSURE COMPENSATION message |
Offset | 2 byte (s16 LSB) | XX XX | Add an offset to the pressure in Pa (LSB) (int with sign) to compensate for the altitude, see following table |
Only for MCF-LW12xxx environmental sensors.
altitude [m] | offset [Pa] | altitude [m] | offset [Pa] |
---|---|---|---|
-305 | -3700 | 1646 | 18300 |
-244 | -3000 | 1707 | 18900 |
-183 | -2200 | 1768 | 19500 |
-122 | -1500 | 1829 | 20100 |
-61 | -700 | 1890 | 20700 |
0 | 0 | 1951 | 21300 |
2012 | 21900 | ||
61 | 700 | 2073 | 22500 |
122 | 1500 | 2134 | 23100 |
183 | 2200 | 2195 | 23700 |
244 | 2900 | 2256 | 24300 |
305 | 3600 | 2316 | 24900 |
366 | 4300 | 2377 | 25500 |
427 | 5000 | 2438 | 26100 |
488 | 5700 | 2499 | 26600 |
549 | 6400 | 2560 | 27200 |
610 | 7100 | 2621 | 27800 |
671 | 7800 | 2682 | 28300 |
732 | 8500 | 2743 | 28900 |
792 | 9200 | 2804 | 29500 |
853 | 9800 | 2865 | 30000 |
914 | 10500 | 2926 | 30600 |
975 | 11200 | 2987 | 31100 |
1036 | 11800 | 3048 | 31600 |
1097 | 12500 | 2926 | 30600 |
1158 | 13200 | 2987 | 31100 |
1219 | 13800 | 3048 | 31600 |
1280 | 14500 | ||
1341 | 15100 | ||
1402 | 15700 | ||
1463 | 16400 | ||
1524 | 17000 | ||
1585 | 17600 |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 06 | Identify a THRESHOLDS message |
Enable | 1 byte | XX | refer to Note 13 |
Data | 1..32 byte | XX…XX | 2 bytes (LSB) per threshold (T1h+, T1h-, T1l+, T1l-, T2h+, T2h-, T2l+, T2l-…T4l-); refer to Note 18 |
Note 18
Data are as follow:
MCF-LW06420, MCF-LW06010 and MCF-LW06424: Thigh and Tlow in bit for every channel (up to 4)
MCF-LW12VOC: Thigh only for channel 1 for bVOC [IAQ/ppm]
MCF-LW12CO2: Thigh only for channel 1 for bVOC [IAQ/ppm], Thigh only for channel 2 for CO2 [ppm]
MCF-LW12CO2E: channel 1 for bVOC [IAQ/ppm], channel 2 for CO2 [ppm]
MCF-LW12PLG: Thigh only for channel 1 for Power [W]
EGK-LW22PLG: Thigh only for channel 1 for Power [W]
EGK-LW22CCMxx: channel 1 for temperature [°C/100], channel 2 for RH [%*2]
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 05 | Serial data |
Data Option | 2 byte (u16 LSB) | XX XX | Refer to Note 18 |
Data | 0..33 byte | XX XX… | Data to send, refer to Note 19 |
Note 19
Data sent to the device are buffered starting with index 0 and sent on the serial port after the last frame.
Data Option is LSB and formatted as follow:
Maximum data length is 1024 bytes.
Example
Sample payload:
0500000103F4000400010324010400010334010400010366010200010376010200010380
0521000102000103880102000103900102000103A8010200FF6604000000020301000700
054280000000000000
* Downlink ID: 05
* Data option: 0000
Data: 0103F4000400010324010400010334010400010366010200010376010200010380
Downlink ID: 05
Data option: 2100
Data: 0102000103880102000103900102000103A8010200FF6604000000020301000700
Downlink ID: 05
Data option: 4280
Data: 0000000000000
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | FF | Identify an OFF message |
Option 2 | 1 byte | 00 | If it is a battery-powered device, turn off the module, otherwise it will restart it. |
01 | Force a reboot | ||
BB | Force a Time Sync request |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 07 | Identify a SET ELEVATION message |
Elevation | 2 byte (s16 LSB) | XX XX | Set an elevation in ft. (LSB) (int with sign) for altitude compensation of the barometric pressure. |
Only for MCF-LW06DAV and MCF-LWWS0x
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 08 | Wake-up on accelerometer (default = disable) |
0A | No Time Sync request | ||
0B | Unconfirmed uplink message | ||
0D | Leds off (default = disable) | ||
13 | Single Join/day (default = disable) | ||
15 | Uplink time syncronized (default = disable) | ||
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 09 | CO2 ABC calibration (default = enable) |
11 | LED low intensity | ||
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 0E | Send full metering data (defaut = disable) |
0F | Set 120V input voltage range (default = disable) | ||
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 14 | Set input 1 as frequency meter |
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 0C | VOC/PM format |
Data | 1 byte | XX | 0x00 = bVOC as IAQ (2 byte), PM as ug/m3 |
0x01 = bVOC as ppb (2 byte), PM as #/cm3 | |||
0x03 = bVOC as ppb (3 byte), PM as ug/m3 AND PM as #/cm3 |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 10 | Set termination resistors (default = disable) – only for MCF-LW06485B |
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 12 | Enable LOG (default = disable) |
Data | 1 byte | XX | 0x00 = disable / 0x01 = enable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 16 | Set delay |
Data | 1 byte | XX | [s] for analog, [ms]for ModBus |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.54) |
Option | 1 byte | 17 | Serial port parameters |
Data | 2 byte | XX XX | Byte 1: baud rate [bps] (values 1 to 7: 2400,4800,9600,19200,38400,57600,115200) |
Byte 2: parity (0 = None 2 STOP, 1 = Odd, 2 = Even, 3 = None 1 STOP) |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.55) |
Option | 1 byte | 18 | Output 1 status at power on |
22 | Disable output on threshold | ||
23 | Button locked (output only) | ||
Data | 1 byte | XX | 0x00 = OFF / 0x01 = ON |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.56) |
Option | 1 byte | F0 | Asking for current configuration |
Data | 1 byte | XX | General configuration = 01 |
Thresholds configuration = 02 | |||
Level sensor configuration = 03 |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.56) |
Option | 1 byte | 19 | Enable pulses counter function on inputs |
Data | 1 byte | XX | Inputs number to be configured as pulses counter |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.56) |
Option | 1 byte | 1A | Enable activations counter function on outputs |
Data | 1 byte | XX | 0x00 = enable / 0x01 = disable |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message (from FW version 00.02.56) |
Option | 1 byte | XX | Level sensor parameter, refer to Note 20 |
Data | n byte | XX XX | Parameter dependent, refer to Note 20 |
Note 20
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 00 | Identify an IO message |
TYPE | 1 byte (Bit mask) | 01 | request of the current IO status |
02 | request of the current inputs counters | ||
04 | request of the current outputs counters | ||
08 | request of the current frequency |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 24 | Identify a “Pulse train” message |
Output number | 1 byte | XX | Output index (1 to 8) |
Output options | 1 byte | XX | option bit mask: |
0x01 | Timebase (0=10ms, 1= 100ms) | ||
0x10 | Start state (0=ON, 1=off ) | ||
0x20 | uplink update (0 = just at the end, 1 = update whenever possible) | ||
Cycles number | 1 byte | XX | Number of cycles (0 = endless) |
Ton | 2 byte (u16 LSB) | XX XX | ON duration (value multiplied for Timebase) |
Toff | 2 byte (u16 LSB) | XX XX | off duration (value multiplied for Timebase) |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 2x | Identify a CCM REQUEST message. |
Data | 1 byte | XX | if option 2A: number of measures before transmission |
XX | if option 2B: set (0x01) for measure with UTC time |
name | size [byte] | hex value | meaning |
---|---|---|---|
Downlink ID | 1 byte | 04 | General message |
Option | 1 byte | 2C | Identify a LOG REQUEST message |
Start | 5 byte | XX…XX | Start date/time log retrieval, refer to Note 21 |
Stop | 5 byte | XX…XX | Stop date/time log retrieval; refer to Note 21 |
Note 21
Start and Stop data are as follow:
Rev. 1.34