Home Assistant + Node Red

Anbindung des Controllers an externe Hausautomationssysteme.
markus
Beiträge: 168
Registriert: 23. Januar 2019, 10:57

Re: Home Assistant + Node Red

Beitrag von markus »

Hi,
nein leider immer noch nicht. Hab aber schon die Curl Befehle drinnen.
Die Alexa und Kamera Sachen musst halt noch rausnehmen aus dem Flow.

Code: Alles auswählen

[
    {
        "id": "318c397.a9416c6",
        "type": "tab",
        "label": "Pool neu",
        "disabled": false,
        "info": ""
    },
    {
        "id": "a348ab33.6758c8",
        "type": "http request",
        "z": "318c397.a9416c6",
        "name": "",
        "method": "GET",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://192.168.178.36/GetState.csv",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 150,
        "y": 200,
        "wires": [
            [
                "18601901.8383c7"
            ]
        ]
    },
    {
        "id": "18601901.8383c7",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "",
        "func": "function csvJSON(csv){\n  var lines     = csv.split(\"\\n\");\n  var headers   = lines[1].split(\",\");\n  var result    = {};\n  var obj       = {};\n  var line_item = '';\n\n  for(var i=2;i<lines.length;i++){\n      var currentline=lines[i].split(\",\");\n\n      switch (i) {\n          case 2: line_item = \"unit\";     break;\n          case 3: line_item = \"offset\";   break;\n          case 4: line_item = \"gain\";     break;\n          case 5: line_item = \"rawvalue\"; break;\n      }\n\n      for(var j=0;j<headers.length;j++){\n          if (i==2) {\n              obj[j] = {};\n              obj[j][\"name\"] = headers[j];\n          }     \n          obj[j][line_item] = currentline[j];\n      }\n  }\n\n  for (var x=0;x<headers.length;x++) {\n     var current_obj = obj[x];\n     var name        = current_obj[\"name\"];\n     if (typeof result[name] != \"undefined\") {\n         var l = 1;\n         new_name = name;\n         while (typeof result[new_name] != \"undefined\") {\n             new_name = name + \"_[\" + (l++)+\"]\";\n         }\n         name = new_name;\n     }\n     if (name) {\n         result[name]         = {};\n         result[name]['unit'] = current_obj['unit'];\n         \n         if (current_obj['unit']==\"h\") {\n             var timeValue         = current_obj['rawvalue'];\n             var minutes           = timeValue%256;\n             if (minutes < 10)     { minutes = '0'+minutes; }\n             var hour              = (timeValue-minutes)/256;\n             result[name]['value'] = hour + \":\" + minutes;\n         } else {\n             var rawvalue          = parseFloat(current_obj['rawvalue']);\n             var gain              = parseFloat(current_obj['gain']);\n             var offset            = parseFloat(current_obj['offset']);\n             result[name]['value'] = (rawvalue*gain)+offset;\n         } \n     }\n  }\n\n  return JSON.stringify(result); //JSON\n}\nmsg.payload=csvJSON(msg.payload)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 120,
        "y": 300,
        "wires": [
            [
                "ef2d9b71.fdc9d8",
                "b2d98132.ba21f",
                "ce2e4f6.e576cb",
                "b56416b.cfa11e8",
                "7299e8ea.e80368",
                "671f452b.74833c",
                "c40afc2a.f6dc5",
                "e94e3af.cf71ac8",
                "3d69e1f5.c0980e",
                "814750bd.44c61",
                "64e7dd61.5f9214",
                "22cbef1c.added",
                "dd7b0007.bfe7c",
                "87ac5b17.de6d38",
                "8481a611.9060f8",
                "8214a10e.abc32",
                "73cf508a.435f2",
                "d55e0277.503d6",
                "d242378b.b7a3f8",
                "1fca5f8e.aa5ef",
                "241649bf.ab3676",
                "6e74d56c.4244cc"
            ]
        ]
    },
    {
        "id": "34ed6ea0.42f1c2",
        "type": "inject",
        "z": "318c397.a9416c6",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "30",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 80,
        "wires": [
            [
                "a348ab33.6758c8"
            ]
        ]
    },
    {
        "id": "ef2d9b71.fdc9d8",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Temp. Absorber",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Temp. Absorber']['value'];\nmsg.payload = msg.payload.toFixed(1)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 360,
        "y": 260,
        "wires": [
            [
                "c2824ac2.a1ecf8"
            ]
        ]
    },
    {
        "id": "b2d98132.ba21f",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Schrank",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Schrank']['value'];\nmsg.payload = msg.payload.toFixed(1)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 340,
        "y": 300,
        "wires": [
            [
                "7fd599da.3b7f68"
            ]
        ]
    },
    {
        "id": "ce2e4f6.e576cb",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Rücklauf",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Rücklauf']['value'];\nmsg.payload = msg.payload.toFixed(1)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 340,
        "y": 340,
        "wires": [
            [
                "811eb851.6e8388"
            ]
        ]
    },
    {
        "id": "b56416b.cfa11e8",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Außen",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Außen']['value'];\nmsg.payload = msg.payload.toFixed(1)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 330,
        "y": 380,
        "wires": [
            [
                "d6e90d1d.07fe4"
            ]
        ]
    },
    {
        "id": "7299e8ea.e80368",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Temp. Wasser",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Temp. Wasser']['value'];\nmsg.payload = msg.payload.toFixed(1)\nglobal.set('POOL_WASSER', msg.payload)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 360,
        "y": 420,
        "wires": [
            [
                "a1a9b69.02bd148"
            ]
        ]
    },
    {
        "id": "c2824ac2.a1ecf8",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 1,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "Temp. Absorber",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 680,
        "y": 260,
        "wires": []
    },
    {
        "id": "7fd599da.3b7f68",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 5,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "Schrank",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 660,
        "y": 300,
        "wires": []
    },
    {
        "id": "811eb851.6e8388",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 3,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "Rücklauf",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 660,
        "y": 340,
        "wires": []
    },
    {
        "id": "d6e90d1d.07fe4",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 4,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "Außen",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 650,
        "y": 380,
        "wires": []
    },
    {
        "id": "a1a9b69.02bd148",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 2,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "Wasser",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 660,
        "y": 420,
        "wires": []
    },
    {
        "id": "d095e1ff.4282d",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 4,
        "width": 0,
        "height": 0,
        "label": "Solarsteuerung",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 470,
        "y": 1080,
        "wires": []
    },
    {
        "id": "29181cd7.1e3a74",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 5,
        "width": 0,
        "height": 0,
        "label": "Schwall",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 470,
        "y": 1160,
        "wires": []
    },
    {
        "id": "9c1c8628.9a1dd8",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 6,
        "width": 0,
        "height": 0,
        "label": "PH",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 470,
        "y": 1320,
        "wires": []
    },
    {
        "id": "f9f7a216.c6e4d",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 7,
        "width": 0,
        "height": 0,
        "label": "Cl",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 470,
        "y": 1240,
        "wires": []
    },
    {
        "id": "1835ecfc.a5be23",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 8,
        "width": 0,
        "height": 0,
        "label": "Lampe",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            },
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 470,
        "y": 1400,
        "wires": []
    },
    {
        "id": "671f452b.74833c",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Redox",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Redox']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1540,
        "wires": [
            [
                "f96ca074.96ff8",
                "6abd3628.c3cc48"
            ]
        ]
    },
    {
        "id": "c40afc2a.f6dc5",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "PH",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['pH']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1580,
        "wires": [
            [
                "80e45f15.fb0f9"
            ]
        ]
    },
    {
        "id": "f96ca074.96ff8",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": "0",
        "height": "0",
        "name": "",
        "label": "Redox",
        "format": "{{msg.payload}} mV",
        "layout": "row-spread",
        "x": 610,
        "y": 1540,
        "wires": []
    },
    {
        "id": "80e45f15.fb0f9",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "pH",
        "format": "{{msg.payload}}",
        "layout": "row-spread",
        "x": 610,
        "y": 1580,
        "wires": []
    },
    {
        "id": "e94e3af.cf71ac8",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Filterdruck",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Filterdruck']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 330,
        "y": 1620,
        "wires": [
            [
                "2ad60f5d.57a9e"
            ]
        ]
    },
    {
        "id": "2ad60f5d.57a9e",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Filterdruck",
        "format": "{{msg.payload}} Bar",
        "layout": "row-spread",
        "x": 630,
        "y": 1620,
        "wires": []
    },
    {
        "id": "3d69e1f5.c0980e",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Durchfluss",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Durchfluss']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 330,
        "y": 1660,
        "wires": [
            [
                "17dd353e.ce891b"
            ]
        ]
    },
    {
        "id": "17dd353e.ce891b",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Durchfluss",
        "format": "{{msg.payload}} cm/s",
        "layout": "row-spread",
        "x": 630,
        "y": 1660,
        "wires": []
    },
    {
        "id": "814750bd.44c61",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Cl consumption",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Cl consumption']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 340,
        "y": 1700,
        "wires": [
            [
                "f1b7e5c2.2a7678"
            ]
        ]
    },
    {
        "id": "64e7dd61.5f9214",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "pH- consumption",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['pH- consumption']['value'];\nmsg.payload = msg.payload.toFixed(2)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 350,
        "y": 1740,
        "wires": [
            [
                "64f20193.d51ad"
            ]
        ]
    },
    {
        "id": "f1b7e5c2.2a7678",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Cl Verbrauch",
        "format": "{{msg.payload}} ml",
        "layout": "row-spread",
        "x": 630,
        "y": 1700,
        "wires": []
    },
    {
        "id": "64f20193.d51ad",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "25fe678.036cb98",
        "order": 5,
        "width": "6",
        "height": "3",
        "name": "",
        "label": "pH Verbrauch",
        "format": "{{msg.payload}} ml",
        "layout": "row-spread",
        "x": 640,
        "y": 1740,
        "wires": []
    },
    {
        "id": "22cbef1c.added",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "CPU Temp",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['CPU Temp']['value'];\nmsg.payload = msg.payload.toFixed(1)\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 350,
        "y": 460,
        "wires": [
            [
                "a9735bae.423f28"
            ]
        ]
    },
    {
        "id": "a9735bae.423f28",
        "type": "ui_gauge",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "85536a71.b938a8",
        "order": 6,
        "width": "5",
        "height": "4",
        "gtype": "gage",
        "title": "CPU",
        "label": "°C",
        "format": "{{value}} Grad",
        "min": 0,
        "max": "70",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 650,
        "y": 460,
        "wires": []
    },
    {
        "id": "dd7b0007.bfe7c",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Pumpe ein",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Pumpe ein']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 350,
        "y": 500,
        "wires": [
            [
                "6229719.efade9",
                "233c876c.1bcb48"
            ]
        ]
    },
    {
        "id": "87ac5b17.de6d38",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Pumpe 2",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Pumpe Drehzahl 2']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 340,
        "y": 600,
        "wires": [
            [
                "66045c73.29dd34",
                "2d6e9d24.6ec8d2"
            ]
        ]
    },
    {
        "id": "8481a611.9060f8",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Pumpe 3",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Pumpe Drehzahl 3']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 340,
        "y": 680,
        "wires": [
            [
                "49037d21.15ea74",
                "7d05bbbe.52d904"
            ]
        ]
    },
    {
        "id": "66045c73.29dd34",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 2,
        "width": 0,
        "height": 0,
        "label": "Pumpe 2",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            },
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 650,
        "y": 640,
        "wires": []
    },
    {
        "id": "75b305fd.2b21ec",
        "type": "link in",
        "z": "318c397.a9416c6",
        "name": "Trigger Pool HTTP",
        "links": [
            "95e57835.93cc68"
        ],
        "x": 55,
        "y": 120,
        "wires": [
            [
                "a348ab33.6758c8"
            ]
        ]
    },
    {
        "id": "4b5778bd.7a3348",
        "type": "exec",
        "z": "318c397.a9416c6",
        "command": "curl http://192.168.178.36/SetState.pl?R9=1",
        "addpay": false,
        "append": "",
        "useSpawn": "false",
        "timer": "",
        "oldrc": false,
        "name": "",
        "x": 890,
        "y": 840,
        "wires": [
            [
                "95e57835.93cc68"
            ],
            [],
            []
        ]
    },
    {
        "id": "f8c3bf81.dd035",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "1286dc38.64ef74",
        "order": 4,
        "width": "8",
        "height": 0,
        "label": "Relais 9  ",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 480,
        "y": 900,
        "wires": [
            []
        ]
    },
    {
        "id": "8214a10e.abc32",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['mmm']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 320,
        "y": 900,
        "wires": [
            [
                "f8c3bf81.dd035"
            ]
        ]
    },
    {
        "id": "6f919699.5065b8",
        "type": "exec",
        "z": "318c397.a9416c6",
        "command": "curl http://192.168.178.36/SetState.pl?R9=0",
        "addpay": false,
        "append": "",
        "useSpawn": "false",
        "timer": "",
        "oldrc": false,
        "name": "",
        "x": 890,
        "y": 900,
        "wires": [
            [
                "95e57835.93cc68"
            ],
            [],
            []
        ]
    },
    {
        "id": "261e95ec.c34d4a",
        "type": "switch",
        "z": "318c397.a9416c6",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "1",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "0",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "2",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "3",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 4,
        "x": 650,
        "y": 900,
        "wires": [
            [
                "4b5778bd.7a3348"
            ],
            [
                "6f919699.5065b8"
            ],
            [],
            []
        ]
    },
    {
        "id": "95e57835.93cc68",
        "type": "link out",
        "z": "318c397.a9416c6",
        "name": "",
        "links": [
            "75b305fd.2b21ec"
        ],
        "x": 1125,
        "y": 740,
        "wires": []
    },
    {
        "id": "49037d21.15ea74",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 3,
        "width": 0,
        "height": 0,
        "label": "Pumpe 3",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            },
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 650,
        "y": 740,
        "wires": []
    },
    {
        "id": "6229719.efade9",
        "type": "ui_led",
        "z": "318c397.a9416c6",
        "group": "dab30245.0e8cf",
        "order": 1,
        "width": "0",
        "height": "0",
        "label": "Pumpe 1",
        "labelPlacement": "left",
        "labelAlignment": "left",
        "colorForValue": [
            {
                "color": "green",
                "value": "true",
                "valueType": "bool"
            },
            {
                "color": "red",
                "value": "false",
                "valueType": "bool"
            }
        ],
        "allowColorForValueInMessage": false,
        "name": "",
        "x": 650,
        "y": 540,
        "wires": []
    },
    {
        "id": "7d05bbbe.52d904",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "1286dc38.64ef74",
        "order": 3,
        "width": "8",
        "height": 0,
        "label": "Pumpe 3",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 660,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "2d6e9d24.6ec8d2",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "1286dc38.64ef74",
        "order": 2,
        "width": "8",
        "height": 0,
        "label": "Pumpe 2",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 660,
        "y": 600,
        "wires": [
            []
        ]
    },
    {
        "id": "233c876c.1bcb48",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "1286dc38.64ef74",
        "order": 1,
        "width": "8",
        "height": 0,
        "label": "Pumpe 1",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 660,
        "y": 500,
        "wires": [
            []
        ]
    },
    {
        "id": "605cd946.3fd098",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "e3a6336f.bafb8",
        "order": 4,
        "width": "7",
        "height": 0,
        "label": "Solar",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 470,
        "y": 1040,
        "wires": [
            []
        ]
    },
    {
        "id": "73cf508a.435f2",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Solar",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Solarsteuerung']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1040,
        "wires": [
            [
                "605cd946.3fd098",
                "d095e1ff.4282d"
            ]
        ]
    },
    {
        "id": "9d03e80e.69a868",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "e3a6336f.bafb8",
        "order": 4,
        "width": "7",
        "height": 0,
        "label": "Chlor",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 470,
        "y": 1200,
        "wires": [
            []
        ]
    },
    {
        "id": "d55e0277.503d6",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "CL",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Chlor Dosierung']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1200,
        "wires": [
            [
                "9d03e80e.69a868",
                "f9f7a216.c6e4d"
            ]
        ]
    },
    {
        "id": "c2d8cd15.472e1",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "e3a6336f.bafb8",
        "order": 4,
        "width": "7",
        "height": 0,
        "label": "PH",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 470,
        "y": 1280,
        "wires": [
            []
        ]
    },
    {
        "id": "d242378b.b7a3f8",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "PH",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['PH Dosierung']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1280,
        "wires": [
            [
                "c2d8cd15.472e1",
                "9c1c8628.9a1dd8"
            ]
        ]
    },
    {
        "id": "190e5a17.c12416",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "e3a6336f.bafb8",
        "order": 4,
        "width": "7",
        "height": 0,
        "label": "Lampe",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 470,
        "y": 1360,
        "wires": [
            []
        ]
    },
    {
        "id": "1fca5f8e.aa5ef",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Lampe",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Poollampe']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 310,
        "y": 1360,
        "wires": [
            [
                "190e5a17.c12416",
                "1835ecfc.a5be23"
            ]
        ]
    },
    {
        "id": "7d990533.22002c",
        "type": "ui_button",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "69d56a45.efa354",
        "order": 0,
        "width": 0,
        "height": 0,
        "passthru": false,
        "label": "Refresh",
        "tooltip": "",
        "color": "",
        "bgcolor": "",
        "icon": "",
        "payload": "",
        "payloadType": "str",
        "topic": "",
        "x": 300,
        "y": 80,
        "wires": [
            [
                "a348ab33.6758c8",
                "b79854d3.4b8e38"
            ]
        ]
    },
    {
        "id": "678d6b22.8d8f04",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "69d56a45.efa354",
        "order": 1,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Letzte Aktualisierung Controller:",
        "format": "{{msg.timecontroller}}",
        "layout": "row-spread",
        "x": 670,
        "y": 140,
        "wires": []
    },
    {
        "id": "241649bf.ab3676",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Aktualisierung",
        "func": "var data    = JSON.parse(msg.payload);\n\nmsg.payload = (new Date()).toISOString()\nmsg.timecontroller = data['Time']['value'];\n\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 400,
        "y": 220,
        "wires": [
            [
                "678d6b22.8d8f04",
                "a808adc3.0ae87"
            ]
        ]
    },
    {
        "id": "f475f3f9.a48d4",
        "type": "ui_text",
        "z": "318c397.a9416c6",
        "group": "69d56a45.efa354",
        "order": 1,
        "width": 0,
        "height": 0,
        "name": "",
        "label": "Zeitstempel Sys:",
        "format": "{{msg.payload}}",
        "layout": "row-spread",
        "x": 940,
        "y": 200,
        "wires": []
    },
    {
        "id": "a808adc3.0ae87",
        "type": "moment",
        "z": "318c397.a9416c6",
        "name": "",
        "topic": "",
        "input": "",
        "inputType": "date",
        "inTz": "Europe/Berlin",
        "adjAmount": 0,
        "adjType": "hours",
        "adjDir": "add",
        "format": "HH:mm:ss YYYY-MM-DD",
        "locale": "de_DE",
        "output": "payload",
        "outputType": "msg",
        "outTz": "Europe/Berlin",
        "x": 700,
        "y": 200,
        "wires": [
            [
                "f475f3f9.a48d4"
            ]
        ]
    },
    {
        "id": "29fb817c.8c876e",
        "type": "ui_template",
        "z": "318c397.a9416c6",
        "group": "8b6e9734.1c0ba8",
        "name": "Display image",
        "order": 1,
        "width": "12",
        "height": "9",
        "format": "\n<img alt=\"HTTP Snap\" src=\"data:image/jpg;base64,{{msg.payload}}\" />\n",
        "storeOutMessages": true,
        "fwdInMessages": true,
        "resendOnRefresh": false,
        "templateScope": "local",
        "x": 560,
        "y": 1840,
        "wires": [
            []
        ]
    },
    {
        "id": "1c867820.340a38",
        "type": "link in",
        "z": "318c397.a9416c6",
        "name": "",
        "links": [
            "4ce739ae.a5bc08"
        ],
        "x": 285,
        "y": 1840,
        "wires": [
            [
                "29fb817c.8c876e"
            ]
        ]
    },
    {
        "id": "6abd3628.c3cc48",
        "type": "ui_chart",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "4937006.a98aa",
        "order": 0,
        "width": "9",
        "height": "5",
        "label": "",
        "chartType": "line",
        "legend": "false",
        "xformat": "HH:mm:ss",
        "interpolate": "linear",
        "nodata": "",
        "dot": false,
        "ymin": "",
        "ymax": "",
        "removeOlder": "12",
        "removeOlderPoints": "",
        "removeOlderUnit": "3600",
        "cutout": 0,
        "useOneColor": false,
        "useUTC": false,
        "colors": [
            "#1f77b4",
            "#aec7e8",
            "#ff7f0e",
            "#2ca02c",
            "#98df8a",
            "#d62728",
            "#ff9896",
            "#9467bd",
            "#c5b0d5"
        ],
        "useOldStyle": false,
        "outputs": 1,
        "x": 610,
        "y": 1500,
        "wires": [
            []
        ]
    },
    {
        "id": "6e74d56c.4244cc",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "Schwall",
        "func": "var data    = JSON.parse(msg.payload);\nmsg.payload = data['Schwalldusche']['value'];\n\nif ( msg.payload == 0) {\n  msg.payload = false;\n  msg.state = \"A_Aus\";\n}\nif ( msg.payload == 1) {\n  msg.payload = true;\n  msg.state = \"A_Ein\";\n}\nif ( msg.payload == 2) {\n  msg.payload = false;\n  msg.state = \"Aus\";\n}\nif ( msg.payload == 3) {\n  msg.payload = true;\n  msg.state = \"Ein\";\n}\n\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 320,
        "y": 1120,
        "wires": [
            [
                "ef8b23ed.bee7",
                "29181cd7.1e3a74"
            ]
        ]
    },
    {
        "id": "ef8b23ed.bee7",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "e3a6336f.bafb8",
        "order": 4,
        "width": "7",
        "height": 0,
        "label": "Schwall",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 480,
        "y": 1120,
        "wires": [
            []
        ]
    },
    {
        "id": "d40b3010.efd5b",
        "type": "ui_multistate_switch",
        "z": "318c397.a9416c6",
        "name": "",
        "group": "1286dc38.64ef74",
        "order": 4,
        "width": "8",
        "height": 0,
        "label": "Relais 10",
        "stateField": "state",
        "enableField": "enable",
        "rounded": false,
        "useThemeColors": false,
        "hideSelectedLabel": false,
        "options": [
            {
                "label": "Aus",
                "value": "Aus",
                "valueType": "str",
                "color": "#ff0000"
            },
            {
                "label": "Ein",
                "value": "Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Ein",
                "value": "A_Ein",
                "valueType": "str",
                "color": "#00ff00"
            },
            {
                "label": "A_Aus",
                "value": "A_Aus",
                "valueType": "str",
                "color": "#ff0000"
            }
        ],
        "x": 480,
        "y": 940,
        "wires": [
            []
        ]
    },
    {
        "id": "b79854d3.4b8e38",
        "type": "link out",
        "z": "318c397.a9416c6",
        "name": "PoolRefresh",
        "links": [
            "a1aa529b.ba8d7"
        ],
        "x": 395,
        "y": 40,
        "wires": []
    },
    {
        "id": "e409e343.cb04a",
        "type": "amazon-echo-device",
        "z": "318c397.a9416c6",
        "name": "Pool",
        "topic": "Pool",
        "x": 310,
        "y": 1920,
        "wires": [
            [
                "d337e599.4f6458"
            ]
        ]
    },
    {
        "id": "2b03363c.7ff16a",
        "type": "link in",
        "z": "318c397.a9416c6",
        "name": "",
        "links": [
            "589d1a85.a78f24"
        ],
        "x": 175,
        "y": 1920,
        "wires": [
            [
                "e409e343.cb04a"
            ]
        ]
    },
    {
        "id": "d337e599.4f6458",
        "type": "function",
        "z": "318c397.a9416c6",
        "name": "",
        "func": "msg.wasser = global.get(\"POOL_WASSER\"),\n\nmsg.payload = \"Pooltemperatur: \"+msg.wasser+\" Grad.\";\n\nreturn msg",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 540,
        "y": 1920,
        "wires": [
            [
                "ca7f7d49.4976f"
            ]
        ]
    },
    {
        "id": "ca7f7d49.4976f",
        "type": "delay",
        "z": "318c397.a9416c6",
        "name": "",
        "pauseType": "delay",
        "timeout": "2",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 740,
        "y": 1920,
        "wires": [
            [
                "be3f9f4f.2fd67"
            ]
        ]
    },
    {
        "id": "be3f9f4f.2fd67",
        "type": "alexa-remote-routine",
        "z": "318c397.a9416c6",
        "name": "",
        "account": "80e9d8a5.7cc658",
        "routineNode": {
            "type": "speak",
            "payload": {
                "type": "regular",
                "text": {
                    "type": "msg",
                    "value": "payload"
                },
                "devices": [
                    "G090XG100286015J"
                ]
            }
        },
        "x": 920,
        "y": 1920,
        "wires": [
            []
        ]
    },
    {
        "id": "808dfc43.62afa",
        "type": "comment",
        "z": "318c397.a9416c6",
        "name": "Noch nicht getestet",
        "info": "",
        "x": 720,
        "y": 800,
        "wires": []
    },
    {
        "id": "85536a71.b938a8",
        "type": "ui_group",
        "name": "Pool2",
        "tab": "c02f49a5.46d638",
        "order": 1,
        "disp": false,
        "width": "15",
        "collapse": false
    },
    {
        "id": "dab30245.0e8cf",
        "type": "ui_group",
        "name": "Status Led",
        "tab": "c02f49a5.46d638",
        "order": 3,
        "disp": false,
        "width": "6",
        "collapse": false
    },
    {
        "id": "25fe678.036cb98",
        "type": "ui_group",
        "name": "Status",
        "tab": "c02f49a5.46d638",
        "order": 2,
        "disp": false,
        "width": "6",
        "collapse": false
    },
    {
        "id": "1286dc38.64ef74",
        "type": "ui_group",
        "name": "Relais",
        "tab": "c02f49a5.46d638",
        "order": 4,
        "disp": false,
        "width": "8",
        "collapse": false
    },
    {
        "id": "e3a6336f.bafb8",
        "type": "ui_group",
        "name": "Relais2",
        "tab": "c02f49a5.46d638",
        "order": 5,
        "disp": false,
        "width": "7",
        "collapse": false
    },
    {
        "id": "69d56a45.efa354",
        "type": "ui_group",
        "name": "Button",
        "tab": "c02f49a5.46d638",
        "order": 7,
        "disp": false,
        "width": "6",
        "collapse": false
    },
    {
        "id": "8b6e9734.1c0ba8",
        "type": "ui_group",
        "name": "Kamera",
        "tab": "c02f49a5.46d638",
        "order": 6,
        "disp": false,
        "width": "12",
        "collapse": false
    },
    {
        "id": "4937006.a98aa",
        "type": "ui_group",
        "name": "Redox Chart",
        "tab": "c02f49a5.46d638",
        "order": 8,
        "disp": false,
        "width": "9",
        "collapse": false
    },
    {
        "id": "80e9d8a5.7cc658",
        "type": "alexa-remote-account",
        "name": "",
        "authMethod": "proxy",
        "proxyOwnIp": "192.168.178.39",
        "proxyPort": "3456",
        "cookieFile": "/home/alex",
        "refreshInterval": "1",
        "alexaServiceHost": "layla.amazon.de",
        "amazonPage": "amazon.de",
        "acceptLanguage": "de-DE",
        "userAgent": "",
        "useWsMqtt": "on",
        "autoInit": "on"
    },
    {
        "id": "c02f49a5.46d638",
        "type": "ui_tab",
        "name": "Pool2",
        "icon": "dashboard",
        "disabled": false,
        "hidden": false
    }
]

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Hi,
ich habe endlich Zeit gefunden HA zu installieren. Node Red ist ebenfalls mit einem Flow erstellt.
Wie bekomme ich nun die Temperaturen (ui_text) in meinem Dashboard angezeigt?
Ich finde im Dashboard keine Möglichkeit da irgendwie einen Bezug zu Node Red zu erstellen.

