Given up!
Written a simple flow in NodeRed that forwards the messages on just fine.
[{"id":"a0e7c229.c1b2","type":"serial in","z":"c20914f0.8b8318","name":"MySensorsInput","serial":"4ba29f87.c500a","x":100,"y":68,"wires":[["c275b371.0a92a"]]},{"id":"2c003b62.b3ca04","type":"debug","z":"c20914f0.8b8318","name":"","active":true,"console":"false","complete":"true","x":976,"y":57,"wires":[]},{"id":"c275b371.0a92a","type":"function","z":"c20914f0.8b8318","name":"Decode Message","func":"var message = msg.payload;\nvar result = message.split(\";\");\nvar arrlength = result.length;\n\nmsg.payload = {};\n\nif(arrlength==6){\nmsg.payload.nodeid = result[0];\nmsg.payload.childid = result[1];\nmsg.payload.command = result[2];\nmsg.payload.ack = result[3];\nmsg.payload.type = result[4];\nmsg.payload.payload = result[5];\n} else {\n msg.payload = \"Ignore\";\n}\n\n\n//1;1;1;0;39;8.8\n\n//1;;1;0;38;3.6\n\nreturn msg;","outputs":1,"noerr":0,"x":324,"y":68,"wires":[["5e07aa77.6b3884"]]},{"id":"5e07aa77.6b3884","type":"switch","z":"c20914f0.8b8318","name":"Filter Update Messages","property":"payload.command","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","outputs":1,"x":581,"y":68,"wires":[["764204f4.fe8bdc"]]},{"id":"a9be705b.07cec","type":"mqtt out","z":"c20914f0.8b8318","name":"","topic":"","qos":"","retain":"","broker":"9ccc9e2b.1b109","x":1018,"y":157,"wires":[]},{"id":"764204f4.fe8bdc","type":"function","z":"c20914f0.8b8318","name":"Format MQTT Message","func":"var nodeid = msg.payload.nodeid;\nvar type = msg.payload.type;\nvar value = msg.payload.payload;\n\nmsg.payload = {}\n\nmsg.topic = \"haas/mySensors/\"+ nodeid +\"/\" + type;\nmsg.payload.string = value;\n\nreturn msg;","outputs":1,"noerr":0,"x":785,"y":157,"wires":[["a9be705b.07cec","2c003b62.b3ca04"]]},{"id":"4ba29f87.c500a","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","newline":"\\n","bin":"false","out":"char","addchar":false},{"id":"9ccc9e2b.1b109","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]
This sends updates to a couple of MQTT sensors set up in my config.
sensor:
- platform: mqtt
name: "Charger Current"
state_topic: "haas/mySensors/1/39"
value_template: '{{ value_json.string }}'
unit_of_measurement: 'a'
- platform: mqtt
name: "Charger Voltage"
state_topic: "haas/mySensors/1/38"
value_template: '{{ value_json.string }}'
unit_of_measurement: 'V'
Not sure if there's a better value template than string? Couldn't find any detail on what options there were..