Ich hab da mal was vorbereitet 
Ist jetzt nur für einen Alarm, aber das ist ja einfach zu kopieren und für einen 2. oder 3. Alarm zu erweitern. erst mal ganz ohne Schick Schnack wie Hysterese oder ähnliches. und es ist als Max nund nicht als Min Alarm ausgelegt. Da ich an dem System keine fühler habe habe ich die Temperatur mit den injekt Nodes geschrieben. am Link Out kommt true oder false zum weiterverarbeiten.
[
{
"id": "da40f7655111191a",
"type": "tab",
"label": "Temperaturalarm userflow",
"disabled": false,
"info": "",
"env": []
},
{
"id": "d1c5dcb5d483adf8",
"type": "ui_ui_control",
"z": "da40f7655111191a",
"name": "",
"events": "change",
"x": 140,
"y": 200,
"wires": [
[
"5291520995c21c03"
]
]
},
{
"id": "5291520995c21c03",
"type": "function",
"z": "da40f7655111191a",
"name": "check tab",
"func": "if (msg.payload == \"change\" && msg.name == \"Meine Konfig\") {\n msg.topic = \"changeTab\"\n return msg;\n}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 280,
"y": 200,
"wires": [
[
"5ee590d9c43fc575",
"80d7b2dcdd8f781c"
]
]
},
{
"id": "5ee590d9c43fc575",
"type": "file in",
"z": "da40f7655111191a",
"name": "",
"filename": "pekaway/tempsensor_alarm1",
"filenameType": "str",
"format": "utf8",
"chunk": false,
"sendError": false,
"encoding": "none",
"allProps": false,
"x": 520,
"y": 200,
"wires": [
[
"80208a5d09ac3d04"
]
]
},
{
"id": "80208a5d09ac3d04",
"type": "ui_dropdown",
"z": "da40f7655111191a",
"name": "Tempsensor Al1",
"label": "",
"tooltip": "Sensor für Temperaturalarm1",
"place": "Sensor",
"group": "35cee91dd885fdfd",
"order": 20,
"width": "3",
"height": 1,
"passthru": true,
"multiple": false,
"options": [
{
"label": "Temp Sensor 1",
"value": "1",
"type": "str"
},
{
"label": "Temp Sensor 2",
"value": "2",
"type": "str"
},
{
"label": "Temp Sensor 3",
"value": "3",
"type": "str"
},
{
"label": "Temp Sensor 4",
"value": "4",
"type": "str"
},
{
"label": "Dimmy Temp 1",
"value": "5",
"type": "str"
},
{
"label": "Dimmy Temp 2",
"value": "6",
"type": "str"
},
{
"label": "RuuviTag 1",
"value": "7",
"type": "str"
},
{
"label": "RuuviTag 2",
"value": "8",
"type": "str"
},
{
"label": "RuuviTag 3",
"value": "9",
"type": "str"
}
],
"payload": "",
"topic": "",
"topicType": "str",
"className": "",
"x": 780,
"y": 200,
"wires": [
[
"3fba2ec657f186d3",
"6b6289fc3164dc94"
]
]
},
{
"id": "3fba2ec657f186d3",
"type": "file",
"z": "da40f7655111191a",
"name": "",
"filename": "pekaway/tempsensor_alarm1",
"filenameType": "str",
"appendNewline": false,
"createDir": true,
"overwriteFile": "true",
"encoding": "none",
"x": 1100,
"y": 200,
"wires": [
[]
]
},
{
"id": "6b6289fc3164dc94",
"type": "function",
"z": "da40f7655111191a",
"name": "updated",
"func": "\nlet alarm = msg.payload\nmsg.payload =\"tempsensor_alarm1 updated to \" + msg.payload\ndelete msg.topic\nflow.set (\"tempsensor_alarm1\",alarm)\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1040,
"y": 160,
"wires": [
[
"e5f3611dfa01a5d2"
]
]
},
{
"id": "e5f3611dfa01a5d2",
"type": "ui_toast",
"z": "da40f7655111191a",
"position": "top right",
"displayTime": "3",
"highlight": "",
"sendall": false,
"outputs": 0,
"ok": "OK",
"cancel": "",
"raw": false,
"className": "",
"topic": "",
"name": "",
"x": 1360,
"y": 140,
"wires": []
},
{
"id": "7d6ae885c66b3544",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": "2",
"topic": "",
"payload": "",
"payloadType": "date",
"x": 170,
"y": 160,
"wires": [
[
"5ee590d9c43fc575",
"80d7b2dcdd8f781c"
]
]
},
{
"id": "27f309eba97a2607",
"type": "ui_slider",
"z": "da40f7655111191a",
"name": "Alarmtemperatur 1",
"label": "Alarmtemperatur 1",
"tooltip": "",
"group": "35cee91dd885fdfd",
"order": 2,
"width": 0,
"height": 0,
"passthru": true,
"outs": "end",
"topic": "topic",
"topicType": "msg",
"min": "-10",
"max": "50",
"step": 1,
"className": "",
"x": 830,
"y": 280,
"wires": [
[
"e1aff98aa7644b9c",
"3c9a77d9abc2a43c"
]
]
},
{
"id": "80d7b2dcdd8f781c",
"type": "file in",
"z": "da40f7655111191a",
"name": "",
"filename": "pekaway/Alarmtemperatur_alarm1",
"filenameType": "str",
"format": "utf8",
"chunk": false,
"sendError": false,
"encoding": "none",
"allProps": false,
"x": 540,
"y": 280,
"wires": [
[
"27f309eba97a2607"
]
]
},
{
"id": "e1aff98aa7644b9c",
"type": "file",
"z": "da40f7655111191a",
"name": "",
"filename": "pekaway/Alarmtemperatur_alarm1",
"filenameType": "str",
"appendNewline": false,
"createDir": true,
"overwriteFile": "true",
"encoding": "none",
"x": 1120,
"y": 280,
"wires": [
[]
]
},
{
"id": "3c9a77d9abc2a43c",
"type": "function",
"z": "da40f7655111191a",
"name": "updated",
"func": "\nlet alarm = msg.payload\nmsg.payload =\"Alarmtemperaturr_alarm1 updated to \" + msg.payload\ndelete msg.topic\nflow.set (\"Alarmtemperatur_alarm1\",alarm)\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1040,
"y": 240,
"wires": [
[
"5ea5829fe05f5b42"
]
]
},
{
"id": "47da05f58ee0f6f8",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "10",
"crontab": "",
"once": true,
"onceDelay": "2",
"topic": "",
"payload": "",
"payloadType": "date",
"x": 430,
"y": 400,
"wires": [
[
"d2d9e64af1fc11c0",
"7f9b9c9f6e543d85"
]
]
},
{
"id": "5ea5829fe05f5b42",
"type": "delay",
"z": "da40f7655111191a",
"name": "",
"pauseType": "delay",
"timeout": "2",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 1200,
"y": 240,
"wires": [
[
"e5f3611dfa01a5d2"
]
]
},
{
"id": "d2d9e64af1fc11c0",
"type": "function",
"z": "da40f7655111191a",
"name": "Auswertung",
"func": "let sensor = Number(flow.get(\"tempsensor_alarm1\"));\nlet alarm = Number(flow.get(\"Alarmtemperatur_alarm1\"));\nlet temp = 0;\nconst sensorMap = {\n 1: \"temp1\",\n 2: \"temp2\",\n 3: \"temp3\",\n 4: \"temp4\",\n 5: \"dimmytemp1\",\n 6: \"dimmytemp2\",\n 7: \"ruuvitag_0\",\n 8: \"ruuvitag_1\",\n 9: \"ruuvitag_2\"\n};\n\nlet variableName = sensorMap[sensor];\n\nif (variableName) {\n temp = Number(global.get(variableName))\n \n}\nelse {\n temp = null\n }\n\nif (temp > alarm){\n msg.payload = true\n}\nelse {\n msg.payload = false\n}\n\nreturn msg;\n\n\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 630,
"y": 400,
"wires": [
[
"cda88016e565a640",
"59597a03adfe10d9"
]
]
},
{
"id": "7f9b9c9f6e543d85",
"type": "function",
"z": "da40f7655111191a",
"name": "Temperatur",
"func": "let sensor = Number(flow.get(\"tempsensor_alarm1\"));\n\nconst sensorMap = {\n 1: \"temp1\",\n 2: \"temp2\",\n 3: \"temp3\",\n 4: \"temp4\",\n 5: \"dimmytemp1\",\n 6: \"dimmytemp2\",\n 7: \"ruuvitag_0\",\n 8: \"ruuvitag_1\",\n 9: \"ruuvitag_2\"\n};\n\nlet variableName = sensorMap[sensor];\n\nif (variableName) {\n msg.payload = Number(global.get(variableName));\n} else {\n msg.payload = null;\n}\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 630,
"y": 440,
"wires": [
[
"3dec2258ee5b5d7d"
]
]
},
{
"id": "cda88016e565a640",
"type": "debug",
"z": "da40f7655111191a",
"name": "debug 824",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 850,
"y": 400,
"wires": []
},
{
"id": "3dec2258ee5b5d7d",
"type": "debug",
"z": "da40f7655111191a",
"name": "debug 825",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 850,
"y": 460,
"wires": []
},
{
"id": "a8e995925237f906",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "22",
"payloadType": "num",
"x": 350,
"y": 680,
"wires": [
[
"847118f62382a656"
]
]
},
{
"id": "99c85f5558197777",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "24",
"payloadType": "num",
"x": 350,
"y": 740,
"wires": [
[
"847118f62382a656"
]
]
},
{
"id": "24880fc76ee104c4",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "20",
"payloadType": "num",
"x": 350,
"y": 620,
"wires": [
[
"847118f62382a656"
]
]
},
{
"id": "847118f62382a656",
"type": "function",
"z": "da40f7655111191a",
"name": "function 101",
"func": "global.set(\"temp2\",msg.payload)\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 590,
"y": 680,
"wires": [
[
"b0eb6d27bae7276e"
]
]
},
{
"id": "b0eb6d27bae7276e",
"type": "debug",
"z": "da40f7655111191a",
"name": "debug 826",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 830,
"y": 680,
"wires": []
},
{
"id": "59597a03adfe10d9",
"type": "link out",
"z": "da40f7655111191a",
"name": "Temperaturalarm1",
"mode": "link",
"links": [],
"x": 815,
"y": 360,
"wires": []
},
{
"id": "35cee91dd885fdfd",
"type": "ui_group",
"name": "Temperaturalarm",
"tab": "0f6a7ae7e0eefe7d",
"order": 9,
"disp": true,
"width": "6",
"collapse": false,
"className": ""
},
{
"id": "0f6a7ae7e0eefe7d",
"type": "ui_tab",
"name": "Meine Konfig",
"icon": "fa-spinner",
"order": 37,
"disabled": false,
"hidden": false
}
]
Die globale Variablen für die ruuvitag_
Sind mit Sicherheit falsch, die müssten noch geändert werden.
Werden aber erst angezeigt wenn Ruuvitag angeschlossen sind. Glaube ich wenigsten 