Vielen Dank und viele Grüße Steve

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Vielleicht hiflt es ;-)
Bild
Bild
Bild
Bild

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Ich kann jetzt mit Node-Red die Relais schalten wenn es auf Automatik gestellt wurde ( Auch im Dashboard ). Automatik Ein / Aus Funktioniert. Was nicht funktioniert ist Ein / Aus warum auch immer .
Prinzipiell ist es ja egal aber ich frage mich warum ich State 2 /3 nicht setzen kann. Prinziepiell egal denn funktionieren würde es so aber ich will es verstehen.

Bild Bild Bild


Fertig im Dashboard sieht es dann so aus
Bild Bild Bild

Benutzeravatar
Alex
Administrator
Beiträge: 9988
Registriert: 28. Mai 2014, 23:00

Re: Home Assistant + Node Red

Beitrag von Alex »

...es gibt über die SetState keinen State 2 oder 3... es gibt ja nur 0 oder 1
Und 1 (ein) lässt es sich nur schalten wenn das Relais auf AUTO steht... mit 0 wird es wieder zurückgeschaltet. Also alles was Du über die SetState EIN schaltest, musst Du so auch wieder zurückschalten (von alleine schaltet es nicht mehr zurück)

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Basti hat geschrieben: 11. September 2021, 17:11 Vielleicht hiflt es ;-)
Hallo Basti, besten Dank. Ich teste das später wenn ich zuhause bin.

