To whom it may concern:
I’ve upgraded the Setup to NodeRed and do now read the Data and post it directly to MQTT:
NodeRed M-Bus Setup
This is my Flow:
[
{
"id": "f64d3c8935a38d30",
"type": "tab",
"label": "M-Bus_to_MQTT",
"disabled": false,
"info": "",
"env": []
},
{
"id": "b8264450e270741c",
"type": "inject",
"z": "f64d3c8935a38d30",
"name": "Read ID 12 (NZR)",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "60",
"crontab": "",
"once": false,
"onceDelay": "",
"topic": "getDevice",
"payload": "{\"address\": 12}",
"payloadType": "json",
"x": 170,
"y": 100,
"wires": [
[
"935c9f4fad634959"
]
]
},
{
"id": "935c9f4fad634959",
"type": "mbus-controller",
"z": "f64d3c8935a38d30",
"name": "",
"client": "1297b765d08ed607",
"x": 390,
"y": 160,
"wires": [
[
"f24a5a799575ed83",
"b8cf0abac568a0af",
"df7f6f1c3236d6e4"
]
]
},
{
"id": "46ea21f4a57f027a",
"type": "inject",
"z": "f64d3c8935a38d30",
"name": "Read ID 14 (SBC)",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "60",
"crontab": "",
"once": false,
"onceDelay": "",
"topic": "getDevice",
"payload": "{\"address\": 14}",
"payloadType": "json",
"x": 170,
"y": 220,
"wires": [
[
"935c9f4fad634959"
]
]
},
{
"id": "b8cf0abac568a0af",
"type": "function",
"z": "f64d3c8935a38d30",
"name": "scanSecondary (SBC - PA:14)",
"func": "var myId;\nvar myMedium;\nvar myProduct;\nvar myTS;\nvar myTotal;\nvar myTotalUnit;\nvar myPower1;\nvar myPower2;\nvar myPowerUnit;\n\nmyId = msg.payload.SlaveInformation.Id;\nmyMedium = msg.payload.SlaveInformation.Medium;\nmyProduct = msg.payload.SlaveInformation.Manufacturer;\nmyTotalUnit = msg.payload.DataRecord[0].Unit;\nmyTS = msg.payload.DataRecord[0].Timestamp;\n\nmyTotal = msg.payload.DataRecord[0].Value/10\nmyPower1 = msg.payload.DataRecord[17].Value*0.01\nmyPower2 = msg.payload.DataRecord[18].Value/100\n\nif (myId == \"90003AF\") {\nmsg.payload = (\n{\"sn\": {\"Time\":myTS,\"SecondaryAddress\":myId,\"Medium\":myMedium,\"Product\":myProduct,\"MeterReading\":\n { \"total\": myTotal, \"Power_1\": myPower1, \"Power_2\": myPower2}, \"ver\":1 }}\n);\nreturn msg;\n}",
"outputs": 1,
"timeout": "5",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 240,
"wires": [
[
"64c5dbbd2c047693",
"f08ca8580eea9294"
]
]
},
{
"id": "f24a5a799575ed83",
"type": "function",
"z": "f64d3c8935a38d30",
"name": "scanSecondary (NZR - PA:12)",
"func": "var myId;\nvar myMedium;\nvar myProduct;\nvar myTS;\nvar myTotal;\nvar myTotalUnit;\nvar myPower;\nvar myPowerUnit;\n\nfunction float32ToUint16(value) {\n var buffer = new ArrayBuffer(4);\n var intView = new Uint16Array(buffer);\n var floatView = new Float32Array(buffer);\n floatView[8] = value;\n return [intView[0], intView[1]];\n}\n\nmyId = msg.payload.SlaveInformation.Id;\nmyMedium = msg.payload.SlaveInformation.Medium;\nmyProduct = msg.payload.SlaveInformation.ProductName;\nmyTotalUnit = msg.payload.DataRecord[0].Unit;\nmyTS = msg.payload.DataRecord[0].Timestamp;\n\nmyPower = msg.payload.DataRecord[4].Value\nmyTotal = msg.payload.DataRecord[0].Value/1000\n\nif (myId == \"30101282\") {\n\nmsg.payload = (\n{\"sn\": {\"Time\":myTS,\"SecondaryAddress\":myId,\"Medium\":myMedium,\"Product\":myProduct,\"MeterReading\":\n {\"total\":myTotal,\"Power_curr\":myPower}, \"ver\":1 }}\n);\nreturn msg;\n}",
"outputs": 1,
"timeout": "5",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 80,
"wires": [
[
"11d2ab5e52f4c780",
"64c5dbbd2c047693"
]
]
},
{
"id": "11d2ab5e52f4c780",
"type": "mqtt out",
"z": "f64d3c8935a38d30",
"name": "M-Bus to MQTT",
"topic": "mbus/benito/sensors",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "30951472ee910571",
"x": 1020,
"y": 100,
"wires": []
},
{
"id": "64c5dbbd2c047693",
"type": "debug",
"z": "f64d3c8935a38d30",
"name": "debug 5",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1060,
"y": 160,
"wires": []
},
{
"id": "f08ca8580eea9294",
"type": "mqtt out",
"z": "f64d3c8935a38d30",
"name": "M-Bus to MQTT",
"topic": "mbus/apartment/sensors",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "30951472ee910571",
"x": 1020,
"y": 220,
"wires": []
},
{
"id": "df7f6f1c3236d6e4",
"type": "debug",
"z": "f64d3c8935a38d30",
"name": "debug 6",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 650,
"y": 160,
"wires": []
},
{
"id": "1297b765d08ed607",
"type": "mbus-client",
"name": "PiiGAB-Appartment",
"clienttype": "tcp",
"tcpHost": "10.10.190.62",
"tcpPort": "10001",
"tcpTimeout": "4000",
"serialPort": "/dev/ttyUSB",
"serialBaudrate": "2400",
"reconnectTimeout": "10000",
"autoScan": true,
"storeDevices": true,
"disableLogs": true
},
{
"id": "30951472ee910571",
"type": "mqtt-broker",
"name": "mbus@Pi8",
"broker": "10.10.150.8",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"autoUnsubscribe": true,
"birthTopic": "",
"birthQos": "0",
"birthRetain": "false",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closeRetain": "false",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willRetain": "false",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]
For this to work you need to have this installed on your nodered
Integration in HA is over in this thread.