Here is a partial solution to get you going....
[{"id":"fee53695.ad6798","type":"inject","z":"df8e9b9d.be8cc8","name":"fake temp sensor data 210322550A","topic":"","payload":"210322550A","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":480,"y":140,"wires":[["86c9cfb1.3a06a"]]},{"id":"1b6c1e78.352b22","type":"inject","z":"df8e9b9d.be8cc8","name":"Fake temperature sensor two 221223550A","topic":"","payload":"221223550A","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":500,"y":300,"wires":[["86c9cfb1.3a06a"]]},{"id":"86c9cfb1.3a06a","type":"function","z":"df8e9b9d.be8cc8","name":"Parse data","func":"/*\nDEMO\ntemperature sensor one is 210322550A, where 21 is the temperature sensor 1 id, 0322 are 16-bit sensor data, 550A is the ending sign, which is used to indicate the end of data. \ntemperature sensor two is 221223550A, where 22 is the temperature sensor 2 id, 1223 are 16-bit sensor data, 550A is the ending sign again. \nThe data from the acceleromter is 32462311022506550A, where 32 is the acceleromter id, \n462311022506 are the 16-bit data for x-axis, y-axis and z-axis respectively, 550A is the ending sign again.\n\n*/\nvar data = msg.payload\nvar id = data.substr(0,2)\nvar sensor = {};\nsensor.id = id;\nswitch (id) {\n case '21':\n if(data.length != 10){\n throw new Error(\"Invalid data - incorrect length\")\n }\n if(data.substr(6,4) !== \"550A\"){\n throw new Error(\"Invalid data - end marker not found\")\n }\n sensor.name = \"Sensor 1\";\n sensor.value = parseInt(data.substr(2,4),16);\n break;\n case '22':\n if(data.length != 10){\n throw new Error(\"Invalid data - incorrect length\")\n }\n if(data.substr(6,4) !== \"550A\"){\n throw new Error(\"Invalid data - end marker not found\")\n }\n sensor.name = \"Sensor 2\";\n sensor.value = parseInt(data.substr(2,4),16);\n break;\n case '32':\n if(data.length != 18){\n throw new Error(\"Invalid data - incorrect length\")\n }\n if(data.substr(14,4) !== \"550A\"){\n throw new Error(\"Invalid data - end marker not found\")\n }\n sensor.name = \"Accelerometer\";\n sensor.x = \"todo\"\n sensor.y = \"todo\"\n sensor.z = \"todo\"\n sensor.acc = \"todo\"\n break; \n default:\n // code\n}\nmsg.payload = sensor;\nreturn msg;","outputs":1,"noerr":0,"x":840,"y":220,"wires":[["b7666bc4.4912a8"]]},{"id":"61f8ea30.59a564","type":"inject","z":"df8e9b9d.be8cc8","name":"Fake accel 32462311022506550A","topic":"","payload":"32462311022506550A","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":480,"y":360,"wires":[["86c9cfb1.3a06a"]]},{"id":"1b4ede39.76e502","type":"inject","z":"df8e9b9d.be8cc8","name":"fake temp sensor bad data 210322550B","topic":"","payload":"210322550B","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":490,"y":180,"wires":[["86c9cfb1.3a06a"]]},{"id":"8bea33c2.010f7","type":"inject","z":"df8e9b9d.be8cc8","name":"fake temp sensor bad data 210322550AXX","topic":"","payload":"210322550AXX","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":500,"y":220,"wires":[["86c9cfb1.3a06a"]]},{"id":"b7666bc4.4912a8","type":"debug","z":"df8e9b9d.be8cc8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1000,"y":220,"wires":[]}]