markus
Beiträge: 168
Registriert: 23. Januar 2019, 10:57

Re: Home Assistant + Node Red

Beitrag von markus »

Hi,

@Basti
Alex hat das schon erklärt. Bei mir reichen leider die Programmier Kenntnisse nicht aus um z.B. die existierende Library von Yannic (https://github.com/ylabonte/procon-ip) in NodeRed einzubinden.
Für den IO-Broker gibt es da einen passenden Adapter.

@Tyr0n
Schau mal ein paar Thread weiter oben. Dort hab ich meinen Flow, den du dir 1:1 in NodeRed importieren kannst. Daran kannst du dich orientieren und auf deine Bedürfnisse anpassen.

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Das von dir zitierte Git ist kein node-red gut sondern ein IobrokerGit. Wenn du HA und oder NodeRed verwenden möchtest kannst du dies nicht einfach so verwenden.
Ich kann euch gerne behilflich sein, auch wenn ich nicht der beste darin bin aber dann fragt einfach und ich versuchs.

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Hallo Basti,

ein kleines howto wäre natürlich sehr nice. :)

markus
Beiträge: 168
Registriert: 23. Januar 2019, 10:57

Re: Home Assistant + Node Red

Beitrag von markus »

Hallo Basti,
ja, das meinte ich mit einbinden. Sry war vielleicht etwas ungenau.

