{
  "name": "SODAQ Uplink data converter",
  "type": "UPLINK",
  "integrationType": "TMOBILE_IOT_CDP",
  "debugMode": false,
  "debugSettings": {
    "failuresEnabled": true,
    "allEnabled": false,
    "allEnabledUntil": 0
  },
  "configuration": {
    "scriptLang": "JS",
    "decoder": "// Decode an uplink message from a buffer\n// payload - array of bytes\n// metadata - key/value object\n\n/** Decoder **/\n\n// decode payload to JSON\nvar data = decodeToJson(payload);\n\nvar reports = data.reports;\nvar deviceName = data.devName;\n\n// Result object\nvar result = {\n   deviceName: {},\n   deviceType: \"tracker\",\n   telemetry: []\n};\n\nfor (var i = 0; i < reports.length; i++) {\n\n   result.deviceName = reports[i].serialNumber.replace(\"IMEI:\", \"\");\n\n   var telemetryObj = {\n       ts: {},\n       values: {}\n   };\n\n   var timestamp = stringToInt(reports[i].value.substring(32, 40)) * 1000;\n   var v = stringToInt(reports[i].value.substring(40, 42)) / 100 + 3;\n   var t = stringToInt(reports[i].value.substring(42, 44));\n   var lat = stringToInt(reports[i].value.substring(44, 52)) / 10000000;\n   var lon = stringToInt(reports[i].value.substring(52, 60)) / 10000000;\n   var alt = stringToInt(reports[i].value.substring(60, 64));\n   var speed = stringToInt(reports[i].value.substring(64, 68));\n   var sat = stringToInt(reports[i].value.substring(68, 70));\n   var ttf = stringToInt(reports[i].value.substring(70, 72));\n\n   telemetryObj.ts = timestamp;\n   telemetryObj.values.batteryVoltage = v;\n   telemetryObj.values.temperature = t;\n\n   if (lat !== 0) {\n       telemetryObj.values.latitude = lat;\n   }\n   if (lon !== 0) {\n       telemetryObj.values.longitude = lon;\n   }\n   if (alt !== 0) {\n       telemetryObj.values.altitude = alt;\n   }\n\n   telemetryObj.values.speed = speed;\n   telemetryObj.values.satellitesObserved = sat;\n   telemetryObj.values.timetToFirstFix = ttf;\n\n   result.telemetry.push(telemetryObj);\n}\n\n/** Helper functions **/\n\nfunction stringToInt(hex) {\n    return parseInt('0x' + hex.match(/../g).reverse().join(''));\n}\n\nfunction decodeToString(payload) {\n   return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n   var str = decodeToString(payload);\n   return JSON.parse(str);\n}\n\nreturn result;",
    "tbelDecoder": "",
    "encoder": null,
    "tbelEncoder": null,
    "updateOnlyKeys": [
      "manufacturer"
    ]
  },
  "additionalInfo": {
    "description": ""
  },
  "edgeTemplate": false,
  "converterVersion": 1
}