...
Code Block | ||
---|---|---|
| ||
// Decode uplink function. // // Input is an object with the following fields: // - bytes = Byte array containing the uplink payload, e.g. [255, 230, 255, 0] // - fPort = Uplink fPort. // - variables = Object containing the configured device variables. // // Output must be an object with the following fields: // - output = Object representing the decoded payload. function decodeUplink(input) { return { data: Decode(input.fPort, input.bytes, input.variables) }; } function decode_port_1(input) { var output = { Current_Valve_Position: input[0], Flow_Sensor_Raw: input[1] * 0.5, Flow_Temperature: input[2] * 0.5, Ambient_Sensor_Raw: input[3] * 0.25, Ambient_Temperature: input[4] * 0.25, Temperature_Drop_Detection: input[5] >> 7 & 0x01, Energy_Storage: input[5] >> 6 & 0x01, Harvesting_Active: input[5] >> 5 & 0x01, Ambient_Sensor_Failure: input[5] >> 4 & 0x01, Flow_Sensor_Failure: input[5] >> 3 & 0x01, Radio_Communication_Error: input[5] >> 2 & 0x01, Received_Signal_Strength: input[5] >> 1 & 0x01, Motor_Error: input[5] >> 0 & 0x01, Storage_Voltage: Number((input[6] * 0.02).toFixed(2)), Average_Current_Consumed: input[7] * 10, Average_Current_Generated: input[8] * 10, Operating_Condition: input[9] >> 7 & 0x01, Storage_Fully_Charged: input[9] >> 6 & 0x01, Zero_Error: input[9] >> 5 & 0x01, Calibration_OK: input[9] >> 4 & 0x01, } var um = input[9] & 0x07; var uv = (um === 0) ? input[10] : input[10] * 0.5; output.User_Mode = um; output.User_Value = uv; if (input.length == 12) { utmp = input[11] * 0.25; output.Used_Temperature = utmp; } return output; } function Decode(fPort, bytes) { var output = {}; switch (fPort) { case 1: output = decode_port_1(bytes); break; default: return { errors: ['unknown FPort'], }; } return output; } |
Downlink Encoder
...
language | js |
---|