Im Prinzip müsste man einen neuen Node Programmieren, der als unterbau die Library von Yannic verwendet.

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Ich kenne die Schnittstelle von Iobroker / Procon nicht, aber was kann die mehr als HA und Node-Red?
Wenn ich mir deine Dashboard UI ansehe hast du doch eigentlicht alles auf dem Display was du brauchst ausser das du noch nicht die Relais Steueren kannst. Die Steuerung habe ich oben in Bilder über einen Mutliswitch anghängt. Ich denke mehr als das muss das Dashboard von Node nicht können ( Steuern und Anzeigen ).
Die Procon Datenpunkte werden zusätzlich an HA über Entitys weitergereicht und sind dann in der Heimautomatisierung vorhanden. Ich nutzte z.B. das Dashboard gar nicht sondern steuere alles über den Homeassistant.
Hier ein Beispiel.
Bild
Ich versuche alles so einfach wie möglich zu halten und am besten alles in einer App, sonst schimpft meine Frau.
Die ganzen Daten der Procon schreibe ich zusätzlich alle 60 Sekunden in eine Time based DB ( InfluxDB ) und könnte diese theoretisch überall importieren wenn gewünscht.
Ha häte den vorteil das theoretisch sogar die Procon mit Google Home reden könnte aller OK Google schalte bitte die Gegenstromanlage ein, aber soweit bin ich noch nicht.

