Configuration avec communication radio en LoRa:
{ "rtc_type": "am1805", "time_between_measures_s": 600, "number_measures_before_write_sd": 18, "number_writes_in_interval_file": 8, "lora_active": true }
Configuration sans communication radio:
{ "rtc_type" : "am1805", "time_between_measures_s" : 600, "number_measures_before_write_sd" : 18, "number_writes_in_interval_file" : 8, "lora_active" : false }
The function used to parse the bytes transmitted in LoRaWAN
// Decode decodes an array of bytes into an object. // - fPort contains the LoRaWAN fPort number // - bytes is an array of bytes, e.g. [225, 230, 255, 0] // The function must return an object, e.g. {"temperature": 22.5} var TEMP_BYTE_0_IDX = 0; var TEMP_BYTE_1_IDX = 1; var RH_BYTE_0_IDX = 2; var RH_BYTE_1_IDX = 3; var VOLT_BYTE_0_IDX = 4; var LORA_MIN_BATT_VAL = 1; var LORA_MAX_BATT_VAL = 254; var LORA_BATT_RANGE = LORA_MAX_BATT_VAL - LORA_MIN_BATT_VAL; var LORA_BATT_ERROR = 255; var BATT_VOLTAGE_LOW = 3.0; var BATT_VOLTAGE_HIGH = 4.2; function Decode(fPort, bytes) { var temperature_code = 0; var humidity_code = 0; var temperature = 0.0; var humidity = 0.0; var voltage_code = 0; var voltage = 0.0 temperature_code = (bytes[TEMP_BYTE_0_IDX] << 8 ) + bytes[TEMP_BYTE_1_IDX]; humidity_code = (bytes[RH_BYTE_0_IDX] << 8 ) + bytes[RH_BYTE_1_IDX]; voltage_code = bytes[VOLT_BYTE_0_IDX]; temperature = ((175.72 * temperature_code) / 65536.0) - 46.85; humidity = ((125.0 * humidity_code) / 65536.0) - 6.0; var data = {}; if (voltage_code != LORA_BATT_ERROR) { voltage = (((voltage_code - LORA_MIN_BATT_VAL) * (BATT_VOLTAGE_HIGH - BATT_VOLTAGE_LOW))/LORA_BATT_RANGE) + BATT_VOLTAGE_LOW; data = { "temperature": temperature, "humidity": humidity, "voltage" : voltage, "raw": bytes, }; } else { data = { "temperature": temperature, "humidity": humidity, "raw": bytes, }; } return data; }