Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Controllers
  3. Node-RED
  4. new node-red-contrib-mysensors out

new node-red-contrib-mysensors out

Scheduled Pinned Locked Moved Node-RED
2 Posts 1 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • tbowmoT Offline
    tbowmoT Offline
    tbowmo
    Admin
    wrote on last edited by
    #1

    I have worked on the node-red modules for mysensors. And have now released version 1.0.2

    It now have the possibility to encode into mysensors compatible mqtt topics, the mysdecenc is also split into two separate nodes now called encode / decode. The old mysdecenc is kept for now, for compatibility reasons, but it will be removed in the future.

    Also thanks to @gn0st1c for a couple of pull requests, updating the sensor value list to mysensors 2.x, among other things

    the nodes can as always be found here https://www.npmjs.com/package/node-red-contrib-mysensors / https://github.com/tbowmo/node-red-contrib-mysensors

    1 Reply Last reply
    4
    • tbowmoT Offline
      tbowmoT Offline
      tbowmo
      Admin
      wrote on last edited by tbowmo
      #2

      As an example, of using the mysensors nodes, here is my current "main" flow, converting mysensors serial protocol to / from MQTT..

      The goal is to switch domoticz to run with mqtt at some point in time, and then skip the domoticz <-> mqtt transformation steps. Or even skip domoticz completely, as I only use it for some automation scripts in LUA. All graphing etc. is handled by influxdb / grafana instead. But right now I am leaving domoticz untouched to keep the WAF as high as possible :)

      [
          {
              "id": "2257718.fdda88e",
              "type": "subflow",
              "name": "Energy meter",
              "info": "Converts input from arduino sketch, to a \nMysensors compatible protocol format, usable\nfor injecting into the message stream from\nnormal Mysensors nodes\n\nOutputs data as nodeId 99.",
              "in": [],
              "out": [
                  {
                      "x": 1320,
                      "y": 220,
                      "wires": [
                          {
                              "id": "11f1e54.721221b",
                              "port": 0
                          },
                          {
                              "id": "f9b89df5.06476",
                              "port": 0
                          },
                          {
                              "id": "1dcfb48.fe2304c",
                              "port": 0
                          },
                          {
                              "id": "f8477377.66ad",
                              "port": 0
                          },
                          {
                              "id": "985078ce.c384e8",
                              "port": 0
                          }
                      ]
                  }
              ]
          },
          {
              "id": "12db17ce.ed24e8",
              "type": "serial in",
              "z": "2257718.fdda88e",
              "name": "Meter input",
              "serial": "acfe3226.5301d",
              "x": 160,
              "y": 200,
              "wires": [
                  [
                      "e56f30b7.1a90d"
                  ]
              ]
          },
          {
              "id": "1dcfb48.fe2304c",
              "type": "mysencap",
              "z": "2257718.fdda88e",
              "name": "",
              "nodeid": "99",
              "childid": "1",
              "subtype": "17",
              "internal": "0",
              "ack": false,
              "msgtype": "1",
              "presentation": false,
              "presentationtype": "13",
              "presentationtext": "Watt",
              "fullpresentation": false,
              "firmwarename": "",
              "firmwareversion": "",
              "x": 620,
              "y": 160,
              "wires": [
                  []
              ]
          },
          {
              "id": "f9b89df5.06476",
              "type": "mysencap",
              "z": "2257718.fdda88e",
              "name": "V_KWH node 99",
              "nodeid": "99",
              "childid": "1",
              "subtype": "18",
              "internal": "0",
              "ack": false,
              "msgtype": "1",
              "presentation": true,
              "presentationtype": "13",
              "presentationtext": "Kwh",
              "fullpresentation": true,
              "firmwarename": "MeterNode",
              "firmwareversion": "0.1",
              "x": 570,
              "y": 200,
              "wires": [
                  []
              ]
          },
          {
              "id": "e56f30b7.1a90d",
              "type": "function",
              "z": "2257718.fdda88e",
              "name": "Split meter data",
              "func": "var m=msg.payload.split(';');\n// Filtering away unrealistic high usage above 50KW\nif (Number(m[0]) < 50000) {\n    var msg1 = {payload:m[0]};\n    var msg2 = {payload:m[1]/1000};\n    var msg3 = {payload:m[1]};\n    return [msg1, msg2, msg3];\n}\n",
              "outputs": "3",
              "noerr": 0,
              "x": 340,
              "y": 200,
              "wires": [
                  [
                      "1dcfb48.fe2304c"
                  ],
                  [
                      "f9b89df5.06476"
                  ],
                  [
                      "dfd92894.2026d8",
                      "11f1e54.721221b"
                  ]
              ]
          },
          {
              "id": "dfd92894.2026d8",
              "type": "file",
              "z": "2257718.fdda88e",
              "name": "meter counter output to file",
              "filename": "/var/tmp/meascache.txt",
              "appendNewline": true,
              "createDir": false,
              "overwriteFile": "true",
              "x": 480,
              "y": 300,
              "wires": []
          },
          {
              "id": "11f1e54.721221b",
              "type": "mysencap",
              "z": "2257718.fdda88e",
              "name": "",
              "nodeid": "99",
              "childid": "10",
              "subtype": "24",
              "internal": 0,
              "ack": false,
              "msgtype": "1",
              "presentation": false,
              "presentationtype": 0,
              "presentationtext": "",
              "fullpresentation": false,
              "firmwarename": "",
              "firmwareversion": "",
              "x": 630,
              "y": 240,
              "wires": [
                  [
                      "985078ce.c384e8"
                  ]
              ]
          },
          {
              "id": "985078ce.c384e8",
              "type": "function",
              "z": "2257718.fdda88e",
              "name": "Watt/Hour calculator",
              "func": "/* Takes input on subType 24, calculates difference\n   from last time, if around 60 seconds have passed\n   since last report.\n   It passes the value on as subType 17, and\n   childSensorId 2 */\n   \nif ((Number(msg.subType)===24) && (Number(msg.nodeId)===99)) {\n    var uTime = Math.floor(Date.now()/60000);\n    var lastTime = context.get('lastTime')||0;\n    if (lastTime === 0) {\n        context.set('lastTime', uTime);\n        context.set('lastCount', Number(msg.payload));\n    } else {\n        if (uTime != lastTime) {\n            lastCount = context.get('lastCount');\n            currentCount = Number(msg.payload);\n            context.set('lastTime', uTime);\n            context.set('lastCount', currentCount)\n            msg.subType = 17;\n            msg.childSensorId = \"2\";\n            msg.payload = currentCount - lastCount;\n            return msg;\n        }\n    }\n}",
              "outputs": 1,
              "noerr": 0,
              "x": 920,
              "y": 280,
              "wires": [
                  [
                      "693564ba.928f4c"
                  ]
              ]
          },
          {
              "id": "f8477377.66ad",
              "type": "change",
              "z": "2257718.fdda88e",
              "name": "",
              "rules": [
                  {
                      "t": "set",
                      "p": "payload",
                      "pt": "msg",
                      "to": "payload[0].sum",
                      "tot": "msg"
                  },
                  {
                      "t": "set",
                      "p": "subType",
                      "pt": "msg",
                      "to": "25",
                      "tot": "num"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 1200,
              "y": 40,
              "wires": [
                  []
              ]
          },
          {
              "id": "693564ba.928f4c",
              "type": "function",
              "z": "2257718.fdda88e",
              "name": "create query",
              "func": "if (msg.nodeId == 99 & msg.subType==17) {\nvar d = new Date();\nd.setHours(0,0,0,0);\nmsg.time = (1 * d.getTime())/1000;\nmsg.time = d.toISOString(); //ISODateString(d);\nmsg.query = \"select sum(value) from electricity where node='99' and sensor='2' and time>'\"+msg.time+\"'\"; //+msg.time;\nreturn msg;\n}\n",
              "outputs": 1,
              "noerr": 0,
              "x": 850,
              "y": 40,
              "wires": [
                  [
                      "fe2ccdc0.ecce8"
                  ]
              ]
          },
          {
              "id": "fe2ccdc0.ecce8",
              "type": "influxdb in",
              "z": "2257718.fdda88e",
              "influxdb": "9d8c74dc.570ca8",
              "name": "influx lookup",
              "query": "",
              "rawOutput": false,
              "precision": "",
              "retentionPolicy": "",
              "x": 1030,
              "y": 40,
              "wires": [
                  [
                      "f8477377.66ad"
                  ]
              ]
          },
          {
              "id": "acfe3226.5301d",
              "type": "serial-port",
              "z": "",
              "serialport": "/dev/ttyUTILITY",
              "serialbaud": "115200",
              "databits": "8",
              "parity": "none",
              "stopbits": "1",
              "newline": "\\n",
              "bin": "false",
              "out": "char",
              "addchar": true
          },
          {
              "id": "9d8c74dc.570ca8",
              "type": "influxdb",
              "z": "",
              "hostname": "influxdb",
              "port": "8086",
              "protocol": "http",
              "database": "utility",
              "name": "",
              "usetls": false,
              "tls": ""
          },
          {
              "id": "9b272654.9ad688",
              "type": "subflow",
              "name": "Influx processing",
              "info": "",
              "in": [
                  {
                      "x": 220,
                      "y": 280,
                      "wires": [
                          {
                              "id": "55204322.aadfbc"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 580,
                      "y": 240,
                      "wires": [
                          {
                              "id": "55204322.aadfbc",
                              "port": 2
                          }
                      ]
                  }
              ]
          },
          {
              "id": "55204322.aadfbc",
              "type": "function",
              "z": "9b272654.9ad688",
              "name": "Influx conditioner",
              "func": "msg_env = null;\nmsg_utility = null;\nmsg_debug = null;\nst = msg.subType;\nif (msg.messageType == 1 && (st === 0 || st == 1 || st == 2 || st == 4 || st == 17)) {\n    var tags = {};var data = {}\n    tags.node = msg.nodeId.toString();\n    tags.sensor = msg.childSensorId.toString();\n    data.value=parseFloat(msg.payload);\n    switch (st) {\n        case 0 : type = \"temperature\";break;\n        case 1 : type = \"humidity\"; break;\n        case 2 : type = \"status\"; break;\n        case 4 : type = \"barometer\"; break;\n        case 17: type = \"electricity\"; break;\n    }\n    msg.payload = [data, tags];\n    msg.measurement = type;\n    msg_debug = msg;\n    if (msg.subType==17) \n        msg_utility = msg;\n    else \n        msg_env = msg;\n} \nelse \n    msg = null;\nreturn [msg_debug, msg_env, msg_utility];",
              "outputs": "3",
              "noerr": 0,
              "x": 410,
              "y": 280,
              "wires": [
                  [],
                  [
                      "c042117a.3fbdf"
                  ],
                  [
                      "f6bdc7dc.77c758"
                  ]
              ]
          },
          {
              "id": "c042117a.3fbdf",
              "type": "influxdb out",
              "z": "9b272654.9ad688",
              "influxdb": "a2b7673f.603a98",
              "name": "",
              "measurement": "",
              "precision": "",
              "retentionPolicy": "",
              "x": 630,
              "y": 280,
              "wires": []
          },
          {
              "id": "f6bdc7dc.77c758",
              "type": "influxdb out",
              "z": "9b272654.9ad688",
              "influxdb": "c4892f23.817cc",
              "name": "Utility",
              "measurement": "",
              "precision": "",
              "retentionPolicy": "",
              "x": 610,
              "y": 320,
              "wires": []
          },
          {
              "id": "a2b7673f.603a98",
              "type": "influxdb",
              "z": "9b272654.9ad688",
              "hostname": "influxdb",
              "port": "8086",
              "protocol": "http",
              "database": "environment",
              "name": "environment",
              "usetls": false,
              "tls": ""
          },
          {
              "id": "c4892f23.817cc",
              "type": "influxdb",
              "z": "9b272654.9ad688",
              "hostname": "influxdb",
              "port": "8086",
              "protocol": "http",
              "database": "utility",
              "name": "utility",
              "usetls": false,
              "tls": ""
          },
          {
              "id": "4c13992e.b3ec68",
              "type": "subflow",
              "name": "Logging filter",
              "in": [
                  {
                      "x": 105.5,
                      "y": 240,
                      "wires": [
                          {
                              "id": "b57b1f3.f4a84e"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 600,
                      "y": 260,
                      "wires": [
                          {
                              "id": "b57b1f3.f4a84e",
                              "port": 1
                          }
                      ]
                  }
              ]
          },
          {
              "id": "b57b1f3.f4a84e",
              "type": "function",
              "z": "4c13992e.b3ec68",
              "name": "Filter battery msg",
              "func": "var battMsg = null;\nvar debugMsg = null;\nvar sketchMsg = null;\nif (msg.messageType==3) {\n    if (msg.subType===0)\n        battMsg = msg;\n    if (msg.subType==9)\n        debugMsg = msg;\n    if (msg.subType==11 || msg.subType==12)\n        sketchMsg = msg;\n}\n\nreturn [battMsg, debugMsg, sketchMsg];",
              "outputs": "3",
              "noerr": 0,
              "x": 430,
              "y": 240,
              "wires": [
                  [
                      "d8b91167.2746f",
                      "de0acbaf.dce4e8"
                  ],
                  [],
                  [
                      "cdd7f2cc.7bf58"
                  ]
              ]
          },
          {
              "id": "38f9ab87.c70654",
              "type": "file",
              "z": "4c13992e.b3ec68",
              "name": "Battery log",
              "filename": "/var/tmp/battlog.txt",
              "appendNewline": false,
              "createDir": false,
              "overwriteFile": "false",
              "x": 1050,
              "y": 180,
              "wires": []
          },
          {
              "id": "1b4decbb.e4b213",
              "type": "function",
              "z": "4c13992e.b3ec68",
              "name": "inject date",
              "func": "var date = new Date();\nvar str = date.getFullYear() + \"-\" + (date.getMonth() + 1) + \"-\" + date.getDate() + \" \" +  date.getHours() + \":\" + date.getMinutes() + \":\" + date.getSeconds();\nmsg.payload = str + \" - \" + msg.payload;\nreturn msg;",
              "outputs": 1,
              "noerr": 0,
              "x": 830,
              "y": 180,
              "wires": [
                  [
                      "38f9ab87.c70654"
                  ]
              ]
          },
          {
              "id": "d8b91167.2746f",
              "type": "function",
              "z": "4c13992e.b3ec68",
              "name": "Check batt level",
              "func": "var date = new Date();\nvar str = date.getFullYear() + \"-\" + (date.getMonth() + 1) + \"-\" + date.getDate() + \" \" +  date.getHours() + \":\" + date.getMinutes() + \":\" + date.getSeconds();\nmsg.date = str;\nif (parseInt(msg.payload)<5)\nreturn msg;",
              "outputs": 1,
              "noerr": 0,
              "x": 660,
              "y": 220,
              "wires": [
                  [
                      "c44e1c28.3bb1e"
                  ]
              ]
          },
          {
              "id": "c44e1c28.3bb1e",
              "type": "template",
              "z": "4c13992e.b3ec68",
              "name": "BatLow message",
              "field": "payload",
              "fieldType": "msg",
              "format": "handlebars",
              "syntax": "mustache",
              "template": "{{date}} - Battery level is low on node {{nodeId}} : {{payload}} !",
              "x": 850,
              "y": 220,
              "wires": [
                  [
                      "e9231639.16dce8"
                  ]
              ]
          },
          {
              "id": "e9231639.16dce8",
              "type": "twitter out",
              "z": "4c13992e.b3ec68",
              "twitter": "",
              "name": "Tweet",
              "x": 1030,
              "y": 220,
              "wires": []
          },
          {
              "id": "b478903e.4b877",
              "type": "file",
              "z": "4c13992e.b3ec68",
              "name": "Presentation log",
              "filename": "/var/tmp/presentation.txt",
              "appendNewline": true,
              "createDir": false,
              "overwriteFile": "false",
              "x": 840,
              "y": 300,
              "wires": []
          },
          {
              "id": "de0acbaf.dce4e8",
              "type": "mysencode",
              "z": "4c13992e.b3ec68",
              "name": "",
              "mqtt": false,
              "x": 600,
              "y": 120,
              "wires": [
                  [
                      "1b4decbb.e4b213"
                  ]
              ]
          },
          {
              "id": "cdd7f2cc.7bf58",
              "type": "mysencode",
              "z": "4c13992e.b3ec68",
              "name": "",
              "mqtt": false,
              "x": 630,
              "y": 360,
              "wires": [
                  [
                      "b478903e.4b877"
                  ]
              ]
          },
          {
              "id": "bed2e35d.412d2",
              "type": "subflow",
              "name": "Domoticz conditioner",
              "info": "Inverts lockstate for domoticz, as domoticz has inverted the logic in their code, compared to mysensors",
              "in": [
                  {
                      "x": 280,
                      "y": 220,
                      "wires": [
                          {
                              "id": "177ebcf6.1ef483"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 1000,
                      "y": 220,
                      "wires": [
                          {
                              "id": "133a4a4e.e07f06",
                              "port": 0
                          }
                      ]
                  }
              ]
          },
          {
              "id": "126152bf.ed9ead",
              "type": "function",
              "z": "bed2e35d.412d2",
              "name": "Invert lockstate for domoticz",
              "func": "if (msg.subType == 36) {\n    if (msg.payload== \"1\") msg.payload=\"0\";\n    else msg.payload=\"1\";\n}\nreturn msg;",
              "outputs": 1,
              "noerr": 0,
              "x": 640,
              "y": 220,
              "wires": [
                  [
                      "133a4a4e.e07f06"
                  ]
              ]
          },
          {
              "id": "177ebcf6.1ef483",
              "type": "mysdecode",
              "z": "bed2e35d.412d2",
              "name": "",
              "mqtt": false,
              "x": 400,
              "y": 280,
              "wires": [
                  [
                      "126152bf.ed9ead"
                  ]
              ]
          },
          {
              "id": "133a4a4e.e07f06",
              "type": "mysencode",
              "z": "bed2e35d.412d2",
              "name": "",
              "mqtt": false,
              "x": 860,
              "y": 340,
              "wires": [
                  []
              ]
          },
          {
              "id": "67deb464.98214c",
              "type": "tab",
              "label": "Mysensors",
              "disabled": false,
              "info": ""
          },
          {
              "id": "5b8bba4c.a47444",
              "type": "serial in",
              "z": "67deb464.98214c",
              "name": "Mysensors NRF",
              "serial": "821a7286.7de59",
              "x": 200,
              "y": 280,
              "wires": [
                  [
                      "8cb827f.b90b8d8",
                      "25982c9c.c32ed4"
                  ]
              ]
          },
          {
              "id": "47b5936e.b84a6c",
              "type": "serial out",
              "z": "67deb464.98214c",
              "name": "Mysensors NRF",
              "serial": "821a7286.7de59",
              "x": 1000,
              "y": 160,
              "wires": []
          },
          {
              "id": "4755dfb8.b8aa2",
              "type": "serial out",
              "z": "67deb464.98214c",
              "name": "Domoticz",
              "serial": "b5105521.4aefa8",
              "x": 1040,
              "y": 580,
              "wires": []
          },
          {
              "id": "44592b43.bba6d4",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "Energy meter output",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 720,
              "y": 340,
              "wires": []
          },
          {
              "id": "9e471178.61b8f",
              "type": "subflow:bed2e35d.412d2",
              "z": "67deb464.98214c",
              "name": "",
              "x": 420,
              "y": 680,
              "wires": [
                  [
                      "173aba02.e8c546",
                      "19c64177.e1a11f"
                  ]
              ]
          },
          {
              "id": "9bdc2a5b.6423d8",
              "type": "subflow:bed2e35d.412d2",
              "z": "67deb464.98214c",
              "name": "Domoticz out",
              "x": 850,
              "y": 580,
              "wires": [
                  [
                      "4755dfb8.b8aa2",
                      "7acdfaa3.794f44"
                  ]
              ]
          },
          {
              "id": "9ebb1391.6144f",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "gw debug",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 840,
              "y": 540,
              "wires": []
          },
          {
              "id": "49c6c17b.b6394",
              "type": "subflow:4c13992e.b3ec68",
              "z": "67deb464.98214c",
              "x": 630,
              "y": 540,
              "wires": [
                  [
                      "9ebb1391.6144f"
                  ]
              ]
          },
          {
              "id": "602db35f.9fd24c",
              "type": "serial in",
              "z": "67deb464.98214c",
              "name": "Domoticz (20)",
              "serial": "b5105521.4aefa8",
              "x": 190,
              "y": 680,
              "wires": [
                  [
                      "9e471178.61b8f"
                  ]
              ]
          },
          {
              "id": "173aba02.e8c546",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "Domoticz in",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 630,
              "y": 640,
              "wires": []
          },
          {
              "id": "3ff64036.ae116",
              "type": "subflow:9b272654.9ad688",
              "z": "67deb464.98214c",
              "name": "InfluxDB",
              "x": 620,
              "y": 500,
              "wires": [
                  [
                      "aec232d3.2860b"
                  ]
              ]
          },
          {
              "id": "aec232d3.2860b",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 830,
              "y": 500,
              "wires": []
          },
          {
              "id": "932ebb67.4968d8",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "msg_nrf",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 980,
              "y": 120,
              "wires": []
          },
          {
              "id": "8cb827f.b90b8d8",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "NRF input",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 420,
              "y": 240,
              "wires": []
          },
          {
              "id": "ea57b38e.eecb5",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 670,
              "y": 260,
              "wires": []
          },
          {
              "id": "a3d33992.a66ae8",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 670,
              "y": 120,
              "wires": []
          },
          {
              "id": "7acdfaa3.794f44",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "false",
              "x": 1050,
              "y": 540,
              "wires": []
          },
          {
              "id": "cf80a3d0.be573",
              "type": "mqtt out",
              "z": "67deb464.98214c",
              "name": "mys-out",
              "topic": "",
              "qos": "2",
              "retain": "false",
              "broker": "4798f2b0.5d747c",
              "x": 980,
              "y": 300,
              "wires": []
          },
          {
              "id": "895c5ec3.769fc",
              "type": "mqtt in",
              "z": "67deb464.98214c",
              "name": "",
              "topic": "mys-out/#",
              "qos": "2",
              "broker": "4798f2b0.5d747c",
              "x": 180,
              "y": 160,
              "wires": [
                  [
                      "ed4c6e39.bacbd",
                      "c11a5ff7.4e5f1"
                  ]
              ]
          },
          {
              "id": "7ec6243f.89990c",
              "type": "mqtt in",
              "z": "67deb464.98214c",
              "name": "",
              "topic": "mys-in/#",
              "qos": "2",
              "broker": "4798f2b0.5d747c",
              "x": 180,
              "y": 540,
              "wires": [
                  [
                      "f11a2832.07d9d8"
                  ]
              ]
          },
          {
              "id": "a4e0701b.c1765",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "MQTT out",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "true",
              "x": 980,
              "y": 260,
              "wires": []
          },
          {
              "id": "ff440b2.89fc2f8",
              "type": "subflow:2257718.fdda88e",
              "z": "67deb464.98214c",
              "x": 430,
              "y": 320,
              "wires": [
                  [
                      "44592b43.bba6d4",
                      "7535eff3.37e22"
                  ]
              ]
          },
          {
              "id": "25982c9c.c32ed4",
              "type": "mysdecode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": false,
              "x": 450,
              "y": 280,
              "wires": [
                  [
                      "ea57b38e.eecb5",
                      "7535eff3.37e22"
                  ]
              ]
          },
          {
              "id": "f11a2832.07d9d8",
              "type": "mysdecode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": true,
              "x": 370,
              "y": 540,
              "wires": [
                  [
                      "3ff64036.ae116",
                      "49c6c17b.b6394",
                      "8d2cee61.71c6c"
                  ]
              ]
          },
          {
              "id": "8d2cee61.71c6c",
              "type": "mysencode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": false,
              "x": 650,
              "y": 580,
              "wires": [
                  [
                      "9bdc2a5b.6423d8"
                  ]
              ]
          },
          {
              "id": "7535eff3.37e22",
              "type": "mysencode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": true,
              "mqtttopic": "mys-in",
              "x": 730,
              "y": 300,
              "wires": [
                  [
                      "a4e0701b.c1765",
                      "cf80a3d0.be573"
                  ]
              ]
          },
          {
              "id": "19c64177.e1a11f",
              "type": "mysdecode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": false,
              "x": 650,
              "y": 680,
              "wires": [
                  [
                      "eaa9d1f0.25429"
                  ]
              ]
          },
          {
              "id": "ed4c6e39.bacbd",
              "type": "mysdecode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": true,
              "x": 440,
              "y": 160,
              "wires": [
                  [
                      "a3d33992.a66ae8",
                      "1d6e96fd.d27aa9"
                  ]
              ]
          },
          {
              "id": "1d6e96fd.d27aa9",
              "type": "mysencode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": false,
              "x": 710,
              "y": 160,
              "wires": [
                  [
                      "932ebb67.4968d8",
                      "47b5936e.b84a6c"
                  ]
              ]
          },
          {
              "id": "7e24cbb9.731f94",
              "type": "mqtt out",
              "z": "67deb464.98214c",
              "name": "",
              "topic": "",
              "qos": "2",
              "retain": "false",
              "broker": "4798f2b0.5d747c",
              "x": 1090,
              "y": 680,
              "wires": []
          },
          {
              "id": "eaa9d1f0.25429",
              "type": "mysencode",
              "z": "67deb464.98214c",
              "name": "",
              "mqtt": true,
              "mqtttopic": "mys-out",
              "x": 890,
              "y": 680,
              "wires": [
                  [
                      "7e24cbb9.731f94"
                  ]
              ]
          },
          {
              "id": "c11a5ff7.4e5f1",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "topic",
              "x": 420,
              "y": 120,
              "wires": []
          },
          {
              "id": "290b0786.992e48",
              "type": "comment",
              "z": "67deb464.98214c",
              "name": "Mysensors Serial <-> MQTT transformation",
              "info": "",
              "x": 680,
              "y": 60,
              "wires": []
          },
          {
              "id": "49126190.1d732",
              "type": "comment",
              "z": "67deb464.98214c",
              "name": "Domoticz (mysensors) <-> MQTT transformation",
              "info": "",
              "x": 700,
              "y": 460,
              "wires": []
          },
          {
              "id": "821a7286.7de59",
              "type": "serial-port",
              "z": "",
              "serialport": "/dev/ttyNRF24",
              "serialbaud": "115200",
              "databits": "8",
              "parity": "none",
              "stopbits": "1",
              "newline": "\\n",
              "bin": "false",
              "out": "char",
              "addchar": true
          },
          {
              "id": "b5105521.4aefa8",
              "type": "serial-port",
              "serialport": "/dev/ttyS80",
              "serialbaud": "115200",
              "databits": "8",
              "parity": "none",
              "stopbits": "1",
              "newline": "\\n",
              "bin": "false",
              "out": "char",
              "addchar": true
          },
          {
              "id": "4798f2b0.5d747c",
              "type": "mqtt-broker",
              "z": "",
              "broker": "mosquitto",
              "port": "1883",
              "clientid": "nodered-mysensors",
              "usetls": false,
              "compatmode": true,
              "keepalive": "60",
              "cleansession": true,
              "willTopic": "",
              "willQos": "0",
              "willPayload": "",
              "birthTopic": "",
              "birthQos": "0",
              "birthPayload": ""
          }
      ]
      
      1 Reply Last reply
      1
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      25

      Online

      11.7k

      Users

      11.2k

      Topics

      113.1k

      Posts


      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • MySensors
      • OpenHardware.io
      • Categories
      • Recent
      • Tags
      • Popular