Ja ein Node macht es definitv einfacher, aber theoretisch steht alles auf den drei seiten was man braucht. Mal sehen ob ich nen Howto schaffe oder ne kleine Anleitung.

installierte Nodes:

Code: Alles auswählen

node-red

node-red-contrib-calc

node-red-contrib-home-assistant-websocket

node-red-contrib-influxdb

node-red-contrib-moment

node-red-contrib-stoptimer

node-red-contrib-time-range-switch

node-red-contrib-timecheck

node-red-contrib-ui-led

node-red-contrib-ui-multistate-switch

node-red-dashboard

node-red-node-smooth

node-red-node-timeswitch

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Guten Abend, ich komme noch einmal auf diese Home Assistant + Node Red Sache zurück.
Noch verstehe ich das Ganze nicht wirklich bzgl. Node Red und das benutzen dessen Values auf dem HA Dashboard. In Videos konnte ich feststellen, dass ich mit Node Red einen Workflow starten kann. Und zwar kann ich mehrere unterschiedliche Smarthome Geräte damit kommunizieren lassen. In den Videos ist aber alles ausgehend von dem HA Dashboard und die darin enthaltenen Objekte/Entität oder wie auch immer man die Dinger nennen möchte.

Jetzt wurde hier jedoch die Inhalte aus der GetState des ProCons via Nodered herausgelesen. Soweit so gut. Ich habe mal einen kurzen Flow erstellt:
flow.PNG
flow.PNG (37.97 KiB) 62 mal betrachtet
Der funktioniert auch. Dieser zeigt mir beim klicken auf:
flow2.PNG
flow2.PNG (29.09 KiB) 62 mal betrachtet
und auf das:
flow3.PNG
flow3.PNG (14.33 KiB) 62 mal betrachtet
das hier an:
flow4.PNG
flow4.PNG (10.45 KiB) 62 mal betrachtet
Nun frage ich mich jedoch, was ich tun muss, um z.B. den Redox Wert hier einpflegen zu könne:
Übersicht.PNG
Dashboard.PNG

