Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
// 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 >> 7 & 0x01,
 
    Energy_Storage: input[5]>>6 >> 6 & 0x01,
 
    Harvesting_Active: input[5]>>5 >> 5 & 0x01,

     Ambient_Sensor_Failure: input[5]>>4 >> 4 & 0x01,
 
    Flow_Sensor_Failure: input[5]>>3 >> 3 & 0x01,
 
    Radio_Communication_Error: input[5]>>2 >> 2 & 0x01,

     Received_Signal_Strength: input[5]>>1 >> 1 & 0x01,
 
    Motor_Error: input[5]>>0 >> 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 >> 7 & 0x01,

     Storage_Fully_Charged: input[9]>>6 >> 6 & 0x01,
 
    Zero_Error: input[9]>>5 >> 5 & 0x01,
 
    Calibration_OK: input[9]>>4 >> 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

Code Block
languagejs

...