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. Domoticz
  4. Are folks here happy with Domoticz?

Are folks here happy with Domoticz?

Scheduled Pinned Locked Moved Domoticz
63 Posts 28 Posters 46.7k Views 24 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 tbowmo

    @NeverDie

    I use node-red with domoticz, MySensor data hits node-red first (serial gateway) which then pipes the data to domoticz via a fake serial port. That way I can manipulate data that I send to domoticz, and can inject fake mysensor sensors into domoticz as well..

    Node-red also dumps all data to influxdb for data storage, and then I use grafana for graphing purposes. Besides that I have created my own dashboard for tablets.

    Currently I mostly use domoticz as scripting engine (lua), for some basic events. For example turning on TV if someone starts streaming to my chromecast, and automatically turn it off again if chromecast have been in idle state for 2 minutes (the same for my chromecast audio, that just turn on amplifier instead of TV).

    gohanG Offline
    gohanG Offline
    gohan
    Mod
    wrote on last edited by
    #46

    @tbowmo would that work also for ethernet/mqtt gateway?

    tbowmoT 1 Reply Last reply
    0
    • W wergeld

      @tbowmo Do you have a link to your node-red setup? I would like to filter the output of my sensor nodes as well (got a flaky one that sends -47.5 F temp every once in a while.

      Found your github!
      For others looking it is here.

      tbowmoT Offline
      tbowmoT Offline
      tbowmo
      Admin
      wrote on last edited by
      #47

      @wergeld

      the module is available through NPM as well.. So npm install node-red-contrib-mysensors :)

      The basic node-red mysensors is pasted below, my setup is starting to be quite extensive, with reporting to slack channels, creating a websocket for my custom dashboard etc. But isn't necessary for the basic domoticz/nodered

      For connecting node-red/domoticz together I use socat to create a virtual serial port:

      socat PTY,link=/dev/ttyS81,mode=666,group=dialout,raw PTY,link=/dev/ttyUSB21,mode=666,group=dialout,raw &
      

      node-red:

      [
          {
              "id": "9b272654.9ad688",
              "type": "subflow",
              "name": "Influx processing",
              "info": "",
              "in": [
                  {
                      "x": 220,
                      "y": 280,
                      "wires": [
                          {
                              "id": "5cfd0e8.fa302f"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 960,
                      "y": 240,
                      "wires": [
                          {
                              "id": "55204322.aadfbc",
                              "port": 0
                          }
                      ]
                  },
                  {
                      "x": 960,
                      "y": 380,
                      "wires": [
                          {
                              "id": "d6b8cf3e.6954c",
                              "port": 0
                          }
                      ]
                  }
              ]
          },
          {
              "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 == 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 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": 790,
              "y": 280,
              "wires": [
                  [],
                  [
                      "c042117a.3fbdf"
                  ],
                  [
                      "f6bdc7dc.77c758"
                  ]
              ]
          },
          {
              "id": "5cfd0e8.fa302f",
              "type": "mysdecenc",
              "z": "9b272654.9ad688",
              "name": "",
              "x": 350,
              "y": 280,
              "wires": [
                  [
                      "55204322.aadfbc",
                      "d6b8cf3e.6954c"
                  ]
              ]
          },
          {
              "id": "c042117a.3fbdf",
              "type": "influxdb out",
              "z": "9b272654.9ad688",
              "influxdb": "9dbdc7c7.624238",
              "name": "",
              "measurement": "",
              "x": 1020,
              "y": 280,
              "wires": []
          },
          {
              "id": "f6bdc7dc.77c758",
              "type": "influxdb out",
              "z": "9b272654.9ad688",
              "influxdb": "9de2e4ed.fdcfc8",
              "name": "Utility",
              "measurement": "",
              "x": 990,
              "y": 320,
              "wires": []
          },
          {
              "id": "d6b8cf3e.6954c",
              "type": "function",
              "z": "9b272654.9ad688",
              "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 ((msg.subType===24) && (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', msg.payload);\n    } else {\n        if (uTime != lastTime) {\n            lastCount = context.get('lastCount');\n            currentCount = 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": 560,
              "y": 340,
              "wires": [
                  [
                      "55204322.aadfbc"
                  ]
              ]
          },
          {
              "id": "9dbdc7c7.624238",
              "type": "influxdb",
              "z": "67deb464.98214c",
              "hostname": "127.0.0.1",
              "port": "8086",
              "database": "environment",
              "name": "Environment DB"
          },
          {
              "id": "9de2e4ed.fdcfc8",
              "type": "influxdb",
              "z": "67deb464.98214c",
              "hostname": "127.0.0.1",
              "port": "8086",
              "database": "utility",
              "name": "Utility DB"
          },
          {
              "id": "4c13992e.b3ec68",
              "type": "subflow",
              "name": "Logging filter",
              "in": [
                  {
                      "x": 105.5,
                      "y": 240,
                      "wires": [
                          {
                              "id": "c2063804.3df9c8"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 600,
                      "y": 260,
                      "wires": [
                          {
                              "id": "b57b1f3.f4a84e",
                              "port": 1
                          }
                      ]
                  }
              ]
          },
          {
              "id": "c2063804.3df9c8",
              "type": "mysdecenc",
              "z": "4c13992e.b3ec68",
              "name": "",
              "x": 230,
              "y": 240,
              "wires": [
                  [
                      "b57b1f3.f4a84e"
                  ]
              ]
          },
          {
              "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": [
                  [
                      "dec3cc44.213c3",
                      "d8b91167.2746f"
                  ],
                  [],
                  [
                      "b521bd95.4ade4"
                  ]
              ]
          },
          {
              "id": "dec3cc44.213c3",
              "type": "mysdecenc",
              "z": "4c13992e.b3ec68",
              "name": "",
              "x": 650,
              "y": 180,
              "wires": [
                  [
                      "1b4decbb.e4b213"
                  ]
              ]
          },
          {
              "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": "b521bd95.4ade4",
              "type": "mysdecenc",
              "z": "4c13992e.b3ec68",
              "name": "",
              "x": 650,
              "y": 300,
              "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": "8afd136d.7502f"
                          }
                      ]
                  }
              ],
              "out": [
                  {
                      "x": 1000,
                      "y": 220,
                      "wires": [
                          {
                              "id": "91eb6b4c.6e1498",
                              "port": 0
                          }
                      ]
                  }
              ]
          },
          {
              "id": "8afd136d.7502f",
              "type": "mysdecenc",
              "z": "bed2e35d.412d2",
              "name": "",
              "x": 410,
              "y": 220,
              "wires": [
                  [
                      "126152bf.ed9ead"
                  ]
              ]
          },
          {
              "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": [
                  [
                      "91eb6b4c.6e1498"
                  ]
              ]
          },
          {
              "id": "91eb6b4c.6e1498",
              "type": "mysdecenc",
              "z": "bed2e35d.412d2",
              "name": "",
              "x": 870,
              "y": 220,
              "wires": [
                  []
              ]
          },
          {
              "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": 1020,
                      "y": 200,
                      "wires": [
                          {
                              "id": "9d92273c.626dd8",
                              "port": 0
                          }
                      ]
                  }
              ]
          },
          {
              "id": "12db17ce.ed24e8",
              "type": "serial in",
              "z": "2257718.fdda88e",
              "name": "Meter input",
              "serial": "acfe3226.5301d",
              "x": 240,
              "y": 200,
              "wires": [
                  [
                      "e56f30b7.1a90d"
                  ]
              ]
          },
          {
              "id": "1dcfb48.fe2304c",
              "type": "mysencap",
              "z": "2257718.fdda88e",
              "name": "V_WATT node 99",
              "nodeid": "99",
              "childid": "1",
              "subtype": "17",
              "internal": "0",
              "ack": false,
              "msgtype": "1",
              "presentation": false,
              "presentationtype": "13",
              "presentationtext": "Watt",
              "fullpresentation": false,
              "firmwarename": "",
              "firmwareversion": "",
              "x": 650,
              "y": 160,
              "wires": [
                  [
                      "9d92273c.626dd8"
                  ]
              ]
          },
          {
              "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": 650,
              "y": 200,
              "wires": [
                  [
                      "9d92273c.626dd8"
                  ]
              ]
          },
          {
              "id": "9d92273c.626dd8",
              "type": "mysdecenc",
              "z": "2257718.fdda88e",
              "name": "",
              "x": 890,
              "y": 200,
              "wires": [
                  []
              ]
          },
          {
              "id": "e56f30b7.1a90d",
              "type": "function",
              "z": "2257718.fdda88e",
              "name": "Split meter data",
              "func": "var m=msg.payload.split(';');\nvar msg1 = {payload:m[0]};\nvar msg2 = {payload:m[1]/1000};\nvar msg3 = {payload:m[1]};\nreturn [msg1, msg2, msg3];",
              "outputs": "3",
              "noerr": 0,
              "x": 420,
              "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": 680,
              "y": 280,
              "wires": []
          },
          {
              "id": "11f1e54.721221b",
              "type": "mysencap",
              "z": "2257718.fdda88e",
              "name": "V_VAR1 (Wh node 99)",
              "nodeid": "99",
              "childid": "10",
              "subtype": "24",
              "internal": 0,
              "ack": false,
              "msgtype": "1",
              "presentation": false,
              "presentationtype": 0,
              "presentationtext": "",
              "fullpresentation": false,
              "firmwarename": "",
              "firmwareversion": "",
              "x": 660,
              "y": 240,
              "wires": [
                  [
                      "9d92273c.626dd8"
                  ]
              ]
          },
          {
              "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": "67deb464.98214c",
              "type": "tab",
              "label": "Mysensors"
          },
          {
              "id": "5b8bba4c.a47444",
              "type": "serial in",
              "z": "67deb464.98214c",
              "name": "Mysensors NRF",
              "serial": "821a7286.7de59",
              "x": 200,
              "y": 460,
              "wires": [
                  [
                      "a056d087.fb87f",
                      "8cb827f.b90b8d8"
                  ]
              ]
          },
          {
              "id": "47b5936e.b84a6c",
              "type": "serial out",
              "z": "67deb464.98214c",
              "name": "Mysensors NRF",
              "serial": "821a7286.7de59",
              "x": 1340,
              "y": 180,
              "wires": []
          },
          {
              "id": "4755dfb8.b8aa2",
              "type": "serial out",
              "z": "67deb464.98214c",
              "name": "Domoticz",
              "serial": "b5105521.4aefa8",
              "x": 1320,
              "y": 420,
              "wires": []
          },
          {
              "id": "8b4a855.f74b578",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "Mysensors in",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 1110,
              "y": 340,
              "wires": []
          },
          {
              "id": "8caee560.735118",
              "type": "subflow:2257718.fdda88e",
              "z": "67deb464.98214c",
              "x": 190,
              "y": 640,
              "wires": [
                  [
                      "44592b43.bba6d4",
                      "d7b40093.e136f"
                  ]
              ]
          },
          {
              "id": "44592b43.bba6d4",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "Energy meter output",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 420,
              "y": 640,
              "wires": []
          },
          {
              "id": "9e471178.61b8f",
              "type": "subflow:bed2e35d.412d2",
              "z": "67deb464.98214c",
              "name": "",
              "x": 420,
              "y": 220,
              "wires": [
                  [
                      "173aba02.e8c546",
                      "9aecc18f.21f6d"
                  ]
              ]
          },
          {
              "id": "9bdc2a5b.6423d8",
              "type": "subflow:bed2e35d.412d2",
              "z": "67deb464.98214c",
              "name": "Domoticz out",
              "x": 1110,
              "y": 420,
              "wires": [
                  [
                      "4755dfb8.b8aa2"
                  ]
              ]
          },
          {
              "id": "9ebb1391.6144f",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "gw debug",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 1320,
              "y": 480,
              "wires": []
          },
          {
              "id": "49c6c17b.b6394",
              "type": "subflow:4c13992e.b3ec68",
              "z": "67deb464.98214c",
              "x": 1110,
              "y": 480,
              "wires": [
                  [
                      "9ebb1391.6144f"
                  ]
              ]
          },
          {
              "id": "602db35f.9fd24c",
              "type": "serial in",
              "z": "67deb464.98214c",
              "name": "Domoticz (20)",
              "serial": "b5105521.4aefa8",
              "x": 190,
              "y": 220,
              "wires": [
                  [
                      "9e471178.61b8f"
                  ]
              ]
          },
          {
              "id": "173aba02.e8c546",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "Domoticz in",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 650,
              "y": 180,
              "wires": []
          },
          {
              "id": "3ff64036.ae116",
              "type": "subflow:9b272654.9ad688",
              "z": "67deb464.98214c",
              "name": "InfluxDB",
              "x": 1100,
              "y": 380,
              "wires": [
                  [
                      "aec232d3.2860b"
                  ],
                  [
                      "1d454a20.ff7ae6"
                  ]
              ]
          },
          {
              "id": "aec232d3.2860b",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 1310,
              "y": 340,
              "wires": []
          },
          {
              "id": "a056d087.fb87f",
              "type": "change",
              "z": "67deb464.98214c",
              "name": "mark NRF",
              "rules": [
                  {
                      "t": "set",
                      "p": "radio",
                      "pt": "msg",
                      "to": "nrf",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 390,
              "y": 480,
              "wires": [
                  [
                      "581b2ac8.2248c4"
                  ]
              ]
          },
          {
              "id": "ba16f31f.9adc5",
              "type": "change",
              "z": "67deb464.98214c",
              "name": "mark RFM",
              "rules": [
                  {
                      "t": "set",
                      "p": "radio",
                      "pt": "msg",
                      "to": "rfm",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 390,
              "y": 520,
              "wires": [
                  [
                      "581b2ac8.2248c4"
                  ]
              ]
          },
          {
              "id": "5990dc86.7a2ef4",
              "type": "function",
              "z": "67deb464.98214c",
              "name": "net detect",
              "func": "var net = flow.get('network') || {};\nvar msg2 = {};\nnet[msg.nodeId] = msg.radio;\nflow.set('network', net);\nmsg2.payload = net;\nreturn [msg, msg2];",
              "outputs": "2",
              "noerr": 0,
              "x": 720,
              "y": 500,
              "wires": [
                  [
                      "1202b756.eb6449"
                  ],
                  [
                      "ee23ee4a.b5f14"
                  ]
              ]
          },
          {
              "id": "ee23ee4a.b5f14",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "false",
              "x": 890,
              "y": 520,
              "wires": []
          },
          {
              "id": "581b2ac8.2248c4",
              "type": "mysdecenc",
              "z": "67deb464.98214c",
              "name": "",
              "x": 570,
              "y": 500,
              "wires": [
                  [
                      "5990dc86.7a2ef4",
                      "b10cb69c.3e3d18",
                      "ea57b38e.eecb5"
                  ]
              ]
          },
          {
              "id": "1202b756.eb6449",
              "type": "mysdecenc",
              "z": "67deb464.98214c",
              "name": "",
              "x": 890,
              "y": 480,
              "wires": [
                  [
                      "8b4a855.f74b578",
                      "49c6c17b.b6394",
                      "9bdc2a5b.6423d8",
                      "3ff64036.ae116"
                  ]
              ]
          },
          {
              "id": "22f329c0.24f896",
              "type": "function",
              "z": "67deb464.98214c",
              "name": "Net switch",
              "func": "var net = flow.get('network');\nmsg_nrf = null;\nmsg_rfm = null;\nmsg_nodered = null;\nif (msg.nodeId in net) {\n    var network = net[msg.nodeId];\n    if (network == 'rfm') msg_rfm = msg;\n    if (network == 'nrf') msg_nrf = msg;\n    if (network == 'nodered') msg_nodered = msg;\n} else {\n    msg_nrf = msg;\n    msg_rfm = msg;\n    msg_nodered = msg;\n}\nreturn [msg_nrf,msg_rfm, msg_nodered];\n",
              "outputs": "3",
              "noerr": 0,
              "x": 890,
              "y": 220,
              "wires": [
                  [
                      "56c9c62f.f1cbc8"
                  ],
                  [
                      "4c477db.4619e84"
                  ],
                  []
              ]
          },
          {
              "id": "9aecc18f.21f6d",
              "type": "mysdecenc",
              "z": "67deb464.98214c",
              "name": "",
              "x": 650,
              "y": 220,
              "wires": [
                  [
                      "22f329c0.24f896",
                      "b10cb69c.3e3d18"
                  ]
              ]
          },
          {
              "id": "56c9c62f.f1cbc8",
              "type": "mysdecenc",
              "z": "67deb464.98214c",
              "name": "",
              "x": 1110,
              "y": 180,
              "wires": [
                  [
                      "47b5936e.b84a6c",
                      "932ebb67.4968d8"
                  ]
              ]
          },
          {
              "id": "4c477db.4619e84",
              "type": "mysdecenc",
              "z": "67deb464.98214c",
              "name": "",
              "x": 1110,
              "y": 240,
              "wires": [
                  [
                      "6b2fe680.509218",
                      "aac8db1a.8aa468"
                  ]
              ]
          },
          {
              "id": "932ebb67.4968d8",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "msg_nrf",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 1320,
              "y": 140,
              "wires": []
          },
          {
              "id": "6b2fe680.509218",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "msg_rfm",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 1320,
              "y": 280,
              "wires": []
          },
          {
              "id": "8919748d.f19738",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "RFM Input",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 390,
              "y": 560,
              "wires": []
          },
          {
              "id": "8155e57b.a7b2e8",
              "type": "serial in",
              "z": "67deb464.98214c",
              "name": "Mysensors RFM",
              "serial": "48886e04.c4cc6",
              "x": 200,
              "y": 540,
              "wires": [
                  [
                      "ba16f31f.9adc5",
                      "8919748d.f19738"
                  ]
              ]
          },
          {
              "id": "aac8db1a.8aa468",
              "type": "serial out",
              "z": "67deb464.98214c",
              "name": "Mysensors RFM",
              "serial": "48886e04.c4cc6",
              "x": 1340,
              "y": 240,
              "wires": []
          },
          {
              "id": "8cb827f.b90b8d8",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "NRF input",
              "active": false,
              "console": "false",
              "complete": "payload",
              "x": 380,
              "y": 440,
              "wires": []
          },
          {
              "id": "b10cb69c.3e3d18",
              "type": "link out",
              "z": "67deb464.98214c",
              "name": "UI link",
              "links": [
                  "2f8a6093.73ef7",
                  "6d7cc489.0bb81c",
                  "ad2dd4f0.d2c718",
                  "d6fb4a23.fcf218"
              ],
              "x": 755,
              "y": 320,
              "wires": []
          },
          {
              "id": "cc31c979.e15578",
              "type": "link in",
              "z": "67deb464.98214c",
              "name": "",
              "links": [
                  "5d82dd49.5350d4"
              ],
              "x": 755,
              "y": 360,
              "wires": [
                  [
                      "1202b756.eb6449",
                      "22f329c0.24f896"
                  ]
              ]
          },
          {
              "id": "d7b40093.e136f",
              "type": "change",
              "z": "67deb464.98214c",
              "name": "mark nodered",
              "rules": [
                  {
                      "t": "set",
                      "p": "radio",
                      "pt": "msg",
                      "to": "nodered",
                      "tot": "str"
                  }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 400,
              "y": 600,
              "wires": [
                  [
                      "581b2ac8.2248c4"
                  ]
              ]
          },
          {
              "id": "1d454a20.ff7ae6",
              "type": "link out",
              "z": "67deb464.98214c",
              "name": "Trigger KWH to dashboard",
              "links": [
                  "1e4f3d9a.978582"
              ],
              "x": 1275,
              "y": 380,
              "wires": []
          },
          {
              "id": "ea57b38e.eecb5",
              "type": "debug",
              "z": "67deb464.98214c",
              "name": "",
              "active": false,
              "console": "false",
              "complete": "true",
              "x": 710,
              "y": 580,
              "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": "48886e04.c4cc6",
              "type": "serial-port",
              "z": "67deb464.98214c",
              "serialport": "/dev/ttyRFM69",
              "serialbaud": "115200",
              "databits": "8",
              "parity": "none",
              "stopbits": "1",
              "newline": "\\n",
              "bin": "false",
              "out": "char",
              "addchar": true
          }
      ]```
      W 1 Reply Last reply
      1
      • gohanG gohan

        @tbowmo would that work also for ethernet/mqtt gateway?

        tbowmoT Offline
        tbowmoT Offline
        tbowmo
        Admin
        wrote on last edited by
        #48

        @gohan

        In theory it should work, as you can set node-red up to receive MQTT messages, which could then be manipulated, and send off to domoticz (if needed).

        I think that @Anticimex made some experiments with mqtt/ethernet gateways using node-red. But can't remember details..

        AnticimexA 1 Reply Last reply
        0
        • tbowmoT tbowmo

          @gohan

          In theory it should work, as you can set node-red up to receive MQTT messages, which could then be manipulated, and send off to domoticz (if needed).

          I think that @Anticimex made some experiments with mqtt/ethernet gateways using node-red. But can't remember details..

          AnticimexA Offline
          AnticimexA Offline
          Anticimex
          Contest Winner
          wrote on last edited by
          #49

          @tbowmo @gohan I made some experiments using ethernet gw (not MQTT) but gave it up because I could not get node-red to communicate with the GW on the same port for rx/tx.
          I switched to a serial gw and that works just fine.

          Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

          gohanG 1 Reply Last reply
          1
          • tbowmoT Offline
            tbowmoT Offline
            tbowmo
            Admin
            wrote on last edited by
            #50

            @wergeld

            Btw. with the setup mentioned above, I have made a basic mysensors router in node-red, I can have two mysensors gateways attached to node-red (nRF24, and RFM69). I then keep track of which gateway I hear which node on, and use that to send commands through the right gateway, when domoticz want to turn on an actuator.

            Domoticz only knows of one gateway. It just sees a bunch of nodes reporting data :)

            1 Reply Last reply
            0
            • AnticimexA Anticimex

              @tbowmo @gohan I made some experiments using ethernet gw (not MQTT) but gave it up because I could not get node-red to communicate with the GW on the same port for rx/tx.
              I switched to a serial gw and that works just fine.

              gohanG Offline
              gohanG Offline
              gohan
              Mod
              wrote on last edited by
              #51

              @Anticimex don't you think MQTT is better suited for this task? I am still quite new to node-red and haven't tikered with it much as learning javascript is low on the priority list :D

              AnticimexA 1 Reply Last reply
              0
              • tbowmoT tbowmo

                @wergeld

                the module is available through NPM as well.. So npm install node-red-contrib-mysensors :)

                The basic node-red mysensors is pasted below, my setup is starting to be quite extensive, with reporting to slack channels, creating a websocket for my custom dashboard etc. But isn't necessary for the basic domoticz/nodered

                For connecting node-red/domoticz together I use socat to create a virtual serial port:

                socat PTY,link=/dev/ttyS81,mode=666,group=dialout,raw PTY,link=/dev/ttyUSB21,mode=666,group=dialout,raw &
                

                node-red:

                [
                    {
                        "id": "9b272654.9ad688",
                        "type": "subflow",
                        "name": "Influx processing",
                        "info": "",
                        "in": [
                            {
                                "x": 220,
                                "y": 280,
                                "wires": [
                                    {
                                        "id": "5cfd0e8.fa302f"
                                    }
                                ]
                            }
                        ],
                        "out": [
                            {
                                "x": 960,
                                "y": 240,
                                "wires": [
                                    {
                                        "id": "55204322.aadfbc",
                                        "port": 0
                                    }
                                ]
                            },
                            {
                                "x": 960,
                                "y": 380,
                                "wires": [
                                    {
                                        "id": "d6b8cf3e.6954c",
                                        "port": 0
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "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 == 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 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": 790,
                        "y": 280,
                        "wires": [
                            [],
                            [
                                "c042117a.3fbdf"
                            ],
                            [
                                "f6bdc7dc.77c758"
                            ]
                        ]
                    },
                    {
                        "id": "5cfd0e8.fa302f",
                        "type": "mysdecenc",
                        "z": "9b272654.9ad688",
                        "name": "",
                        "x": 350,
                        "y": 280,
                        "wires": [
                            [
                                "55204322.aadfbc",
                                "d6b8cf3e.6954c"
                            ]
                        ]
                    },
                    {
                        "id": "c042117a.3fbdf",
                        "type": "influxdb out",
                        "z": "9b272654.9ad688",
                        "influxdb": "9dbdc7c7.624238",
                        "name": "",
                        "measurement": "",
                        "x": 1020,
                        "y": 280,
                        "wires": []
                    },
                    {
                        "id": "f6bdc7dc.77c758",
                        "type": "influxdb out",
                        "z": "9b272654.9ad688",
                        "influxdb": "9de2e4ed.fdcfc8",
                        "name": "Utility",
                        "measurement": "",
                        "x": 990,
                        "y": 320,
                        "wires": []
                    },
                    {
                        "id": "d6b8cf3e.6954c",
                        "type": "function",
                        "z": "9b272654.9ad688",
                        "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 ((msg.subType===24) && (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', msg.payload);\n    } else {\n        if (uTime != lastTime) {\n            lastCount = context.get('lastCount');\n            currentCount = 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": 560,
                        "y": 340,
                        "wires": [
                            [
                                "55204322.aadfbc"
                            ]
                        ]
                    },
                    {
                        "id": "9dbdc7c7.624238",
                        "type": "influxdb",
                        "z": "67deb464.98214c",
                        "hostname": "127.0.0.1",
                        "port": "8086",
                        "database": "environment",
                        "name": "Environment DB"
                    },
                    {
                        "id": "9de2e4ed.fdcfc8",
                        "type": "influxdb",
                        "z": "67deb464.98214c",
                        "hostname": "127.0.0.1",
                        "port": "8086",
                        "database": "utility",
                        "name": "Utility DB"
                    },
                    {
                        "id": "4c13992e.b3ec68",
                        "type": "subflow",
                        "name": "Logging filter",
                        "in": [
                            {
                                "x": 105.5,
                                "y": 240,
                                "wires": [
                                    {
                                        "id": "c2063804.3df9c8"
                                    }
                                ]
                            }
                        ],
                        "out": [
                            {
                                "x": 600,
                                "y": 260,
                                "wires": [
                                    {
                                        "id": "b57b1f3.f4a84e",
                                        "port": 1
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "c2063804.3df9c8",
                        "type": "mysdecenc",
                        "z": "4c13992e.b3ec68",
                        "name": "",
                        "x": 230,
                        "y": 240,
                        "wires": [
                            [
                                "b57b1f3.f4a84e"
                            ]
                        ]
                    },
                    {
                        "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": [
                            [
                                "dec3cc44.213c3",
                                "d8b91167.2746f"
                            ],
                            [],
                            [
                                "b521bd95.4ade4"
                            ]
                        ]
                    },
                    {
                        "id": "dec3cc44.213c3",
                        "type": "mysdecenc",
                        "z": "4c13992e.b3ec68",
                        "name": "",
                        "x": 650,
                        "y": 180,
                        "wires": [
                            [
                                "1b4decbb.e4b213"
                            ]
                        ]
                    },
                    {
                        "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": "b521bd95.4ade4",
                        "type": "mysdecenc",
                        "z": "4c13992e.b3ec68",
                        "name": "",
                        "x": 650,
                        "y": 300,
                        "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": "8afd136d.7502f"
                                    }
                                ]
                            }
                        ],
                        "out": [
                            {
                                "x": 1000,
                                "y": 220,
                                "wires": [
                                    {
                                        "id": "91eb6b4c.6e1498",
                                        "port": 0
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "8afd136d.7502f",
                        "type": "mysdecenc",
                        "z": "bed2e35d.412d2",
                        "name": "",
                        "x": 410,
                        "y": 220,
                        "wires": [
                            [
                                "126152bf.ed9ead"
                            ]
                        ]
                    },
                    {
                        "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": [
                            [
                                "91eb6b4c.6e1498"
                            ]
                        ]
                    },
                    {
                        "id": "91eb6b4c.6e1498",
                        "type": "mysdecenc",
                        "z": "bed2e35d.412d2",
                        "name": "",
                        "x": 870,
                        "y": 220,
                        "wires": [
                            []
                        ]
                    },
                    {
                        "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": 1020,
                                "y": 200,
                                "wires": [
                                    {
                                        "id": "9d92273c.626dd8",
                                        "port": 0
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "12db17ce.ed24e8",
                        "type": "serial in",
                        "z": "2257718.fdda88e",
                        "name": "Meter input",
                        "serial": "acfe3226.5301d",
                        "x": 240,
                        "y": 200,
                        "wires": [
                            [
                                "e56f30b7.1a90d"
                            ]
                        ]
                    },
                    {
                        "id": "1dcfb48.fe2304c",
                        "type": "mysencap",
                        "z": "2257718.fdda88e",
                        "name": "V_WATT node 99",
                        "nodeid": "99",
                        "childid": "1",
                        "subtype": "17",
                        "internal": "0",
                        "ack": false,
                        "msgtype": "1",
                        "presentation": false,
                        "presentationtype": "13",
                        "presentationtext": "Watt",
                        "fullpresentation": false,
                        "firmwarename": "",
                        "firmwareversion": "",
                        "x": 650,
                        "y": 160,
                        "wires": [
                            [
                                "9d92273c.626dd8"
                            ]
                        ]
                    },
                    {
                        "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": 650,
                        "y": 200,
                        "wires": [
                            [
                                "9d92273c.626dd8"
                            ]
                        ]
                    },
                    {
                        "id": "9d92273c.626dd8",
                        "type": "mysdecenc",
                        "z": "2257718.fdda88e",
                        "name": "",
                        "x": 890,
                        "y": 200,
                        "wires": [
                            []
                        ]
                    },
                    {
                        "id": "e56f30b7.1a90d",
                        "type": "function",
                        "z": "2257718.fdda88e",
                        "name": "Split meter data",
                        "func": "var m=msg.payload.split(';');\nvar msg1 = {payload:m[0]};\nvar msg2 = {payload:m[1]/1000};\nvar msg3 = {payload:m[1]};\nreturn [msg1, msg2, msg3];",
                        "outputs": "3",
                        "noerr": 0,
                        "x": 420,
                        "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": 680,
                        "y": 280,
                        "wires": []
                    },
                    {
                        "id": "11f1e54.721221b",
                        "type": "mysencap",
                        "z": "2257718.fdda88e",
                        "name": "V_VAR1 (Wh node 99)",
                        "nodeid": "99",
                        "childid": "10",
                        "subtype": "24",
                        "internal": 0,
                        "ack": false,
                        "msgtype": "1",
                        "presentation": false,
                        "presentationtype": 0,
                        "presentationtext": "",
                        "fullpresentation": false,
                        "firmwarename": "",
                        "firmwareversion": "",
                        "x": 660,
                        "y": 240,
                        "wires": [
                            [
                                "9d92273c.626dd8"
                            ]
                        ]
                    },
                    {
                        "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": "67deb464.98214c",
                        "type": "tab",
                        "label": "Mysensors"
                    },
                    {
                        "id": "5b8bba4c.a47444",
                        "type": "serial in",
                        "z": "67deb464.98214c",
                        "name": "Mysensors NRF",
                        "serial": "821a7286.7de59",
                        "x": 200,
                        "y": 460,
                        "wires": [
                            [
                                "a056d087.fb87f",
                                "8cb827f.b90b8d8"
                            ]
                        ]
                    },
                    {
                        "id": "47b5936e.b84a6c",
                        "type": "serial out",
                        "z": "67deb464.98214c",
                        "name": "Mysensors NRF",
                        "serial": "821a7286.7de59",
                        "x": 1340,
                        "y": 180,
                        "wires": []
                    },
                    {
                        "id": "4755dfb8.b8aa2",
                        "type": "serial out",
                        "z": "67deb464.98214c",
                        "name": "Domoticz",
                        "serial": "b5105521.4aefa8",
                        "x": 1320,
                        "y": 420,
                        "wires": []
                    },
                    {
                        "id": "8b4a855.f74b578",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "Mysensors in",
                        "active": false,
                        "console": "false",
                        "complete": "true",
                        "x": 1110,
                        "y": 340,
                        "wires": []
                    },
                    {
                        "id": "8caee560.735118",
                        "type": "subflow:2257718.fdda88e",
                        "z": "67deb464.98214c",
                        "x": 190,
                        "y": 640,
                        "wires": [
                            [
                                "44592b43.bba6d4",
                                "d7b40093.e136f"
                            ]
                        ]
                    },
                    {
                        "id": "44592b43.bba6d4",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "Energy meter output",
                        "active": false,
                        "console": "false",
                        "complete": "true",
                        "x": 420,
                        "y": 640,
                        "wires": []
                    },
                    {
                        "id": "9e471178.61b8f",
                        "type": "subflow:bed2e35d.412d2",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 420,
                        "y": 220,
                        "wires": [
                            [
                                "173aba02.e8c546",
                                "9aecc18f.21f6d"
                            ]
                        ]
                    },
                    {
                        "id": "9bdc2a5b.6423d8",
                        "type": "subflow:bed2e35d.412d2",
                        "z": "67deb464.98214c",
                        "name": "Domoticz out",
                        "x": 1110,
                        "y": 420,
                        "wires": [
                            [
                                "4755dfb8.b8aa2"
                            ]
                        ]
                    },
                    {
                        "id": "9ebb1391.6144f",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "gw debug",
                        "active": false,
                        "console": "false",
                        "complete": "true",
                        "x": 1320,
                        "y": 480,
                        "wires": []
                    },
                    {
                        "id": "49c6c17b.b6394",
                        "type": "subflow:4c13992e.b3ec68",
                        "z": "67deb464.98214c",
                        "x": 1110,
                        "y": 480,
                        "wires": [
                            [
                                "9ebb1391.6144f"
                            ]
                        ]
                    },
                    {
                        "id": "602db35f.9fd24c",
                        "type": "serial in",
                        "z": "67deb464.98214c",
                        "name": "Domoticz (20)",
                        "serial": "b5105521.4aefa8",
                        "x": 190,
                        "y": 220,
                        "wires": [
                            [
                                "9e471178.61b8f"
                            ]
                        ]
                    },
                    {
                        "id": "173aba02.e8c546",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "Domoticz in",
                        "active": false,
                        "console": "false",
                        "complete": "payload",
                        "x": 650,
                        "y": 180,
                        "wires": []
                    },
                    {
                        "id": "3ff64036.ae116",
                        "type": "subflow:9b272654.9ad688",
                        "z": "67deb464.98214c",
                        "name": "InfluxDB",
                        "x": 1100,
                        "y": 380,
                        "wires": [
                            [
                                "aec232d3.2860b"
                            ],
                            [
                                "1d454a20.ff7ae6"
                            ]
                        ]
                    },
                    {
                        "id": "aec232d3.2860b",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "",
                        "active": false,
                        "console": "false",
                        "complete": "true",
                        "x": 1310,
                        "y": 340,
                        "wires": []
                    },
                    {
                        "id": "a056d087.fb87f",
                        "type": "change",
                        "z": "67deb464.98214c",
                        "name": "mark NRF",
                        "rules": [
                            {
                                "t": "set",
                                "p": "radio",
                                "pt": "msg",
                                "to": "nrf",
                                "tot": "str"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 390,
                        "y": 480,
                        "wires": [
                            [
                                "581b2ac8.2248c4"
                            ]
                        ]
                    },
                    {
                        "id": "ba16f31f.9adc5",
                        "type": "change",
                        "z": "67deb464.98214c",
                        "name": "mark RFM",
                        "rules": [
                            {
                                "t": "set",
                                "p": "radio",
                                "pt": "msg",
                                "to": "rfm",
                                "tot": "str"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 390,
                        "y": 520,
                        "wires": [
                            [
                                "581b2ac8.2248c4"
                            ]
                        ]
                    },
                    {
                        "id": "5990dc86.7a2ef4",
                        "type": "function",
                        "z": "67deb464.98214c",
                        "name": "net detect",
                        "func": "var net = flow.get('network') || {};\nvar msg2 = {};\nnet[msg.nodeId] = msg.radio;\nflow.set('network', net);\nmsg2.payload = net;\nreturn [msg, msg2];",
                        "outputs": "2",
                        "noerr": 0,
                        "x": 720,
                        "y": 500,
                        "wires": [
                            [
                                "1202b756.eb6449"
                            ],
                            [
                                "ee23ee4a.b5f14"
                            ]
                        ]
                    },
                    {
                        "id": "ee23ee4a.b5f14",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "",
                        "active": false,
                        "console": "false",
                        "complete": "false",
                        "x": 890,
                        "y": 520,
                        "wires": []
                    },
                    {
                        "id": "581b2ac8.2248c4",
                        "type": "mysdecenc",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 570,
                        "y": 500,
                        "wires": [
                            [
                                "5990dc86.7a2ef4",
                                "b10cb69c.3e3d18",
                                "ea57b38e.eecb5"
                            ]
                        ]
                    },
                    {
                        "id": "1202b756.eb6449",
                        "type": "mysdecenc",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 890,
                        "y": 480,
                        "wires": [
                            [
                                "8b4a855.f74b578",
                                "49c6c17b.b6394",
                                "9bdc2a5b.6423d8",
                                "3ff64036.ae116"
                            ]
                        ]
                    },
                    {
                        "id": "22f329c0.24f896",
                        "type": "function",
                        "z": "67deb464.98214c",
                        "name": "Net switch",
                        "func": "var net = flow.get('network');\nmsg_nrf = null;\nmsg_rfm = null;\nmsg_nodered = null;\nif (msg.nodeId in net) {\n    var network = net[msg.nodeId];\n    if (network == 'rfm') msg_rfm = msg;\n    if (network == 'nrf') msg_nrf = msg;\n    if (network == 'nodered') msg_nodered = msg;\n} else {\n    msg_nrf = msg;\n    msg_rfm = msg;\n    msg_nodered = msg;\n}\nreturn [msg_nrf,msg_rfm, msg_nodered];\n",
                        "outputs": "3",
                        "noerr": 0,
                        "x": 890,
                        "y": 220,
                        "wires": [
                            [
                                "56c9c62f.f1cbc8"
                            ],
                            [
                                "4c477db.4619e84"
                            ],
                            []
                        ]
                    },
                    {
                        "id": "9aecc18f.21f6d",
                        "type": "mysdecenc",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 650,
                        "y": 220,
                        "wires": [
                            [
                                "22f329c0.24f896",
                                "b10cb69c.3e3d18"
                            ]
                        ]
                    },
                    {
                        "id": "56c9c62f.f1cbc8",
                        "type": "mysdecenc",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 1110,
                        "y": 180,
                        "wires": [
                            [
                                "47b5936e.b84a6c",
                                "932ebb67.4968d8"
                            ]
                        ]
                    },
                    {
                        "id": "4c477db.4619e84",
                        "type": "mysdecenc",
                        "z": "67deb464.98214c",
                        "name": "",
                        "x": 1110,
                        "y": 240,
                        "wires": [
                            [
                                "6b2fe680.509218",
                                "aac8db1a.8aa468"
                            ]
                        ]
                    },
                    {
                        "id": "932ebb67.4968d8",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "msg_nrf",
                        "active": false,
                        "console": "false",
                        "complete": "payload",
                        "x": 1320,
                        "y": 140,
                        "wires": []
                    },
                    {
                        "id": "6b2fe680.509218",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "msg_rfm",
                        "active": false,
                        "console": "false",
                        "complete": "payload",
                        "x": 1320,
                        "y": 280,
                        "wires": []
                    },
                    {
                        "id": "8919748d.f19738",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "RFM Input",
                        "active": false,
                        "console": "false",
                        "complete": "payload",
                        "x": 390,
                        "y": 560,
                        "wires": []
                    },
                    {
                        "id": "8155e57b.a7b2e8",
                        "type": "serial in",
                        "z": "67deb464.98214c",
                        "name": "Mysensors RFM",
                        "serial": "48886e04.c4cc6",
                        "x": 200,
                        "y": 540,
                        "wires": [
                            [
                                "ba16f31f.9adc5",
                                "8919748d.f19738"
                            ]
                        ]
                    },
                    {
                        "id": "aac8db1a.8aa468",
                        "type": "serial out",
                        "z": "67deb464.98214c",
                        "name": "Mysensors RFM",
                        "serial": "48886e04.c4cc6",
                        "x": 1340,
                        "y": 240,
                        "wires": []
                    },
                    {
                        "id": "8cb827f.b90b8d8",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "NRF input",
                        "active": false,
                        "console": "false",
                        "complete": "payload",
                        "x": 380,
                        "y": 440,
                        "wires": []
                    },
                    {
                        "id": "b10cb69c.3e3d18",
                        "type": "link out",
                        "z": "67deb464.98214c",
                        "name": "UI link",
                        "links": [
                            "2f8a6093.73ef7",
                            "6d7cc489.0bb81c",
                            "ad2dd4f0.d2c718",
                            "d6fb4a23.fcf218"
                        ],
                        "x": 755,
                        "y": 320,
                        "wires": []
                    },
                    {
                        "id": "cc31c979.e15578",
                        "type": "link in",
                        "z": "67deb464.98214c",
                        "name": "",
                        "links": [
                            "5d82dd49.5350d4"
                        ],
                        "x": 755,
                        "y": 360,
                        "wires": [
                            [
                                "1202b756.eb6449",
                                "22f329c0.24f896"
                            ]
                        ]
                    },
                    {
                        "id": "d7b40093.e136f",
                        "type": "change",
                        "z": "67deb464.98214c",
                        "name": "mark nodered",
                        "rules": [
                            {
                                "t": "set",
                                "p": "radio",
                                "pt": "msg",
                                "to": "nodered",
                                "tot": "str"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 400,
                        "y": 600,
                        "wires": [
                            [
                                "581b2ac8.2248c4"
                            ]
                        ]
                    },
                    {
                        "id": "1d454a20.ff7ae6",
                        "type": "link out",
                        "z": "67deb464.98214c",
                        "name": "Trigger KWH to dashboard",
                        "links": [
                            "1e4f3d9a.978582"
                        ],
                        "x": 1275,
                        "y": 380,
                        "wires": []
                    },
                    {
                        "id": "ea57b38e.eecb5",
                        "type": "debug",
                        "z": "67deb464.98214c",
                        "name": "",
                        "active": false,
                        "console": "false",
                        "complete": "true",
                        "x": 710,
                        "y": 580,
                        "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": "48886e04.c4cc6",
                        "type": "serial-port",
                        "z": "67deb464.98214c",
                        "serialport": "/dev/ttyRFM69",
                        "serialbaud": "115200",
                        "databits": "8",
                        "parity": "none",
                        "stopbits": "1",
                        "newline": "\\n",
                        "bin": "false",
                        "out": "char",
                        "addchar": true
                    }
                ]```
                W Offline
                W Offline
                wergeld
                wrote on last edited by
                #52

                @tbowmo I feel I have a lot of reading to do...
                Setting up my own custom dashboard has been on my todo list forever (I have the shell made and used the Domoticz API to pull in data but am not really satisfied at all with Domo's APIs). InfluxDB is neat but so, so, limited in my opinion (I do SQL Server big data analytics in the real world).

                1 Reply Last reply
                0
                • NeverDieN NeverDie

                  I want to pick a controller, but I don't want to jump in feet first only to find out later that it's somehow seriously flawed. Domoticz, Openhab, and Vera appear to be the most popular based on number of topics and posts. I think I can rule out Vera based on prior negative experience with it. So, I guess that makes it Domoticz vs. OpenHAB. Any reasons to prefer one over the other? The built-in graphing in Domoticz looks very appealing.

                  Bogus ExceptionB Offline
                  Bogus ExceptionB Offline
                  Bogus Exception
                  wrote on last edited by
                  #53

                  @NeverDie I tried for days. Too buggy, and not enough support. I landed with MyController, which takes advantage of MySensors, plus allows a lot of scripting, etc.

                  </$0.02>

                  "If you drop it and it breaks, it was good." ~ Mr. Lehr, my Electronics Vo-Tech teacher, on testing vacuum tubes...
                  -Arduinos (UNO, Nano, Pro-Mini, Mega, ...)
                  -ATTiny, ATMega, STM32
                  -Geek Channel: https://www.youtube.com/TheSalesEngineer

                  1 Reply Last reply
                  1
                  • gohanG gohan

                    @Anticimex don't you think MQTT is better suited for this task? I am still quite new to node-red and haven't tikered with it much as learning javascript is low on the priority list :D

                    AnticimexA Offline
                    AnticimexA Offline
                    Anticimex
                    Contest Winner
                    wrote on last edited by
                    #54

                    @gohan which task? I have never used MQTT and I have not felt a need to use it so far.

                    Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

                    gohanG 1 Reply Last reply
                    0
                    • AnticimexA Anticimex

                      @gohan which task? I have never used MQTT and I have not felt a need to use it so far.

                      gohanG Offline
                      gohanG Offline
                      gohan
                      Mod
                      wrote on last edited by
                      #55

                      @Anticimex I'm referring to the task of communicating between 2 or more platforms/devices: it was built for that. If I knew how to do it, I'd try to make it myself 😅

                      AnticimexA 1 Reply Last reply
                      0
                      • gohanG gohan

                        @Anticimex I'm referring to the task of communicating between 2 or more platforms/devices: it was built for that. If I knew how to do it, I'd try to make it myself 😅

                        AnticimexA Offline
                        AnticimexA Offline
                        Anticimex
                        Contest Winner
                        wrote on last edited by
                        #56

                        @gohan ok, well I use node-red. It works for me, and I can easily hook in anything imaginable (including MQTT things) while also having the ability to easily inspect and manipulate the data as it flows through the grid. Perhaps MQTT offer that by itself. I don't know.

                        Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

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

                          with node-red as middleware you can in theory filter nodes out that you won't let domoticz handle..

                          Or run both domoticz and pidome (or another controller) in parallel, for example if you want to switch controller for some reason, then move things slowly over to the new platform. I have done this a couple of times, when I wanted to check out a new controller..

                          MQTT could probably be used, as it can have multiple clients listen to the same data. I just want to get in between the mysensors network, and everything else, so I can manipulate data as I see fit. And that is possible with node-red. You don't need javascript knowledge for basic stuff.. As it's a graphical click and draw thing, and quite intuitive imho.

                          gohanG 1 Reply Last reply
                          1
                          • W wergeld

                            I have used Domoticz for about 2+ years. I like it a lot but wish for something...more.
                            Pros:
                            Quick setup for mysensors nodes
                            One-stop location for data storage and data presentation
                            Android app is very good
                            Customizable scripting options once you leave their scripting environment and use API values.

                            Cons:
                            Event scripting (lua? really?) needs more advanced features.
                            Has interesting issue lately where if I lose power to the Pi I lose all data back to May 23 of this year. I have a cron job that backs up the DB nightly and send to my NAS so I can lose hours instead of days. But, man, is this annoying - I have not tracked down the reason yet.
                            Graphs are just sort of...there. I do data viz at my job and use Highcharts (Domoticz' charting library) daily. The charts in Domoticz need a lot of work.

                            I have started writing my own front end that calls data from the Domoticz API (as well as other APIs) for showing info in our house. Nothing crazy cool, but it will eventually work fine for me.

                            Which brings me to the point - there is no perfect controller. You need to find the one that is right for you.

                            ronnyandreR Offline
                            ronnyandreR Offline
                            ronnyandre
                            wrote on last edited by
                            #58

                            @wergeld said in Are folks here happy with Domoticz?:

                            Event scripting (lua? really?) needs more advanced features.

                            You should check out dzVents which makes LUA-scripting much more powerful and even simpler.

                            Newbie with RPi and Domoticz, trying to automate my home.

                            tbowmoT 1 Reply Last reply
                            1
                            • tbowmoT tbowmo

                              with node-red as middleware you can in theory filter nodes out that you won't let domoticz handle..

                              Or run both domoticz and pidome (or another controller) in parallel, for example if you want to switch controller for some reason, then move things slowly over to the new platform. I have done this a couple of times, when I wanted to check out a new controller..

                              MQTT could probably be used, as it can have multiple clients listen to the same data. I just want to get in between the mysensors network, and everything else, so I can manipulate data as I see fit. And that is possible with node-red. You don't need javascript knowledge for basic stuff.. As it's a graphical click and draw thing, and quite intuitive imho.

                              gohanG Offline
                              gohanG Offline
                              gohan
                              Mod
                              wrote on last edited by
                              #59

                              @tbowmo I played with it few months ago and indeed it is simple click and drag, but when you want to do real things you need to know javascript

                              1 Reply Last reply
                              0
                              • ronnyandreR ronnyandre

                                @wergeld said in Are folks here happy with Domoticz?:

                                Event scripting (lua? really?) needs more advanced features.

                                You should check out dzVents which makes LUA-scripting much more powerful and even simpler.

                                tbowmoT Offline
                                tbowmoT Offline
                                tbowmo
                                Admin
                                wrote on last edited by
                                #60

                                @ronnyandre

                                It seems that dzVents are part of domoticz now.. I have it in ./scripts/dzVents, and looking at the domoticz repository, it's also included there..

                                1 Reply Last reply
                                1
                                • gohanG Offline
                                  gohanG Offline
                                  gohan
                                  Mod
                                  wrote on last edited by
                                  #61

                                  It actually is part of domoticz events

                                  0_1501709496201_upload-6eaa6cae-df78-4a4b-ba19-3014d98e95fe

                                  1 Reply Last reply
                                  1
                                  • stefaanvS Offline
                                    stefaanvS Offline
                                    stefaanv
                                    wrote on last edited by
                                    #62

                                    I've used domoticz for a few years but got more-and-more stuck on it's limitations. I'm not a great fan of lua either. I'm more a c# and javascript person.
                                    I have invested my time in OpenHAB2 lately and I'm very happy with it. Much more solid in terms of software design imho. Very large hardware support. Seems to be a larger community as well.
                                    Setup is not as easy as with Domoticz, takes more reading and getting used to, but in the end I'm happy that I switched to OpenHAB.
                                    HabPanel is a nice extension to OpenHAB for building UI's.

                                    1 Reply Last reply
                                    1
                                    • D Offline
                                      D Offline
                                      dakipro
                                      wrote on last edited by dakipro
                                      #63

                                      Exactly the same as @stefaanv and many others, I started with Domoticz and used it for few years, but after a while it was a bit too much "this script for this", and "this hack for that", and this in python and seven virtual switches for that hack... So I was looking into a more robust solution, and I was sold on presentations that leading people of OpenHAB held online, showing the architecture, the reasons and plans, having clear roadmap and long term plan for the system. I feel I understand how and why openhab works the way it does, why it is organized in such a fashion. And that is very important with any software, to have a good documentation (technical, not just for the users).
                                      With domoticz, almost no idea about how it was internally organized, why and what the future plans are. It was always somehow "well this is what we have, it works, and here are the workarounds... with bunch of hidden difficult to find virtual switches and rest api"

                                      When I started making more "abstracted" rules about events and logic, then lua showed quite a few challenges, but it was mainly having 30-40-50 virtual switches, a pain in the ** keeping track them all, making rules for each of them (f.eks. switches for datetime: isSunrise, isMorning, isAfternoon, isEvening, isNighttime, isDaytime..... isSomeoneHome, isMeHome, isWifeHome,... ) And this was actually the biggest issue I had with domoticz, handling and organizing the automation part and virtual switches. At the end I had like 6-7 times more virtual switches then physical ones.

                                      Then I moved in another apartment and decided to try openhab2. It is just way more robust. It didn't took me a long time to get up and running, and having items defined in a text file is a blessing as you can just do a backup, organize them in multiple files, use git (or backup) for versioning. Writing comments also helps A LOT when you come back to the item after few months/years.

                                      Only thing I was struggling a bit is the RFlink, whose binding is not quite ready yet. But I managed to install and use rflink->mqtt "gateway" and all works as expected.
                                      I am also using node-red for logic as @Fabien which I am still learning, but so far it looks much much better and easier to debug.

                                      Not all challenges from above are domoticz related, some are also "me a rookie" related, so not to downspeak on domoticz, it works great! As long as you are comfortable with all above and dont plan to overgrow it. My goal is to make "smarter home", more then just basic rules and remote home. (about remote home, my.domoticz.com for remote access never actually worked for me, noone could/tried to solve it, so I felt it didn't work)

                                      And that is where the community comes in place, it feels that the people on the openhab are more technical, and generally have great technical discussions about best solutions and approaches. F.eks. only for persisting values, you can have multiple completely different database systems, using the advantage of each of them. And each is very easy to install, as they all comply to some "technical rules and documentation". Now that is a downside, as you need to know that you need persistence strategy at all, I wish some would come predefined, but...
                                      I am not developing anything, but I feel there are "big boys" who think hard about issues and then develop a long term and best solution for the problem. And I want a stable and long term solution for my home automation, and waf :)

                                      On the other side, openhab is a bit more technical, but I think that someone who can change mysensors sketches and make that work, can make openhab work as well. They are very focused on "non-technical" user these days, and it shows with every update. I guess home-assistant is pushing its way forward.

                                      (a novel about my life and divorce with domoticz will be published someday, snippet above is just the preview, I have too much caffeine cannot sleep help)

                                      C: OpenHAB2 with node-red on linux laptop
                                      GW: Arduino Nano - W5100 Ethernet, Nrf24l01+ 2,4Ghz mqtt
                                      GW: Arduino Mega, RFLink 433Mhz

                                      1 Reply Last reply
                                      3
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      24

                                      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