{{ :wiki:enginko_logo_colori_exe.jpg?nolink&400 |Stampa}}
====== ENGINKO DATA FRAME FORMAT ======
----
Rev. 1.34
----
The document describes encryptions related to LoRaWAN® payloads. Relevant chapters per product of interest are marked with a cross “X”.
**[[#uplink_messages_from_end-devices|1. UPLINK MESSAGES from END-DEVICES]]**
^!!PRODUCT PART NUMBER!! ^!![[#time_sync_request|1.1 TIME SYNC REQUEST]]!! ^!![[#t_p_rh|1.2 T/P/RH]]!! ^!![[#uart|1.3 UART]]!! ^!![[#power|1.4 POWER]]!! ^!![[#io|1.5 IO]]!! ^!![[#report_data|1.6 REPORT DATA]]!! ^!![[#t_p_rh_lux_voc|1.7 T/P/TH/LUX/VOC]]!! ^!![[#analog_data|1.8 ANALOG DATA]]!! ^!![[#t_p_rh_lux_voc_co2|1.9 T/P/RH/LUX/VOC/CO2]]!! ^!![[#special_data|1.10 SPECIAL DATA]]!! ^!![[#digital_data|1.11 DIGITAL DATA]]!! ^!![[#serial_data|1.12 SERIAL DATA]]!! ^!![[#length_error|1.13 LENGTH ERROR]]!! ^!![[#level_measurement|1.14 LEVEL MEASUREMENT]]!! ^!![[#current_configuration|1.15 CURRENT CONFIGURATION]]!! ^!![[#t_rh|1.16 T/RH]]!! ^!![[#t_rh_log|1.17 T/RH LOG]]!! |
^MCF-LW06485/B |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06VMC |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06VMC2 |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06232 |[[#time_sync_request|X]] | |[[#uart|X]] | | | | | | | | |[[#serial_data|X]] |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06CNT/B |[[#time_sync_request|X]] | | | |[[#io|X]] | | | | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06420/D |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06010/D |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06424/D |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06420B |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06010B |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06424B |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06420T |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06010T |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06424T |[[#time_sync_request|X]] | | | | | | |[[#analog_data|X]] | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06KIO |[[#time_sync_request|X]] | |[[#uart|X]] | |[[#io|X]] | | | | |[[#special_data|X]] |[[#digital_data|X]] |[[#serial_data|X]] |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06DO |[[#time_sync_request|X]] | |[[#uart|X]] | |[[#io|X]] | | | | | |[[#digital_data|X]] |[[#serial_data|X]] |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12PLG |[[#time_sync_request|X]] | | |[[#power|X]] |[[#io|X]] | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12MET |[[#time_sync_request|X]] | | |[[#power|X]] |[[#io|X]] | | | | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW13IO |[[#time_sync_request|X]] | | | |[[#io|X]] | | | | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW13MIO |[[#time_sync_request|X]] | | | |[[#io|X]] | | | | | |[[#digital_data|X]] | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12TERWP |[[#time_sync_request|X]] |[[#t_p_rh|X]] | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12TERPM |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12TER |[[#time_sync_request|X]] |[[#t_p_rh|X]] | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12VOC |[[#time_sync_request|X]] | | | |[[#io|X]] | |[[#t_p_rh_lux_voc|X]] | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW12CO2/E |[[#time_sync_request|X]] | | | |[[#io|X]] | | | |[[#t_p_rh_lux_voc_co2|X]] | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LWWS00 |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LWWS01 |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LWWS02 |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LWWS03 |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^MCF-LW06DAVK/P |[[#time_sync_request|X]] | | | | |[[#report_data|X]] | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^EGK-LW20Lxx |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] |[[#level_measurement|X]] |[[#current_configuration|X]] | | |
^EGK-LW20Wxx |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] |[[#level_measurement|X]] |[[#current_configuration|X]] | | |
^EGK-LW20LTxx |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] |[[#level_measurement|X]] |[[#current_configuration|X]] | | |
^EGK-LW20WTxx |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] |[[#level_measurement|X]] |[[#current_configuration|X]] | | |
^EGK-LW22PLG |[[#time_sync_request|X]] | | |[[#power|X]] |[[#io|X]] | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
^EGK-LW22CCMxx |[[#time_sync_request|X]] | | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] |[[#t_rh|X]] |[[#t_rh_log|X]] |
^EGK-LW22TWPxx |[[#time_sync_request|X]] |[[#t_p_rh|X]] | | | | | | | | | | |[[#length_error|X]] | |[[#current_configuration|X]] | | |
**[[#downlink_messages_to_end-devices|2. DOWNLINK MESSAGES to END-DEVICES]]**
^ !!PRODUCT PART NUMBER!! ^ !![[#time_sync_answer|2.1 TIME SYNC ANSWER]]!! ^ !![[#uart_message|2.2 UART MESSAGE]]!! ^ !![[#io_message|2.3 IO MESSAGE]]!! ^ !![[#set_period|2.4 SET PERIOD]]!! ^ !![[#metering_request|2.5 METERING REQUEST]]!! ^ !![[#set_pressure_compensation|2.6 SET PRESSURE COMPENSATION]]!! ^ !![[#thresholds|2.7 THRESHOLDS]]!! ^ !![[#serial_data|2.8 SERIAL DATA]]!! ^ !![[#off_command|2.9 OFF COMMAND]]!! ^ !![[#set_elevation|2.10 SET ELEVATION]]!! ^ !![[#general_settings|2.11 GENERAL SETTINGS]]!! ^ !![[#co2_sensor_settings|2.12 CO2 SENSOR SETTINGS]]!! ^ !![[#energy_meter_settings|2.13 ENERGY METER SETTINGS]]!! ^ !![[#cnt_option|2.14 CNT OPTION]]!! ^ !![[#bvoc_pm_settings|2.15 BVOC/PM SETTINGS]]!! ^ !![[#modbus_settings|2.16 MODBUS SETTINGS]]!! ^ !![[#enable_log|2.17 ENABLE LOG]]!! ^ !![[#delay_settings|2.18 DELAY SETTINGS]]!! ^ !![[#serial_settings|2.19 SERIAL SETTINGS]]!! ^ !![[#output_settings|2.20 OUTPUT SETTINGS]]!! ^!![[#configuration_request|2.21 CONFIGURATION REQUEST]]!! ^!![[#enable_input_counters|2.22 ENABLE INPUT COUNTERS]]!! ^!![[#enable_output_counters|2.23 ENABLE OUTPUT COUNTERS]]!! ^!![[#level_sensor_settings|2.24 LEVEL SENSOR SETTINGS]]!! ^!![[#io_request_message|2.25 IO REQUEST MESSAGE]]!! ^!![[#output_pulse_train|2.26 OUTPUT PULSE TRAIN]]!! ^!![[#ccm_settings|2.27 CCM SETTINGS]]!! ^!![[#ccm_log_request|2.28 CCM LOG REQUEST]]!! ^!![[#utc_settings|2.29 UTC SETTINGS]]!! ^!![[#geographical_coordinates|2.30 GEOGRAPHICAL COORDINATES]]!! ^!![[#force_message|2.31 FORCE MESSAGE]]!! |
^MCF-LW06485/B |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | |[[#serial_data|X]] |[[#off_command|X]] | |[[#general_settings|X]] | | | | |[[#modbus_settings|X]] | |[[#delay_settings|X]] |[[#serial_settings|X]] | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06VMC |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW06VMC2 |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW06232 |[[#time_sync_answer|X]] |[[#uart_message|X]] | |[[#set_period|X]] | | | |[[#serial_data|X]] |[[#off_command|X]] | |[[#general_settings|X]] | | | | | |[[#enable_log|X]] | |[[#serial_settings|X]] | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW06CNT/B |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | |[[#cnt_option|X]] | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW06420/D/T |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | | |[[#cnt_option|X]] | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06010/D/T |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | | |[[#cnt_option|X]] | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06424/D/T |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | | |[[#cnt_option|X]] | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06420B |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06010B |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06424B |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | |[[#delay_settings|X]] | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | |[[#force_message|X]] |
^MCF-LW06KIO |[[#time_sync_answer|X]] |[[#uart_message|X]] |[[#io_message|X]] |[[#set_period|X]] | | | |[[#serial_data|X]] |[[#off_command|X]] | |[[#general_settings|X]] | | | | | |[[#enable_log|X]] |[[#delay_settings|X]] |[[#serial_settings|X]] |[[#output_default_setting|X]] |[[#configuration_request|X]] |[[#enable_input_counters|X]] |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW06DO |[[#time_sync_answer|X]] |[[#uart_message|X]] |[[#io_message|X]] |[[#set_period|X]] | | | |[[#serial_data|X]] |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] | |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW12PLG |[[#time_sync_answer|X]] | |[[#io_message|X]] |[[#set_period|X]] |[[#metering_request|X]] | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | |[[#energy_meter_settings|X]] | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] | |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW12MET |[[#time_sync_answer|X]] | |[[#io_message|X]] |[[#set_period|X]] |[[#metering_request|X]] | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | |[[#energy_meter_settings|X]] | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] |[[#enable_input_counters|X]] |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW13IO |[[#time_sync_answer|X]] | |[[#io_message|X]] |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] |[[#enable_input_counters|X]] |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW13MIO |[[#time_sync_answer|X]] | |[[#io_message|X]] |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] |[[#enable_input_counters|X]] |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^MCF-LW12TERWP |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW12TERPM |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW12TER |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW12VOC |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LW12CO2/E |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] |[[#co2_sensor_settings|X]] | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
^MCF-LWWS00 |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] |[[#set_elevation|X]] |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] |[[#geographical_coordinates|X]] |[[#force_message|X]] |
^MCF-LWWS01 |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] |[[#set_elevation|X]] |[[#general_settings|X]] | | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] |[[#geographical_coordinates|X]] |[[#force_message|X]] |
^MCF-LWWS02 |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] |[[#set_elevation|X]] |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] |[[#geographical_coordinates|X]] |[[#force_message|X]] |
^MCF-LWWS03 |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] |[[#set_elevation|X]] |[[#general_settings|X]] | | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] |[[#geographical_coordinates|X]] |[[#force_message|X]] |
^MCF-LW06DAVK/P |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] |[[#set_elevation|X]] |[[#general_settings|X]] | | | |[[#bvoc_pm_settings|X]] | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] |[[#geographical_coordinates|X]] |[[#force_message|X]] |
^EGK-LW20Lxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | |[[#level_sensor_settings|X]] | | | | |[[#utc_settings|X]] | | |
^EGK-LW20Wxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | |[[#level_sensor_settings|X]] | | | | |[[#utc_settings|X]] | | |
^EGK-LW20LTxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | |[[#level_sensor_settings|X]] | | | | |[[#utc_settings|X]] | | |
^EGK-LW20WTxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | |[[#level_sensor_settings|X]] | | | | |[[#utc_settings|X]] | | |
^EGK-LW22PLG |[[#time_sync_answer|X]] | |[[#io_message|X]] |[[#set_period|X]] |[[#metering_request|X]] | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | |[[#energy_meter_settings|X]] | | | | | | |[[#output_default_setting|X]] |[[#configuration_request|X]] | |[[#enable_output_counters|X]] | |[[#io_request_message|X]] |[[#output_pulse_train|X]] | | |[[#utc_settings|X]] | | |
^EGK-LW22CCMxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | | |[[#thresholds|X]] | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | |[[#enable_log|X]] | | | |[[#configuration_request|X]] | | | | | |[[#ccm_settings|X]] |[[#ccm_log_request|X]] |[[#utc_settings|X]] | | |
^EGK-LW22TWPxx |[[#time_sync_answer|X]] | | |[[#set_period|X]] | |[[#set_pressure_compensation|X]] | | |[[#off_command|X]] | |[[#general_settings|X]] | | | | | | | | | |[[#configuration_request|X]] | | | | | | | |[[#utc_settings|X]] | | |
===== 1. UPLINK MESSAGES FROM END-DEVICES =====
==== 1.1 TIME SYNC REQUEST ====
^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 |
| ::: | ::: |0A 06 |for EGK-LW20L10 |
|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 ([[#timesyncanswer|2.1 TIME SYNC ANSWER]]).If nothing received, il will try sendind 3 more downlinks.
You have to reply before the 4th uplink.
Time sync reply must be sent after a time sync request (starting with 01), otherwise it will be ignored.
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 0__**1**__ \\
\\
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 **0__1__** = bit 0 set: first message after boot\\
\\
message during a power down (only for MCF-LW06xxx family class C):\\
014e7d3c2500020002030__**2**__
----
[[:data_frame_format|HOME]]
==== 1.2 T/P/RH ====
^name ^size [byte] ^hex value ^meaning |
|Uplink ID |1 byte |04 |Temperature/Pressure/Humidity |
|Data |10 byte |XX XX …|Measure 1, refer to [[#note1|Note 1]] |
| ::: |10 byte |XX XX …|Measure 2, refer to [[#note1|Note 1]] |
| ::: |10 byte |XX XX …|Measure 3, refer to [[#note1|Note 1]] |
|Batt % |1 byte (optional)|XX |Battery percentage |
|RFU |4 byte (optional)|XX XX XX XX|Optional RFU byte |
__ {{anchor:note1:Note 1:}} __
\\
The 10 bytes for each measurement are divided as follows:
* __4 bytes LSB are for the date and time__. The MSB (most significant byte) is on the right so they must be read from the right. The 4 byte in reverse order are as follows:
* 7 bit for the offset of the year, starting from the year 2000
* 4 bit per month
* 5 bit for day of the month
* 5 bits for hour
* 6 bits for minutes
* 5 bits for half the seconds. The seconds range is from 0 to 31, so the result should be multiplied by 2 to find the actual seconds of the measurement.
* __2 bytes LSB for temperature__. The temperature is represented by a signed integer with the least significant byte first. The temperature is expressed in hundreds of a °C degree.
* __1 byte for humidity__. Relative humidity is an unsigned integer corresponding to twice the percentage of humidity.
* __3 bytes LSB for pressure__. Pressure is an unsigned integer with the least significant byte first; it is expressed in Pascal.
**Example**
Sample payload: 04dc7e3721b40a47608801dd7e3721b10a43608801e07e3721b20a425d8801
Remove the first byte and divide the other 30 into 3 parts by 10 byte that correspond to 3 measurements.
The 3 measurements will be:
* dc7e3721b40a47608801
* dd7e3721b10a43608801
* e07e3721b20a425d8801
Decipher the first measurement dividing it by groups and applying the necessary transformations:
* Measurement date: dc 7e 37 21
* Byte swapping, result: 21 37 7e dc
* The result in bits will be: 00100001 00110111 01111110 11011100
* The bits are divided as explained above
* Year: 0010000
* Result: 16
* 2000+16 = 2016
* Month: 1001
* Result: 9
* Day: 10111
* Result: 23
* Hour: 01111
* Result: 15
* Minutes: 110110
* Result: 54
* Seconds: 11100
* Result: 28
* 28*2 = 56
* The date of the measurement will be: 23/09/2016 15:54:56.
* Temperature: b40a
* Byte swapping, result: 0ab4
* The result (with sign) will be +2740 with two decimal places, then + 27.40 °C.
* Humidity: 47
* In decimal is 71, the humidity is 71/2 = 35.5% rH.
* Pressure: 608801
* Byte swapping, result: 018860
* In decimal, the result is 100448, with two decimal places the pressure is 1004.48 hPa
----
[[:data_frame_format|HOME]]
==== 1.3 UART ====
^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) |
----
[[:data_frame_format|HOME]]
==== 1.4 POWER ====
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|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 ([[#meteringrequest|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|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)|
----
[[:data_frame_format|HOME]]
==== 1.5 IO ====
^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|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 accelerometer event start, input = 0 end of accelerometer event).
----
[[:data_frame_format|HOME]]
==== 1.6 REPORT DATA ====
^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 [[#note2|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 [[#note2|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 [[#note2|Note 2]] |
| ::: | ::: | ::: |for MCF-LWWS00 refer to [[#note3|Note 3]] |
| ::: | ::: | ::: |for MCF-LW06DAVK refer to [[#note3|Note 3]] |
| ::: | ::: | ::: |for MCF-LWWS01 refer to [[#note4|Note 4]] |
| ::: | ::: | ::: |for MCF-LW06DAVKP refer to [[#note4|Note 4]] |
| ::: | ::: | ::: |for MCF-LW12TERPM refer to [[#note4a|Note 4A]] |
__ {{anchor:note2:Note 2:}} __
Report ID for MCF-LW06485:
* 1Y for recurrent data;
* 4Y for data received after a 0x8 serial data downlink;
* 5Y for recurrent data with error;
* 6Y for data received after a 0x8 serial data downlink with error.
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:
* 0x05 configuration error
* 0x07 error reading internal configuration
* 0x7F ModBus command not implemented
* 0xCC communication error
For backwards compatibility in case of error, it will also return 0200XX where XX indicates the type of error:
* 0x05 configuration error
* 0x07 error reading internal configuration
* 0x7F ModBus command not implemented
* 0xCC communication error
----
Only for MCF-LW06485__**B**__
Report:
* 7Y for recurrent data;
* 8Y for data received after a 0x8 serial data downlink;
* 9Y for recurrent data with error;
* AY for data received after a 0x8 serial data downlink with error.
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:
* 0x05 configuration error
* 0x07 error reading internal configuration
* 0x7F ModBus command not implemented
* 0xCC communication 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
* Byte 1…2: 0a00 (LSB) → 0x000a data length
* Byte 3…10: be87424808010000 data content
__ {{anchor:note3: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):
* A0 to A7 = no answer
* CB = data format error
* 22 = CRC error
* 19 = Davis type error
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__):
|< 100% 15% 20% - >|
^name ^size [byte] ^meaning |
|Data version |1 byte |Current version is 2 |
|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 / 10|
|Solar radiation |2 byte (u16 LSB) |The unit is in watt/meter2 |
|Day rain |2 byte (u16 LSB) |Number of rain clicks (0.2mm) per day. |
|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. |
|Battery |1 byte |Battery % (RFU on version 0) |
|RFU |2 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 |
__ {{anchor:note4:Note 4:}} __
Refer first to [[#note3|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 [[#note1|Note 1]])
* 6 bytes LSB are for PM measures: 2 bytes for each measurement, formatted as LSB, reporting in order PM1.0, PM2.5 and PM10 in µg/m3
* 6 bytes LSB (if present) are for PM measures: 2 bytes for each measurement, formatted as LSB, reporting in order PM1.0, PM2.5 and PM10 in #/cm3.
__ {{anchor:note4a:Note 4A:}} __
The 17 (23) bytes of Data are divided as follows:
* 4 bytes LSB are for the date and time. The MSB (most significant byte) is on the right so they must be read from the right. The 4 byte in reverse order are as follows:
* 7 bit for the offset of the year, starting from the year 2000
* 4 bit per month
* 5 bit for day of the month
* 5 bits for hour
* 6 bits for minutes
* 5 bits for half the seconds. The seconds range is from 0 to 31, so the result should be multiplied by 2 to find the actual seconds of the measurement.
* 2 bytes LSB for temperature. The temperature is represented by a signed integer with the least significant byte first. The temperature is expressed in hundreds of a °C degree.
* 1 byte for humidity. Relative humidity is an unsigned integer corresponding to twice the percentage of humidity.
* 3 bytes LSB for pressure. Pressure is an unsigned integer with the least significant byte first; it is expressed in Pascal.
* 6 bytes LSB are for PM measures: 2 bytes for each measurement, formatted as LSB, reporting in order PM1.0, PM2.5 and PM10 in µg/m3.
* 1 byte (if present) for battery percentage.
* 6 bytes LSB (if present) are for PM measures: 2 bytes for each measurement, formatted as LSB, reporting in order PM1.0, PM2.5 and PM10 in #/cm3.
**Example** \\ Sample payload: \\ 0b3a006caf51266409338b8701170022002a00637300aa00d200 \\ \\ Uplink ID: 0b \\ Report ID: 3a \\ Frame ID: 00 \\ Data: 6caf5126 6409 33 8b8701 1700 2200 2a00 63
7300 aa00 d200 \\
* date and time are: 6c af 51 26
* Byte swapping, result: 26 51 af 6c
* The result in bits will be: 00100110 01010001 10101111 01101100
* The bits are divided as explained above
* Year: 0010011
* Result: 19
* 2000+19 = 2019
* Month: 0010
* Result: 2
* Day: 10001
* Result: 17
* Hour: 10101
* Result: 21
* Minutes: 111011
* Result: 59
* Seconds: 01100
* Result: 12
* 12*2 = 24
* The date of the measurement will be: 17/02/2019 21:59:24.
* Temperature: 6409
* Byte swapping, result: 0964
* The result (with sign) will be +2404 with two decimal places, then +24.04 °C.
* Humidity: 33
* In decimal is 51, the humidity is 51/2 = 25.5% rH.
* Pressure: 8b8701
* Byte swapping, result: 01878b
* In decimal, the result is 100235, with two decimal places the pressure is 1002.35 hPa.
* PM1: 1700
* Byte swapping, result: 0017
* In decimal, the result is 23, the PM1 value is 23 µg/m3.
* PM2.5: 2200
* Byte swapping, result: 0022
* In decimal, the result is 34, the PM2.5 value is 34 µg/m3.
* PM10: 2a00
* Byte swapping, result: 002a
* In decimal, the result is 42, the PM10 value is 42 µg/m3.
* Battery: 63
* In decimal, the result is 99, the battery value is 99%.
* PM1: 7300
* Byte swapping, result: 0073
* In decimal, the result is 115, the PM1 value is 115 #/cm3.
* PM2.5: aa00
* Byte swapping, result: 00aa
* In decimal, the result is 170, the PM2.5 value is 170 #/cm3.
* PM10: d200
* Byte swapping, result: 00d2
* In decimal, the result is 210, the PM10 value is 210 #/cm3.
----
[[:data_frame_format|HOME]]
==== 1.7 T/P/RH/LUX/VOC ====
^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 [[#note5|Note 5]] |
| ::: |14 byte |XX XX … |Measure 2, refer to Note [[#note5|Note 5]] |
|Batt % |1 byte (optional) |XX |Battery percentage |
|RFU |6 byte (optional) |XX XX XX XX |Optional RFU byte |
__ {{anchor:note5:Note 5:}} __
The first 10 bytes for each measurement are the same as defined in [[#note1|Note 1]], the following 4 bytes are as follows:
* 2 bytes LSB for illuminance. Luminance is represented by an unsigned integer with the least significant byte first. The Luminance is reported in lux (lx).
* 2 bytes LSB for VOC (Volatile organic compounds). The VOC level is reported according to setup of the device made with LoRaTool APP, as unsigned with the least significant byte first:
* index (IAQ - indoor air quality) between 0 (clean air) and 500 (heavily polluted air)
* bVOC value between 499ppb (clean air) and 50000ppb (heavily polluted air)
=== 1.7.1. BVOC PPB EXTENDED ===
^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 [[#note5a|Note 5A]] |
| |15 byte |XX XX … |Measure 2, refer to [[#note5a|Note 5A]] |
|Batt % |1 byte (optional) |XX |Battery percentage |
|RFU |4 byte (optional) |XX XX XX XX |Optional RFU byte |
__ {{anchor:note5:Note 5A:}} __
The first 10 bytes for each measurement are the same as defined in [[#note1|Note 1]], the following 5 bytes are as follows:
* 2 bytes LSB for illuminance. Luminance is represented by an unsigned integer with the least significant byte first. The Luminance is reported in lux (lx).
* 3 bytes LSB for VOC (Volatile organic compounds). The VOC level is reported according to setup of the device made with LoRaTool APP, as unsigned with the least significant byte first:
* index (IAQ - indoor air quality) between 0 (clean air) and 500 (heavily polluted air)
* bVOC value between 499ppb (clean air) and 16700000ppb (heavily polluted air)
----
[[:data_frame_format|HOME]]
==== 1.8 ANALOG DATA ====
^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 [[#note6|Note 6]] |
__ {{anchor:note6:Note 6:}} __
Data are as follow: 4 bytes are for the date and time (as per [[#note1|Note 1]])
* 8 byte for measurements, 2 byte for each measurement, formatted as LSB with the following meaninging:
* Bit 0..11: measured value, to be rescaled according to the type
* Bit 12: equal to 1 if error: if the measured value is 0 meanings sensor disconnected (4-20mA only); greater or equal to 0xF00 it is a generic measurement error
* Bit 13..14: measure type:
* 0: 4-20 mA
* 1: 0-10 V
* 2: 0-5 V
* Bit 15: RFU
* 1 byte (optional) for battery percentage, only for MCF-LW06420B, MCF-LW06010B, MCF-LW06424B.
----
[[:data_frame_format|HOME]]
==== 1.9 T/P/RH/LUX/VOC/CO2 ====
^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 [[#note7|Note 7]] |
| ::: |16 byte |XX XX … |Measure 2, refer to [[#note7|Note 7]] |
|Batt % |1 byte (optional) |XX |Battery percentage |
|RFU |2 byte (optional) |XX XX |Optional RFU byte |
__ {{anchor:note7:Note 7:}} __
\\ Data are as follow:
* The first 14 bytes for each measurement are the same as defined in [[#note5|Note 5]]
* Following 2 bytes LSB are for CO2. CO2 concentration is represented by an signed integer with the least significant byte first. The CO2 is expressed in ppm.
=== 1.9.1. BVOC PPB EXTENDED ===
^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 [[#note7a|Note 7A]] |
| ::: |17 byte |XX XX … |Measure 2, refer to [[#note7a|Note 7A]] |
|Batt % |1 byte (optional) |XX |Battery percentage |
__ {{anchor:note7a:Note 7A:}} __
\\ Data are as follow:
* The first 15 bytes for each measurement are the same as defined in [[#note5a|Note 5A]]
* Following 2 bytes LSB are for CO2. CO2 concentration is represented by a signed integer with the least significant byte first. The CO2 is expressed in ppm.
----
[[:data_frame_format|HOME]]
==== 1.10 SPECIAL DATA ====
^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 [[#note8|Note 8]] |
__ {{anchor:note8:Note 8:}} __
\\ Data are as follow:
* 4 bytes for the date and time (as per [[#note1|Note 1]])
* 1 byte for communication status:
* Bit 0 (mask 0x01): equal to 1 is communication with the reader is OK
* Bit 4 (mask 0x04): equal to 1 if card present
If card present, data frame also contains:
* 1 byte card identifier: equal to 0x01 for ISO14443 type
* 1 byte for UID legth
* 1 byte for SAK number
* n byte for UID
**Example** \\ Sample payload: \\ 0f006caf512611010408447b8043
\\ Uplink ID: 0f \\ Type: 00 \\ \\ Date and time: 6caf5126 \\ * The date of the measurement will be: 17/02/2019 21:59:24.
Communication status: 11
* bit 0 = 1 (communication OK), bit 4 = 1 (card present)
Card identifier: 01 UID Length: 04 SAK byte: 08 UID: 447b8043
—————
[[:data_frame_format|HOME]]
=== 1.11 DIGITAL DATA ===
^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 |
| ::: |1 byte |05 |Output remaining activation time |
| ::: |1 byte |06 |Output full status |
|Data |1..33 byte |XX XX… |For input counters message refer to [[#note9|Note 9]] \\ For frequency meter message refer to [[#note10|Note 10]] \\ For output counters message refer to [[#note11|Note 11]] \\ For output remaining activation time refer to [[#note11a|Note 11a]] \\ For output full status refer to [[#note11b|Note 11b]]|
__ {{anchor:note9: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 [[#note1|Note 1]], 2 bytes LSB for counter value) and 1 byte (optional) for battery percentage.
__ {{anchor:note10: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.
__ {{anchor:note11:Note 11:}} __
Output counters: 1 bytes per output counter (inputs 1 to 8). Counter increases every ON to OFF or OFF to ON cycle.
__ {{anchor:note11a:Note 11a:}} __
Output remaining time: XX YY YY YY YY \\ XX 1 bytes for output number (n output - 1) \\ YY YY YY YY 4 bytes uLSB remaining time
__ {{anchor:note11b:Note 11b:}} __
Output full status data (15 byte):
|< 100% 15% 20% 15% - >|
^name ^size [byte] ^hex value ^meaning |
|Output number |1 byte |XX |Output number (n-1) |
|Options |1 byte (bit mask) |Bit 0 |Output status 1 = set) |
| ::: | ::: |Bit 1, 2 |00: Standard |
| ::: | ::: | ::: |02: Pulse train mode stopped |
| ::: | ::: | ::: |06: Pulse train mode running |
|Remaining pulses |1 byte |XX |Number of remaining pulses |
|Remaining time |4 byte (u32 LSB) |XX XX XX XX |Remaining time [ms] |
|ON time |4 byte (u32 LSB) |XX XX XX XX |Pulse ON time [ms] |
|OFF time |4 byte (u32 LSB) |XX XX XX XX |Pulse OFF time [ms] |
----
[[:data_frame_format|HOME]]
==== 1.12 SERIAL DATA ====
^name ^size [byte] ^ hex value ^ meaning |
|Uplink ID |1 byte |11 |Serial data |
|Data Option |2 byte (u32 LSB) |XX XX |Refer to [[#note12|Note 12]] |
|Data |0..33 byte |XX XX… |Data received, refer to [[#note12|Note 12]] |
__ {{anchor:note12:Note 12:}} __
Data Option is LSB and formatted as follow:
* Bit 0..11: index of the first byte of the current frame
* bits 12…15:
* 0x0 standard payload
* 0x8 last frame of the buffer
* 0x4 one BUFFER DOWNLINK frame missing, offset reports the expected one
* 0x2 BUFFER DOWLINK frame too big, exceeds internal buffer
* 0xE full buffer successfully saved (only after 0xC downlink type)
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
* Bit 0…11:0x000 first byte index = 0
* Bit 12…15: 0x0 standard payload
Data: \\0103F4000400010324010400010334010400010366010200010376010200010380
Uplink ID: 11 \\ Data option: 2100
* Bit 0…11:0x021 first byte index = 33
* Bit 12…15: 0x0 standard payload
Data: \\0102000103880102000103900102000103A8010200FF6604000000020301000700 \\ Uplink ID: 11 \\ Data option: 4280
* Bit 0…11:0x042 first byte index = 66
* Bit 12…15: __0x8 last frame of the buffer__
Data: 0000000000000
----
[[:data_frame_format|HOME]]
==== 1.13 LENGTH ERROR ====
^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.
----
[[:data_frame_format|HOME]]
==== 1.14 LEVEL MEASUREMENT ====
|< 100% 15% 20% 15% - >|
^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 (except EGK-LW20LTx2) |
| ::: | ::: |03 |identifying a device EGK-LW20WTxx |
| ::: | ::: |FE |identifying a device EGK-LW20LTx2 |
|Timestamp |4 byte |XX XX XX XX |See [[#note1|Note 1]] |
|Battery voltage |2 byte (u16 LSB) |XX XX |Battery voltage is an unsigned integer, least significant byte first. Unit is [mV] |
|Height |2 byte |XX XX |Height (calculated as “End –Distance”) |
|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 “End” settings on LoraTool APP). 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**. |
|Amplitude |2 byte (u16 LSB) |XX XX |Amplitude value (internal use). \\ **Only present for Type FE**. |
|Gain |2 byte (u16 LSB) |XX XX |Gain value (internal use). \\ **Only present for Type FE**. |
|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, 03 and FE**. |
|Relative Humidity |1 byte |XX |Relative humidity is an unsigned integer corresponding to twice the percentage of humidity. \\ **Only present for Type 02, 03 and FE**. |
|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, 03 and FE**. |
|Battery % |1 byte |XX |Remaining Battery percentage (if 0x65 not available) |
Frame lenght for each type:
| **Uplink ID** | **Type** | **Timestamp** | **Battery Voltage** | **Height** | **Distance** | **Battery %** |
| 0x14 | 0x00 | 4 byte | 2 byte | 2 byte | 2 byte | 1 byte |
| **Uplink ID** | **Type** | **Timestamp** | **Battery Voltage** | **Height** | **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** | **Height** | **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** | **Height** | **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 |
| **Uplink ID** | **Type** | **Timestamp** | **Battery Voltage** | **Height** | **Distance** | **Amplitude** | **Gain** |**Temp** |**Rh** | **Pressure ** | **Battery %** |
| 14 | 0xFE | 4 byte | 2 byte | 2 byte | 2 byte | 2 byte | 2 byte | 2 byte | 1 byte | 3 byte | 1 byte |
**Example**
Sample payload: \\ 1403dc7e3721b20b8518d3025ff9082d278a0163 \\ \\ 14 03 dc7e3721 b20b 8518 d302 5f f908 2d 278a01 63 \\ \\ The meaning is:
* Uplink ID 0x14
* Type 0x03. The device is a EGK-LW20WTxx
* Timestamp 0xdc7e3721
* Byte swapping result: 21 37 7e dc
* The result in bits will be: 00100001 00110111 01111110 11011100
* The bits are divided as explained above
* Year: 0010000
* Result: 16
* 2000+16 = 2016
* Month: 1001
* Result: 9
* Day: 10111
* Result: 23
* Hour: 01111
* Result: 15
* Minutes: 110110
* Result: 54
* Seconds: 11100
* Result: 28
* 28*2 = 56
The date of the measurement will be: 23/09/2016 15:54:56.
* Battery voltage 0xb20b. Byte swapping result: 0x0bb2. The result (with sign) will be 2994 mV
* Height 0x8518, Byte swapping result: 0x1885. In decimal, the result is 6277mm
* Distance 0xd302, Byte swapping result: 0x02d3. In decimal, the result is 723mm
* Fill level % 0x5f, in decimal, the result is 95%
* Temperature 0xf908, Byte swapping result: 0x08f9. In decimal, the result is 2297 with two decimal places, meaning 22.97°C
* Humidity 0x2d, in decimal the result is 45, the humidity is 45/2 = 22.5% rH.
* Pressure 0x278a01. Byte swapping, result: 018a27. In decimal, the result is 100903, with two decimal places the pressure is 1009.03 hPa.
* Battery % 0x63. In decimal, the result is 99%.
----
[[:data_frame_format|HOME]]
==== 1.15 CURRENT CONFIGURATION ====
^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 [[#note13|Note 13]] |
| ::: | ::: | ::: |For type 2 refer to [[#note14|Note 14]] |
| ::: | ::: | ::: |For type 3 refer to [[#note15|Note 15]] |
__ {{anchor:note13:Note 13:}} __
Data are as follow:
|< 100% 20% - >|
^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) |
|1 byte |rfu (only present from version 0.02.86) |
|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 thresholds high disable output |
|1 byte |**third option bit mask (0 = disable / 1 = enable):** |
| ::: |0x01 button locked |
| ::: |0x02 Davis PM enabled |
| ::: |0x04 measure on UTC |
|2 byte |Latitude in decimal degrees LSB (for MCF-LW06DAV from FW version 02.100) |
|2 byte |Longitude in decimal degrees LSB (for MCF-LW06DAV from FW version 02.100) |
|… |RFU |
__ {{anchor:note14:Note 14:}} __
Data are as follow:
* 1 byte is for thresholds enable:
* Bit 0: enable threshold high channel 1
* Bit 1: enable threshold low channel 1
* Bit 2: enable threshold high channel 2
* Bit 3: enable threshold low channel 2
* Bit 4: enable threshold high channel 3
* Bit 5: enable threshold low channel 3
* Bit 6: enable threshold high channel 4
* Bit 7: enable threshold low channel 4
* 2 bytes LSB for threshold:
* Channel 1 threshold high +
* Channel 1 threshold high -
* Channel 1 threshold low +
* Channel 1 threshold low –
* .
* .
* Channel 4 Threshold low –
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]
__ {{anchor:note15:Note 15:}} __
Data are as follow:
|< 100% 20% - >|
^size ^meaning |
|8 byte |RFU |
|2 byte |End [mm] __- from FW version 2.89__ |
|4 byte |RFU |
|1 byte |Kref |
|1 byte |Algorithm |
|2 byte (u16 LSB) |Start [mm] |
|2 byte (u16 LSB) |Lenght [mm] - __up to FW version 2.88__, otherwise RFU |
|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 |
----
[[:data_frame_format|HOME]]
==== 1.16 T/RH ====
^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 [[#note16|Note 16]]|
|Batt %|1 byte|XX|Battery percentage|
__ {{anchor:note16:Note 16:}} __
\\ The 7 bytes for each measurement are divided as follows:
* __4 bytes LSB are for the date and time__. The MSB (most significant byte) is on the right so they must be read from the right. The 4 byte in reverse order are as follows:
* 7 bit for the offset of the year, starting from the year 2000
* 4 bit per month
* 5 bit for day of the month
* 5 bits for hour
* 6 bits for minutes
* 5 bits for half the seconds. The seconds range is from 0 to 31, so the result should be multiplied by 2 to find the actual seconds of the measurement.
* __2 bytes LSB for temperature__. The temperature is represented by a signed integer with the least significant byte first. The temperature is expressed in hundreds of a °C degree.
* __1 byte for humidity__. Relative humidity is an unsigned integer corresponding to twice the percentage of humidity.
—-
[[:data_frame_format|HOME]]
==== 1.17 T/RH LOG ====
^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 [[#note16a|Note 16A]]|
__ {{anchor:note16A:Note 16A:}} __
\\ The 7 bytes for each measurement are divided as follows:
* __4 bytes LSB are for the date and time__. The MSB (most significant byte) is on the right so they must be read from the right. The 4 byte in reverse order are as follows:
* 7 bit for the offset of the year, starting from the year 2000
* 4 bit per month
* 5 bit for day of the month
* 5 bits for hour
* 6 bits for minutes
* 5 bits for half the seconds. The seconds range is from 0 to 31, so the result should be multiplied by 2 to find the actual seconds of the measurement.
* __2 bytes LSB for temperature__. The temperature is represented by a signed integer with the least significant byte first. The temperature is expressed in hundreds of a °C degree.
* __1 byte for humidity__. Relative humidity is an unsigned integer corresponding to twice the percentage of humidity.
* __1 byte battery percentage__. Battery percentage is an unsigned integer
* __1 byte for diagnostic__. Diagnostic is 1 byte, bit masked:
* bit 2: set if time sync expired - new time syncronization needed
* bit 1: set if measure successfully sent
* bit 0: set if measure sent, otherwise only logged
----
[[:data_frame_format|HOME]]
===== 2. DOWNLINK MESSAGES TO END-DEVICES =====
==== 2.1 TIME SYNC ANSWER ====
{{anchor:timesyncanswer::}}
^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 [[#note17|Note 17]] |
__ {{anchor:note17:Note 17:}} __
Date/time GMT in DOS format with epoch 2000. Sent as LSB. In bits, will be:
* 7 bits for year, starting from the year 2000
* 4 bits for month
* 5 bits for day in the month
* 5 bits for hour
* 6 bits for minutes
* 5 bits for half of seconds
**Example** \\ \\ For date 23/09/2016 15:54:56:
* Year 2016 = bit 0010000
* Month 9 = bit 1001
* Day 23 = bit 10111
* Hour 15 = bit 01111
* Minutes 54 = bit 110110
* Seconds 56 ( / 2 = 28 ) = bit 11100
The sequence in bits is "00100001001101110111111011011100", corresponding to the hexadecimal "21377edc", which will be sent as LSB: dc 7e 37 21
----
[[:data_frame_format|HOME]]
==== 2.2 UART MESSAGE ====
^name ^size [byte] ^hex value ^meaning |
|Downlink ID |1 byte |03 |Uart |
|Data |Application related |XX XX…. |Data to be forwarded, proprietary enginko protocol. |
----
[[:data_frame_format|HOME]]
==== 2.3 IO MESSAGE ====
^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 (I/O,
input counters, output counters, frequency).
**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
----
[[:data_frame_format|HOME]]
==== 2.4 SET PERIOD ====
^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) |
----
[[:data_frame_format|HOME]]
==== 2.5 METERING REQUEST ====
{{anchor:meteringrequest::}}
^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. |
----
[[:data_frame_format|HOME]]
==== 2.6 SET PRESSURE COMPENSATION ====
^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 | | |
----
[[:data_frame_format|HOME]]
==== 2.7 THRESHOLDS ====
^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 [[#note18|Note 18]] |
__ {{anchor:note18:Note 18:}} __
Data are as follow:
* 1 byte is for thresholds enable:
* Bit 0: enable threshold high channel 1
* Bit 1: enable threshold low channel 1
* Bit 2: enable threshold high channel 2
* Bit 3: enable threshold low channel 2
* Bit 4: enable threshold high channel 3
* Bit 5: enable threshold low channel 3
* Bit 6: enable threshold high channel 4
* Bit 7: enable threshold low channel 4
* 2 bytes LSB for threshold:
* Channel 1 threshold high +
* Channel 1 threshold high -
* Channel 1 threshold low +
* Channel 1 threshold low –
* .
* .
* Channel 4 Threshold low –
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]
----
[[:data_frame_format|HOME]]
==== 2.8 SERIAL DATA ====
^ name ^ size [byte] ^ hex value ^ meaning ^
| Downlink ID | 1 byte | 05 | Serial data |
| Data Option | 2 byte (u16 LSB) | XX XX | Refer to [[#note19|Note 19]] |
| Data | 0..33 byte | XX XX… | Data to send, refer to [[#note19|Note 19]] |
__ {{anchor:note19: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:
* Bit 0..11: index of the first byte of the current frame
* bits 12..15:
* 0x0 standard payload
* 0x8 last frame of the buffer
* 0xC last frame of the buffer, __data has to be saved into the enginko sensor (i.e. Modbus configuration table)__
* 0xD last frame of the buffer, __data has to be saved into the enginko sensor (i.e. time schedule table)__
* 0x4 one BUFFER DOWNLINK frame missing, offset reports the expected one
Maximum data length is 1024 bytes.
**Example** \\ \\
Sample payload: \\ \\
0500000103F4000400010324010400010334010400010366010200010376010200010380 \\
0521000102000103880102000103900102000103A8010200FF6604000000020301000700 \\
054280000000000000
* Downlink ID: 05 \\
* Data option: 0000
* Bit 0…11:0x000 first byte index = 0
* Bit 12…15: 0x0 standard payload
Data: 0103F4000400010324010400010334010400010366010200010376010200010380 \\ \\
Downlink ID: 05 \\
Data option: 2100
* Bit 0…11:0x021 first byte index = 33
* Bit 12…15: 0x0 standard payload
Data: 0102000103880102000103900102000103A8010200FF6604000000020301000700 \\ \\
Downlink ID: 05 \\
Data option: 4280
* Bit 0…11:0x042 first byte index = 66
* Bit 12…15: __0x8 last frame of the buffer__
Data: 0000000000000
----
[[:data_frame_format|HOME]]
==== 2.9 OFF COMMAND ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.10 SET ELEVATION ====
^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
----
[[:data_frame_format|HOME]]
==== 2.11 GENERAL SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.12 CO2 SENSOR SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.13 ENERGY METER SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.14 CNT OPTION ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.15 BVOC/PM SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.16 MODBUS SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.17 LOG FUNCTION ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.18 DELAY SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.19 SERIAL SETTINGS ====
^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) |
----
[[:data_frame_format|HOME]]
==== 2.20 OUTPUT SETTINGS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.21 CONFIGURATION REQUEST ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.22 ENABLE INPUT COUNTERS ====
^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 |
----
[[:data_frame_format|HOME]]
==== 2.23 ENABLE OUTPUT COUNTERS ====
^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 |0x01 = enable / 0x00 = disable |
----
[[:data_frame_format|HOME]]
==== 2.24 LEVEL SENSOR SETTINGS ====
^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 [[#note20|Note 20]] |
|Data |n byte |XX XX |Parameter dependent, refer to [[#note20|Note 20]] |
__ {{anchor:note20:Note 20:}} __
* **Start [mm]**: starting point of the measurement (in mm from “REFERENCE” point).
* Option = 1B
* Value: 2 byte (u16 LSB)
* **End [mm]**: Range of measure (in mm, from “REFERENCE” point) - __from FW version 2.89__.
* Option = 1C
* Value: 2 byte (u16 LSB)
* **Lenght [mm]**: Range of measure (in mm, from “Start” point) - __up to FW version 2.88__.
* Option = 1C
* Value: 2 byte (u16 LSB)
* **Signal threshold**: Minimum target detection threshold.
* Option = 1D
* Value: 2 byte (s16 LSB)
* **Power**: power setting for target detection.
* Option = 1E
* Value: 1 byte (values can be set from 1 to 5)
* **Sort**: data sorting.
* Option = 1F
* Value: 1 byte (values can be set from 0 to 3)
* **Algorithm:** type of analysis.
* Option = 20
* Value: 1 byte (values can be set from 0 to 255
* **Avg:** number of samples for each measure
* Option = 2D
* Value: 1 byte (values can be set from 0 to 255)
==== 2.25 IO REQUEST MESSAGE ====
(from FW version 00.02.69)
^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 |
| ::: | ::: |4x |request of the current output status and configuration, where **x**, bit 3 to 0, is output number (n-1)|
| ::: | ::: |8x |request of the current remaining activation time, where **x**, bit 3 to 0, is output number (n-1)|
==== 2.26 OUTPUT PULSE TRAIN ====
^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 |output pulses counter uplink update (0 = just at the end, 1 = update whenever possible) |
| ::: | ::: |0x40 |uplink update with new output status (0 = just at the end, 1 = update whenever possible) - alternative to 0x20|
|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) |
----
[[:data_frame_format|HOME]]
==== 2.27 CCM SETTINGS ====
{{anchor:ccmsettings::}}
^name^size [byte]^hex value^meaning|
|Downlink ID|1 byte|04|General message|
|Option|1 byte|2A|Identify a CCM REQUEST message.|
|Data|1 byte|XX|number of measures before transmission|
----
[[:data_frame_format|HOME]]
==== 2.28 CCM LOG REQUEST ====
^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 [[#note21|Note 21]] |
|Stop |5 byte |XX…XX |Stop date/time log retrieval; \\
refer to [[#note21|Note 21]] |
__ {{anchor:note21:Note 21:}} __
Start and Stop data are as follow:
* 1 byte for the offset of the year, starting from the year 2000
* 1 byte per month
* 1 byte for the day of the month
* 1 byte for hour
* 1 byte for minutes
----
[[:data_frame_format|HOME]]
==== 2.29 UTC SETTINGS ====
{{anchor:ccmsettings::}}
^name^size [byte]^hex value^meaning|
|Downlink ID|1 byte|04|General message|
|Option|1 byte|2B|Identify a UTC message.|
| ::: | ::: |XX|set (0x01) for measure with UTC time|
----
[[:data_frame_format|HOME]]
==== 2.30 GEOGRAPHICALS COORDINATES ====
{{anchor:geographical_coordinates::}}
^name ^size [byte] ^hex value ^meaning |
|Downlink ID |1 byte |04 |General message |
|Option |1 byte |30 |Identify a coordinates message (from FW version 02.100) |
|Latitude |2 byte (s16 LSB) |XX…XX |Latitude in decimal degrees |
|Longitude |2 byte (s16 LSB) |XX…XX |Longitude in decimal degrees |
----
[[:data_frame_format|HOME]]
==== 2.31 FORCE MESSAGE ====
{{anchor:force_messaget::}}
^name ^size [byte] ^hex value ^meaning |
|Downlink ID |1 byte |04 |General message |
|Option |1 byte |26 |force a new report message (from FW version 02.71) |
| ::: | ::: |27 |force a new analog measures message (from FW version 02.71) |
----
[[:data_frame_format|HOME]]
Rev. 1.36