Das habe ich noch nicht wirklich hinbekommen. Könnte mir jemand hierzu Hilfestellung geben? Besten Dank im Voraus.

VG Steve

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Bei Pool rechts oben auf bearbeiten und dann unten rechts auf das Hinzufügen dann Entität auswählen und deinen redix wert suchen , anklicken fertig.
Ich hoffe ich verstehe es richtig , das du dies im Dashboard bei HA unter Pool haben möchtest .

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Wow das ging flott.. Genau. Im HA Dashboard wo auch meine andere SmartHome Objekte sind.
Home Assistant -> Übersicht -> Karte Hinzufügen -> Entität....
Ich finde unter Entität kein Redox. Nicht was im Node Red angelegt ist.

Muss ich irgendwo im Node Red etwas einstellen der es Erlaubt die Redox ui_text als Entität anzeigen zu lassen?

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Du musst noch in Mode Red die ha nodes anlegen für redix brauchst du current state , die Funktion findest du auf der linken Seite so blau , hellblau . Wenn du es da nicht hast musst du es installieren in Mode Red.

Bild Bild

Installation unter
Bild

Kompletter Flow
Bild
Zuletzt geändert von Basti am 16. September 2021, 21:01, insgesamt 2-mal geändert.

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Und was mache ich mit dieser Current State?
current.PNG
current.PNG (43.15 KiB) 52 mal betrachtet

