{
  "name": "SigFox Uplink Converter",
  "type": "UPLINK",
  "integrationType": "SIGFOX",
  "debugMode": false,
  "debugSettings": {
    "failuresEnabled": true,
    "allEnabled": false,
    "allEnabledUntil": 0
  },
  "configuration": {
    "scriptLang": "JS",
    "decoder": "/** Decoder **/\n\n// decode payload to string\nvar json = decodeToJson(payload);\nvar deviceName = 'Sigfox-' + json.device;\nvar deviceType = 'Sigfox Airwits CO2';\nvar groupName = 'UC-0023 Sigfox Airwits CO2';\n\nvar attrByte = parseInt(json.data.substring(0, 2), 16);\nvar autoCalibration = (attrByte & 0x1) === 1 ? \"on\" : \"off\";\nvar zeroPointAdjusted = ((attrByte & 0x2) >> 1) === 1 ? true : false;\nvar transmitPower = ((attrByte & 0x4) >> 2) === 1 ? \"full\" : \"low\";\nvar powerControl = ((attrByte & 0x8) >> 3) === 1 ? \"on\" : \"off\";\nvar firmwareVersion = attrByte >> 4;\n\nvar temperature = parseInt(json.data.substring(2, 6), 16) / 10 - 40;\nvar humidity = parseInt(json.data.substring(6, 8), 16);\nvar co2 = parseInt(json.data.substring(8, 12), 16);\n\nvar co2Baseline = 0;\nvar co2BaselineN = parseInt(json.data.substring(12, 14), 16);\nif (co2BaselineN === 0) {\n    co2Baseline = 400;\n} else {\n    co2Baseline = co2BaselineN * 10;\n}\n\nvar result = {\n    deviceName: deviceName,\n    deviceType: deviceType,\n    groupName: groupName,\n    telemetry: {\n        ts: json.time + \"000\",\n        values: {\n            temperature: parseFloat(temperature.toFixed(1)),\n            humidity: parseFloat(humidity),\n            co2: co2,\n            co2Baseline: co2Baseline\n        }\n    },\n    attributes: {\n        sigfox_id: json.device,\n        autoCalibration: autoCalibration,\n        zeroPointAdjusted: zeroPointAdjusted,\n        transmitPower: transmitPower,\n        powerControl: powerControl,\n        fwVersion: firmwareVersion\n    }\n};\n\n/** Helper functions **/\n\nfunction decodeToString(payload) {\n    return String.fromCharCode.apply(String, payload);\n}\n\nfunction decodeToJson(payload) {\n    var str = decodeToString(payload);\n    var data = JSON.parse(str);\n    return data;\n}\n\nreturn result;",
    "tbelDecoder": "/** Decoder **/\n\n// decode payload to string\nvar json = decodeToJson(payload);\nvar deviceName = 'Sigfox-' + json.device;\nvar deviceType = 'Sigfox Airwits CO2';\nvar groupName = 'UC-0023 Sigfox Airwits CO2';\n\nvar attrByte = parseInt(json.data.substring(0, 2), 16);\nvar autoCalibration = (attrByte & 0x1) === 1 ? \"on\" : \"off\";\nvar zeroPointAdjusted = ((attrByte & 0x2) >> 1) === 1 ? true : false;\nvar transmitPower = ((attrByte & 0x4) >> 2) === 1 ? \"full\" : \"low\";\nvar powerControl = ((attrByte & 0x8) >> 3) === 1 ? \"on\" : \"off\";\nvar firmwareVersion = attrByte >> 4;\n\nvar temperature = parseInt(json.data.substring(2, 6), 16) / 10.0 - 40;\nvar humidity = parseInt(json.data.substring(6, 8), 16);\nvar co2 = parseInt(json.data.substring(8, 12), 16);\n\nvar co2Baseline = 0;\nvar co2BaselineN = parseInt(json.data.substring(12, 14), 16);\nif (co2BaselineN === 0) {\n    co2Baseline = 400;\n} else {\n    co2Baseline = co2BaselineN * 10;\n}\n\nvar result = {\n    deviceName: deviceName,\n    deviceType: deviceType,\n    groupName: groupName,\n    telemetry: {\n        ts: json.time + \"000\",\n        values: {\n            temperature: toFixed(temperature, 1),\n            humidity: humidity,\n            co2: co2,\n            co2Baseline: co2Baseline\n        }\n    },\n    attributes: {\n        sigfox_id: json.device,\n        autoCalibration: autoCalibration,\n        zeroPointAdjusted: zeroPointAdjusted,\n        transmitPower: transmitPower,\n        powerControl: powerControl,\n        fwVersion: firmwareVersion\n    }\n};\n\n/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/\n\nreturn result;",
    "encoder": null,
    "tbelEncoder": null,
    "updateOnlyKeys": [
      "sigfoxId",
      "deviceTypeId",
      "autoCalibration",
      "zeroPointAdjusted",
      "transmitPower",
      "powerControl",
      "fwVersion"
    ]
  },
  "additionalInfo": {
    "description": ""
  },
  "edgeTemplate": false,
  "converterVersion": 1
}