-
Notifications
You must be signed in to change notification settings - Fork 2
/
ve-direct-to-json.json
1 lines (1 loc) · 1.97 KB
/
ve-direct-to-json.json
1
[{"id":"536427ca.a24558","type":"function","z":"cfc584b8.25f908","name":"VE.Direct to JSON","func":"// name: VE.Direct to JSON\n// outputs: 1\n// inputs: 1 serial node, split input \"on the character\" \"\\n\"\n// and deliver \"binary buffers\"\n\nvar block = context.get('block') || \"{\";\nvar checksum = context.get('checksum') || 0;\n\nvar fieldBuffer = msg.payload;\nvar fieldLenght = fieldBuffer.length;\n\nvar field = fieldBuffer.toString();\nfield = field.replace(/\\r?\\n?/g, '');\nfield = field.split(\"\\t\");\n\n// Drop null fields\nif (field[0] === \"\") {\n// node.warn(\"NULL field dropped!\");\n return null;\n}\n\nif (field[0] === \"OR\") {\n field[1] = parseFloat((field[1]).substr(7));\n}\n\n// Remove HEX messages and add CR+LF for checksum\nif (field[0] == \"Checksum\" && field[1].length > 1) {\n fieldLenght = 12;\n fieldBuffer[10] = 0xd;\n fieldBuffer[11] = 0xa;\n// node.warn(\"HEX message stripped!\");\n}\n\nfor (var i = 0; i < fieldLenght; i++) {\n checksum -= fieldBuffer[i];\n}\n\nchecksum = checksum & 0xff;\n\nif (field[0] == \"Checksum\") {\n\n context.set('checksum', null);\n context.set('block', null);\n\n if (checksum === 0) {\n block = block += \"}\";\n msg.payload = JSON.parse(block);\n return msg;\n } else {\n// node.warn('Checksum failed!')\n return null;\n }\n}\n\nif (block.length > 1) {\n block = block += \",\";\n}\n\nblock = block += \"\\\"\" + field[0] + \"\\\"\" + \":\";\n\n// PID and FW values detected incorrectly as number\nvar isANumber = isNaN(field[1]) === false;\nif (isANumber && (field[0] !== \"PID\") && (field[0] !== \"FW\")) {\n// block = block += \"\\\"\" + field[1] + \"\\\"\";\n block = block += field[1];\n} else {\n// block = block += field[1];\n block = block += \"\\\"\" + field[1] + \"\\\"\";\n}\n\ncontext.set('checksum', checksum);\ncontext.set('block', block);\n","outputs":1,"noerr":0,"x":670,"y":120,"wires":[["36a72600.c71e7a","68bafe4b.80293"]]}]