/** Decoder **/// decode payload to stringvarstrArray=decodeToString(payload);varpayloadArray=strArray.replaceAll("\"","").replaceAll("\\\\n","").split(',');vartelemetryPayload={};for(vari=2;i<payloadArray.length;i=i+2){vartelemetryKey=payloadArray[i];vartelemetryValue=parseFloat(payloadArray[i+1]);telemetryPayload[telemetryKey]=telemetryValue;}// Result object with device attributes/telemetry datavarresult={deviceName:payloadArray[0],deviceType:payloadArray[1],telemetry:telemetryPayload,attributes:{}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to JSONvardata=decodeToJson(payload);// Result object with device/asset attributes/telemetry datavardeviceName=data.deviceName;vardeviceType=data.deviceType;varresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:data.temperature,humidity:data.humidity}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to JSONvardata=decodeToJson(payload);// Result object with device/asset attributes/telemetry datavardeviceName=data.deviceName;vardeviceType=data.deviceType;varresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:data.temperature,humidity:data.humidity}};/** Helper functions **/functiondecodeToString(payload){returnString.fromCharCode.apply(String,payload);}functiondecodeToJson(payload){// covert payload to string.varstr=decodeToString(payload);// parse string to JSONvardata=JSON.parse(str);returndata;}returnresult;
/** Decoder **/// decode payload to stringvarpayloadStr=decodeToString(payload);// decode payload to JSON// var data = decodeToJson(payload);vardeviceName=payloadStr.substring(0,6);vardeviceType=payloadStr.substring(6,13);// Result object with device/asset attributes/telemetry datavarresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:parseFloat(payloadStr.substring(13,17))}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to stringvarpayloadStr=decodeToString(payload);// decode payload to JSON// var data = decodeToJson(payload);vardeviceName=payloadStr.substring(0,6);vardeviceType=payloadStr.substring(6,13);// Result object with device/asset attributes/telemetry datavarresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:parseFloat(payloadStr.substring(13,17))}};/** Helper functions **/functiondecodeToString(payload){returnString.fromCharCode.apply(String,payload);}functiondecodeToJson(payload){// covert payload to string.varstr=decodeToString(payload);// parse string to JSONvardata=JSON.parse(str);returndata;}returnresult;
// Encode downlink data from incoming Rule Engine message// msg - JSON message payload downlink message json// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.// metadata - list of key-value pairs with additional data about the message// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter/** Encoder **/vardata={};// Process data from incoming message and metadatadata.tempFreq=msg.temperatureUploadFrequency;data.humFreq=msg.humidityUploadFrequency;data.devSerialNumber=metadata['ss_serialNumber'];// Result object with encoded downlink payloadvarresult={// downlink data content type: JSON, TEXT or BINARY (base64 format)contentType:"JSON",// downlink datadata:JSON.stringify(msg),// Optional metadata object presented in key/value formatmetadata:{topic:metadata['deviceType']+'/'+metadata['deviceName']+'/upload'}};returnresult;
// Encode downlink data from incoming Rule Engine message// msg - JSON message payload downlink message json// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.// metadata - list of key-value pairs with additional data about the message// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter/** Encoder **/vardata={};// Process data from incoming message and metadatadata.tempFreq=msg.temperatureUploadFrequency;data.humFreq=msg.humidityUploadFrequency;data.devSerialNumber=metadata['ss_serialNumber'];// Result object with encoded downlink payloadvarresult={// downlink data content type: JSON, TEXT or BINARY (base64 format)contentType:"JSON",// downlink datadata:JSON.stringify(msg),// Optional metadata object presented in key/value formatmetadata:{topic:metadata['deviceType']+'/'+metadata['deviceName']+'/upload'}};returnresult;