[
    {
        "id": "b65830cfcbff22cd",
        "type": "inject",
        "z": "65e0f10c00ab26af",
        "name": "Start",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"username\":\"node-red\",\"password\":\"Sweden2022\"}",
        "payloadType": "json",
        "x": 110,
        "y": 1620,
        "wires": [
            [
                "48f074d05b8a78c0"
            ]
        ]
    },
    {
        "id": "48f074d05b8a78c0",
        "type": "function",
        "z": "65e0f10c00ab26af",
        "name": "Stringify",
        "func": "global._ = _;\n\n// Create input to Yggio Translator API in Swagger\nconst translator = {\n  \"name\": \"my-first-translator\",\n  \"version\": \"0.0.1\",\n  \"apiVersion\": \"1.0\",\n  \"description\": \"My first translator description.\",\n  \"match\": {\n    \"deviceModelName\": \"if hardware translator enter model here, otherwise leave blank\"\n  },\n  \"spec\": {\n    \"signalStrength\": \"number\",\n    \"log\": \"object\",\n  },\n  \"code\": toSwagger.toString()\n  }\n\nconsole.log(\"Code start------\");\nconsole.log(JSON.stringify(translator));\nconsole.log(\"--------------------\");\nreturn msg;\n\nfunction toSwagger(iotnode) {\n  \n  // Paste the translator code here. After injecting once get the input to Swagger from the console log.\n  function translate(iotnode) {\n    // My translator code\n    function translate(iotnode) {\n      // Get input data\n      const rssi = _.get(iotnode, 'rssi');\n      const snr = _.get(iotnode, 'snr');\n      const log = _.get(iotnode, 'log');\n      let result = {};\n\n      // Calculate signal strength\n      if (rssi != undefined && snr != undefined) {\n        result = {\n          'signalStrength': snr < 0 ? rssi + snr : rssi\n        }\n        if (log != undefined && log.message != '')\n          result = {\n            ...result,\n            'log': {\n              'message': '',\n              'type': '',\n              'priority': '',\n              'category': ''\n            }\n          }\n      }\n      else if (log == undefined || log.message == '')\n        result = {\n          'log': {\n            'message': 'Expected field rssi or snr missing',\n            'type': 'Error',\n            'priority': 'Low',\n            'category': 'Status'\n          }\n        }\n      return {\n        result\n      };\n    }\n\n  }\n\n\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  ",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [
            {
                "var": "_",
                "module": "lodash"
            }
        ],
        "x": 260,
        "y": 1620,
        "wires": [
            [
                "93a7573c5da76f26"
            ]
        ]
    },
    {
        "id": "93a7573c5da76f26",
        "type": "debug",
        "z": "65e0f10c00ab26af",
        "name": "To Swagger",
        "active": false,
        "tosidebar": true,
        "console": true,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 540,
        "y": 1620,
        "wires": []
    },
    {
        "id": "8c3a19c0c8df5240",
        "type": "function",
        "z": "65e0f10c00ab26af",
        "name": "Simulate input data",
        "func": "\nlet temp = {\n  // Some type of input data\n // \"rssi\"      : -87,\n  \"snr\": -87\n};\n\nmsg.payload = temp;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "// Code added here will be run once\n// whenever the node is star",
        "finalize": "",
        "libs": [],
        "x": 290,
        "y": 1660,
        "wires": [
            [
                "24919fb527930fea"
            ]
        ]
    },
    {
        "id": "24919fb527930fea",
        "type": "function",
        "z": "65e0f10c00ab26af",
        "name": "My first translator",
        "func": "// See setup for Node-Red equivalent to: import _ from 'lodash';\nglobal._ = _;\nmsg.payload = translate(msg.payload);\nreturn msg;\n\n// My first translator\nfunction translate(iotnode) {\n    // Get input data\n    const rssi =  _.get(iotnode, 'rssi');\n    const snr = _.get(iotnode, 'snr');\n    const log = _.get(iotnode, 'log');\n    let result = {};\n\n    // Calculate signal strength\n    if (rssi != undefined && snr != undefined)\n    {\n      result = {\n        'signalStrength' : snr < 0 ? rssi + snr : rssi\n      }\n      if (log != undefined && log.message != '')\n        result = {\n          ...result,\n          'log': {\n            'message': '',\n            'type': '',\n            'priority': '',\n            'category': ''\n          }\n        }\n    }\n    else if (log == undefined || log.message == '')\n      result = {\n        'log': {\n          'message': 'Expected field rssi or snr missing',\n          'type': 'Error',\n          'priority': 'Low',\n          'category': 'Status'\n          }\n      }\n    return {\n      result\n    };\n  }\n  \n  // Save the latest translator uploaded to Yggio for reference \n  /*\n    \"name\": \"my-first-translator\",\n  \"version\": \"0.0.1\",\n  \"apiVersion\": \"1.0\",\n  \"description\": \"My first translator description.\",\n  \"match\": {\n    \"deviceModelName\": \"if hardware translator enter model here, otherwise leave blank\"\n  },\n  \"spec\": {\n    \"signalStrength\": \"number\",\n    \"log\": \"object\"\n  },\n  \"code\": \":\"function translate(iotnode) {\\n    // My translator code\\n    function translate(iotnode) {\\n      // Get input data\\n      const rssi = _.get(iotnode, 'rssi');\\n      const snr = _.get(iotnode, 'snr');\\n      const log = _.get(iotnode, 'log');\\n      let result = {};\\n\\n      // Calculate signal strength\\n      if (rssi != undefined && snr != undefined) {\\n        result = {\\n          'signalStrength': snr < 0 ? rssi + snr : rssi\\n        }\\n        if (log != undefined && log.message != '')\\n          result = {\\n            ...result,\\n            'log': {\\n              'message': '',\\n              'type': '',\\n              'priority': '',\\n              'category': ''\\n            }\\n          }\\n      }\\n      else if (log == undefined || log.message == '')\\n        result = {\\n          'log': {\\n            'message': 'Expected field rssi or snr missing',\\n            'type': 'Error',\\n            'priority': 'Low',\\n            'category': 'Status'\\n          }\\n        }\\n      return {\\n        result\\n      };\\n    }\"\n  }\n  */\n  \n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [
            {
                "var": "_",
                "module": "lodash"
            }
        ],
        "x": 550,
        "y": 1660,
        "wires": [
            [
                "ac7949e3d51e655b"
            ]
        ]
    },
    {
        "id": "2af545ed880a690c",
        "type": "inject",
        "z": "65e0f10c00ab26af",
        "name": "Start",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"username\":\"node-red\",\"password\":\"Sweden2022\"}",
        "payloadType": "json",
        "x": 110,
        "y": 1660,
        "wires": [
            [
                "8c3a19c0c8df5240"
            ]
        ]
    },
    {
        "id": "ac7949e3d51e655b",
        "type": "debug",
        "z": "65e0f10c00ab26af",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 810,
        "y": 1660,
        "wires": []
    }
]