Update:// Dein Symbol sieht aus wie die Entity Funktion. Ist das wirklich Current State?

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Oh mann ja sorry, klar Entität nicht current State , sorry.
Habe dir oben in meinem letzten Beitrag nochmal den kompletten Flow angehängt. Das Ende vom Flow muss die Entität stehen, diese muss noch Konfiguriert werden siehe Bild.
Sollte kein Server eingetragen werden musst du dies noch nachholen.

Bild

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Hmm dein Flow sieht komplett anders aus als meiner :(

Egal wo ich die Entity hinziehe bekomme ich einen Error drunter angezeigt:
error.PNG
error.PNG (48.21 KiB) 46 mal betrachtet

Basti
Beiträge: 270
Registriert: 9. Juni 2015, 09:31

Re: Home Assistant + Node Red

Beitrag von Basti »

Die Entität kommt nach Redox Funktion.

Die erste funktion liest die Daten vom Poolcontroller und die 2 Holt sich die Daten Redox / Temp usw.

zweite Redox Funktion die du ja bereits hast und daran mus die HA-E
also nach diesem Code

Code: Alles auswählen

var data    = JSON.parse(msg.payload);
msg.payload = data['Redox']['value'];
return msg;
Das rote Symbol unter der HA-E beduetet das du keine Verbindung zum Server hast. Klicke bitte doppelt auf das Symbol und dann auf Server rechts daneben. Das Nächste Menü sollte so aussehen da du ja HA in Super installiert hast.
Bild

ja mein flow ist anders, ich runde noch die daten und schreibe alles in eine Datenbank

tyr0n
Beiträge: 717
Registriert: 20. November 2018, 13:47

Re: Home Assistant + Node Red

Beitrag von tyr0n »

Japp so sieht es bei mir aus. Ich habe nun auch die Entity Funktion hinter der Redox Funktion.
Allerdings muss ich diesen Hinweis mal nachgehen.
error.PNG
error.PNG (43.38 KiB) 40 mal betrachtet