Moin Egon
Die Ruuvi Parameter habe ich mir aus der Seite für die APP rauskopiert.
In dem Flow sind nur 6 Nodes. Die müsstest du bei dir ändern.
In den ersten 2 setze ich die normalen Globalen Veriablen zusätzlich auf neue Variablen.
(Die der bisherigen Vorgehensweise, Value Bezeichnung klein, Name für Value Bezeichnung mit großem N davor gleicht(“temp1, Ntemp1”))
Die beiden musst du bie dier rein kopieren
Die Feuchte habe ich auch dazugenommen, fasls du Feuchte auch auf Alarm setzen möchtest.
Die anderen 4 musst du bei dir ersetzen, oder du änderst sie nach dem Vorbild,
Texte kopieren und bei dir einfügen.
Ich denke es funktioniert 
[
{
"id": "5bbbd49b9595832b",
"type": "function",
"z": "da40f7655111191a",
"name": "tausche Global",
"func": "\n//if (global.get(\"ruuvitags\") === true) { // wenn Ruuvitags vorhanden die // in Zeile 2 und 40 löschen, zum Testen ohne Ruuvis nicht löschen\n let ruuvitag0_temp = (global.get(\"ruuvitag_0\") == undefined || global.get(\"ruuvitag_0\").temp == null || global.get(\"ruuvitag_0\").temp === \"\") ? \"0\" : global.get(\"ruuvitag_0\").temp;\n let ruuvitag1_temp = (global.get(\"ruuvitag_1\") == undefined || global.get(\"ruuvitag_1\").temp == null || global.get(\"ruuvitag_1\").temp === \"\") ? \"0\" : global.get(\"ruuvitag_1\").temp;\n let ruuvitag2_temp = (global.get(\"ruuvitag_2\") == undefined || global.get(\"ruuvitag_2\").temp == null || global.get(\"ruuvitag_2\").temp === \"\") ? \"0\" : global.get(\"ruuvitag_2\").temp;\n\n let ruuvitag0_hum = (global.get(\"ruuvitag_0\") == undefined || global.get(\"ruuvitag_0\").hum == null || global.get(\"ruuvitag_0\").hum === \"\") ? \"0\" : global.get(\"ruuvitag_0\").hum;\n let ruuvitag1_hum = (global.get(\"ruuvitag_1\") == undefined || global.get(\"ruuvitag_1\").hum == null || global.get(\"ruuvitag_1\").hum === \"\") ? \"0\" : global.get(\"ruuvitag_1\").hum;\n let ruuvitag2_hum = (global.get(\"ruuvitag_2\") == undefined || global.get(\"ruuvitag_2\").hum == null || global.get(\"ruuvitag_2\").hum === \"\") ? \"0\" : global.get(\"ruuvitag_2\").hum;\n\n let ruuvitag_0_name = global.get(\"ruuvitag_0_name\");\n let ruuvitag_1_name = global.get(\"ruuvitag_1_name\");\n let ruuvitag_2_name = global.get(\"ruuvitag_2_name\");\n\n global.set(\"ruuvi0\",ruuvitag0_temp);\n global.set(\"ruuvi1\",ruuvitag1_temp);\n global.set(\"ruuvi2\",ruuvitag2_temp);\n \n global.set(\"ruuvi0H\",ruuvitag0_hum);\n global.set(\"ruuvi1H\",ruuvitag1_hum);\n global.set(\"ruuvi2H\",ruuvitag2_hum);\n \n global.set(\"Nruuvi0\",ruuvitag_0_name);\n global.set(\"Nruuvi1\",ruuvitag_1_name);\n global.set(\"Nruuvi2\",ruuvitag_2_name);\n \n global.set(\"Nruuvi0H\",ruuvitag_0_name);\n global.set(\"Nruuvi1H\",ruuvitag_1_name);\n global.set(\"Nruuvi2H\",ruuvitag_2_name);\n\n \n//} // wenn Ruuvitags vorhanden die // in Zeile 2 und 40 löschen, zum Testen ohne Ruuvis nicht löschen\n\n\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 420,
"y": 120,
"wires": [
[]
]
},
{
"id": "a9559bcc37d2f3c8",
"type": "inject",
"z": "da40f7655111191a",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "10",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 230,
"y": 120,
"wires": [
[
"5bbbd49b9595832b"
]
]
},
{
"id": "1f161e10843a2162",
"type": "function",
"z": "da40f7655111191a",
"name": "Auswertung_Max",
"func": "\nlet sensor = Number(flow.get(\"tempsensor_alarm1\"));\nlet alarm = Number(flow.get(\"Alarmtemperatur_max_alarm1\"));\nlet hys = Number(flow.get(\"Hysterese_max_alarm1\"));\nlet temp = 0;\n\nconst sensorMap = {\n 1: \"temp1\",\n 2: \"temp2\",\n 3: \"temp3\",\n 4: \"temp4\",\n 5: \"dimmytemp1\",\n 6: \"dimmytemp2\",\n 7: \"ruuvi0\",\n 8: \"ruuvi1\",\n 9: \"ruuvi2\",\n 10:\"ruuvi0H\",\n 11:\"ruuvi1H\",\n 12:\"ruuvi2H\"\n};\n\nlet variableName = sensorMap[sensor];\nmsg.label = (global.get(\"N\"+variableName));\n\nif (variableName) {\n temp = Number(global.get(variableName));\n} else {\n temp = null;\n}\n\nif (hys === 0) {\n msg.payload = false;\n return [msg, null]; \n}\n\nif (temp > alarm) {\n msg.payload = true;\n return [msg, null];\n} \nelse if (temp <= (alarm - hys)) {\n msg.payload = false;\n return [msg, null];\n} \nelse {\n \n return [null, null]; \n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 910,
"y": 100,
"wires": [
[]
]
},
{
"id": "aa793c2bdb763c22",
"type": "function",
"z": "da40f7655111191a",
"name": "Sensor Name + Temp",
"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: \"ruuvi0\",\n 8: \"ruuvi1\",\n 9: \"ruuvi2\",\n 10:\"ruuvi0H\",\n 11:\"ruuvi1H\",\n 12:\"ruuvi2H\"\n};\n\nlet variableName = sensorMap[sensor];\n\nif (variableName) {\n msg.label = (global.get(\"N\"+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": 920,
"y": 160,
"wires": [
[]
]
},
{
"id": "7b832956647d4281",
"type": "function",
"z": "da40f7655111191a",
"name": "Auswertung_Min",
"func": "let sensor = Number(flow.get(\"tempsensor_alarm1\"));\nlet alarm = Number(flow.get(\"Alarmtemperatur_min_alarm1\"));\nlet temp = 0;\nlet hys = Number(flow.get(\"Hysterese_min_alarm1\"));\n\nconst sensorMap = {\n 1: \"temp1\",\n 2: \"temp2\",\n 3: \"temp3\",\n 4: \"temp4\",\n 5: \"dimmytemp1\",\n 6: \"dimmytemp2\",\n 7: \"ruuvi0\",\n 8: \"ruuvi1\",\n 9: \"ruuvi2\",\n 10:\"ruuvi0H\",\n 11:\"ruuvi1H\",\n 12:\"ruuvi2H\"\n};\n\nlet variableName = sensorMap[sensor];\nmsg.label = (global.get(\"N\"+variableName));\n\nif (variableName) {\n temp = Number(global.get(variableName));\n} else {\n temp = null;\n}\n \n// Logik für Hysterese = 0 (Sofortiger Abbruch)\nif (hys === 0) {\n msg.payload = false;\n return [msg, null];\n} \n\n// Logik für Minimal-Alarm\nif (temp < alarm) {\n msg.payload = true; // Alarm auslösen, wenn zu kalt\n return [msg, null];\n}\nelse if (temp >= (alarm + hys)) {\n msg.payload = false; // Alarm zurücksetzen, wenn warm genug\n return [msg, null];\n}\nelse {\n // Temperatur liegt im Hysterese-Bereich -> Zustand halten (nichts senden)\n return [null, null]; \n}\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 910,
"y": 220,
"wires": [
[]
]
},
{
"id": "f6668bb4814c4510",
"type": "comment",
"z": "da40f7655111191a",
"name": "Hier werden die Globalen Variablen angepasst",
"info": "",
"x": 330,
"y": 80,
"wires": []
},
{
"id": "1db07fdb27685296",
"type": "comment",
"z": "da40f7655111191a",
"name": "Hier ändert sich 7: 8: 9: + :10 :11 :12",
"info": "",
"x": 840,
"y": 60,
"wires": []
},
{
"id": "d3e23e50fd38c1f5",
"type": "ui_dropdown",
"z": "da40f7655111191a",
"name": "Sensor für Temperaturalarm1",
"label": "",
"tooltip": "Sensor für Temperaturalarm1",
"place": "Sensor",
"group": "35cee91dd885fdfd",
"order": 1,
"width": 6,
"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"
},
{
"label": "RuuviTag 1H",
"value": "10",
"type": "str"
},
{
"label": "RuuviTag 2H",
"value": "11",
"type": "str"
},
{
"label": "RuuviTag 3H",
"value": "12",
"type": "str"
}
],
"payload": "",
"topic": "",
"topicType": "str",
"className": "",
"x": 680,
"y": 160,
"wires": [
[]
]
},
{
"id": "01846477207ef092",
"type": "comment",
"z": "da40f7655111191a",
"name": "Hier ist :10 :11 :12 dazugekommen",
"info": "",
"x": 660,
"y": 120,
"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
}
]