Hilfe bei einer Node Red Aufgabe

Aufgabenstellung/Versuchsdurchführung
Ziel der Aufgabe ist es, ein Dashboard zu entwickeln, welches die folgenden Anforderungen
erfüllt.
Der Nutzer möchte ein übersichtliches Dashboard auf dem er die Temperatur und die
Auslastung seines Rechners abrufen kann und die Werte über einen Zeitraum von 60
Sekunden in einem Chart grafisch dargestellt werden sowie die letzten 5 eingegangenen
Werte mit Ihren Zeitstempels in einer Tabelle anzeigt.
Über ein Dropdown-Menü sollen Fehlercodes ausgewählt werden können und an weitere
Instanzen verschickt werden. Dabei soll eine Sendebestätigung in Form einer
Benachrichtigung auf dem Dashboard angezeigt werden. Um die Übersichtlichkeit zu erhöhen
und einzelne Teilbereiche voneinander abzugrenzen, sollen die einzelnen Funktionalitäten
hinter Tabs verborgen werden.
Daraus ergeben sich folgende Anforderungen:
 Verbindung zum MQTT-Broker herstellen
 Aufbereitung der Daten für die weitere Nutzung
 Charts einrichten
 Tabellen einrichten
 Textfelder hinzufügen
 Dropdown-Menü vorbereiten
 Buttons hinzufügen
 Benachrichtigungen einrichten
 Mit >ui-control< Übersicht schaffen

das ist was ich bisher gemacht habe(JSON):

[
{
„id“: „9feb0d5017d91904“,
„type“: „tab“,
„label“: „MQTT“,
„disabled“: false,
„info“: „“,
„env“: []
},
{
„id“: „2413395a0bbc22e0“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 7“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 340,
„y“: 40,
„wires“: []
},
{
„id“: „17806628373ccc74“,
„type“: „split“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„splt“: „;“,
„spltType“: „str“,
„arraySplt“: „2“,
„arraySpltType“: „len“,
„stream“: false,
„addname“: „“,
„x“: 370,
„y“: 100,
„wires“: [
[
„5cf4c3601acad5e0“,
„dcf32ca5072d517c“
]
]
},
{
„id“: „5cf4c3601acad5e0“,
„type“: „join“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„mode“: „custom“,
„build“: „array“,
„property“: „payload“,
„propertyType“: „msg“,
„key“: „topic“,
„joiner“: „\n“,
„joinerType“: „str“,
„accumulate“: false,
„timeout“: „“,
„count“: „2“,
„reduceRight“: false,
„reduceExp“: „“,
„reduceInit“: „“,
„reduceInitType“: „“,
„reduceFixup“: „“,
„x“: 550,
„y“: 100,
„wires“: [
[
„6f2ffd9c00b7a70d“,
„a278d424904ad7e9“,
„13a6a57fe6074643“,
„64d3abb0a196cc13“
]
]
},
{
„id“: „6f2ffd9c00b7a70d“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „table function node“,
„func“: „// Aktuelle Tabelle aus dem Flow-Speicher abrufen oder ein leeres Array erstellen\nvar currentTable = flow.get(‚tableData‘) || [];\n\n// Neues Messwert-Zeitstempel-Paar erstellen\nvar newValueTimestamp = {\n Value: msg.payload.Value,\n Timestamp: msg.payload.Timestamp\n};\n\n// Das neue Messwert-Zeitstempel-Paar zum Anfang des Arrays hinzufügen\ncurrentTable.unshift(newValueTimestamp);\n\n// Die Tabelle auf maximal 5 Einträge begrenzen\nif (currentTable.length > 5) {\n currentTable.pop();\n}\n\n// Den aktualisierten Tabelle-Daten wieder in den Flow-Speicher setzen\nflow.set(‚tableData‘, currentTable);\n\n// Den Payload auf die aktualisierte Tabelle setzen\nmsg.payload = currentTable;\n\nreturn msg;\n\n//Der Code oben erstellt ein Array namens currentTable, das die in der Tabelle anzuzeigenden Daten enthält. Dieses Array wird im Flow-Speicher gespeichert, sodass es zwischen verschiedenen "function"-Nodes und Zeitschritten gemeinsam genutzt werden kann.\n\n//Jedes Mal, wenn neue Messwert-Zeitstempel-Paare empfangen werden, wird ein neues Objekt newValueTimestamp erstellt, das die "Value" und "Timestamp" Eigenschaften enthält.\n\n//Das neue Messwert-Zeitstempel-Paar wird am Anfang des Arrays currentTable hinzugefügt. Dadurch wird sichergestellt, dass die neuesten Einträge zuerst angezeigt werden.\n\n//Wir überprüfen die Länge des Arrays und entfernen das älteste Element, wenn es mehr als 5 Einträge enthält, um die Anforderungen zu erfüllen.\n\n//Schließlich wird das aktualisierte currentTable-Array im Flow-Speicher aktualisiert, und der Payload wird auf das aktualisierte Array gesetzt.“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 810,
„y“: 100,
„wires“: [
[
„4f50d9e4be16fb3b“,
„a44b79daab205922“
]
]
},
{
„id“: „dcf32ca5072d517c“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 8“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 520,
„y“: 160,
„wires“: []
},
{
„id“: „a278d424904ad7e9“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 9“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 800,
„y“: 40,
„wires“: []
},
{
„id“: „4f50d9e4be16fb3b“,
„type“: „ui_table“,
„z“: „9feb0d5017d91904“,
„group“: „ef2d206e6f3daf7e“,
„name“: „“,
„order“: 1,
„width“: 0,
„height“: 0,
„columns“: [
{
„field“: „Spalte:JSON“,
„title“: „SPALTE“,
„width“: „“,
„align“: „left“,
„formatter“: „html“,
„formatterParams“: {
„target“: „_blank“
}
},
{
„field“: "Value.JSON ",
„title“: "VALUE ",
„width“: „“,
„align“: „left“,
„formatter“: „html“,
„formatterParams“: {
„target“: „_blank“
}
}
],
„outputs“: 0,
„cts“: false,
„x“: 1090,
„y“: 100,
„wires“: []
},
{
„id“: „a44b79daab205922“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 10“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „payload“,
„targetType“: „msg“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1080,
„y“: 40,
„wires“: []
},
{
„id“: „13a6a57fe6074643“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „chart function node“,
„func“: „// 1. Überprüfen, ob die Flow-Variable "chartData" bereits existiert oder ein leeres Array erstellen.\nvar chartData = flow.get(‚chartData‘) || [];\n\n// 2. Erstellen Sie ein neues Objekt mit den Werten aus der empfangenen Nachricht.\nvar newValueTimestamp = {\n x: msg.payload.Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n y: msg.payload.Value\n};\n\n// 3. Fügen Sie das neue Objekt der "chartData"-Flow-Variable hinzu.\nchartData.push(newValueTimestamp);\n\n// 4. Stellen Sie sicher, dass die "chartData" nur die letzten 60 Einträge behält.\nif (chartData.length > 60) {\n chartData.shift(); // Entfernen Sie den ältesten Eintrag, um Platz für den neuen zu schaffen.\n}\n\n// 5. Erstellen Sie die Chart-Datenstruktur im JSON-Format.\nvar chartPayload = [\n {\n series: ["Werte"],\n data: [chartData],\n labels: ["Zeit"],\n }\n];\n\n// 6. Aktualisieren Sie die Flow-Variable mit den aktualisierten Chart-Daten.\nflow.set(‚chartData‘, chartData);\n\n// 7. Weisen Sie den Chart-Daten die Nachrichten-Payload zu.\nmsg.payload = chartPayload;\n\nreturn msg;\n\n\n//Der Code erstellt eine Flow-Variable namens "chartData", um die letzten 60 Werte zu speichern.\n\n//Er erstellt ein neues Objekt mit den Werten aus der empfangenen Nachricht und wandelt den Zeitstempel in Millisekunden um.\n\n//Das neue Objekt wird zur "chartData"-Flow-Variable hinzugefügt.\n\n//Der Code stellt sicher, dass nur die letzten 60 Einträge in der Flow-Variable gespeichert sind, wodurch eine FIFO-Queue implementiert wird.\n\n//Er erstellt die Chart-Datenstruktur im JSON-Format, wie in Ihrer Aufgabenstellung gefordert.\n\n//Die Flow-Variable "chartData" wird aktualisiert, um die aktuellen Daten zu speichern.\n\n//Schließlich wird die Chart-Datenstruktur an die Nachrichten-Payload übergeben, um sie an einen "ui_chart"-Node oder einen geeigneten Chart-Node für Ihr Dashboard weiterzuleiten.“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 810,
„y“: 180,
„wires“: [
[
„21171abf9686f3c3“,
„dd1e74cea56d2958“
]
]
},
{
„id“: „21171abf9686f3c3“,
„type“: „ui_chart“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „aefce03b6158a82d“,
„order“: 2,
„width“: 0,
„height“: 0,
„label“: „Temperaturverlauf“,
„chartType“: „line“,
„legend“: „true“,
„xformat“: „HH:mm:ss“,
„interpolate“: „linear“,
„nodata“: „“,
„dot“: false,
„ymin“: „1“,
„ymax“: „120“,
„removeOlder“: 1,
„removeOlderPoints“: „“,
„removeOlderUnit“: „1“,
„cutout“: 0,
„useOneColor“: false,
„useUTC“: false,
„colors“: [
#ff80ff“,
#aec7e8“,
#ff7f0e“,
#2ca02c“,
#98df8a“,
#d62728“,
#ff9896“,
#9467bd“,
#c5b0d5
],
„outputs“: 1,
„useDifferentColor“: false,
„x“: 1070,
„y“: 180,
„wires“: [
[
„3a8ae4b3201f979a“,
„dd1e74cea56d2958“,
„3c50fedf03f9e063“
]
]
},
{
„id“: „3a8ae4b3201f979a“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 11“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „payload“,
„targetType“: „msg“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1300,
„y“: 180,
„wires“: []
},
{
„id“: „e309bc39b72e3f4b“,
„type“: „ui_text“,
„z“: „9feb0d5017d91904“,
„group“: „aefce03b6158a82d“,
„order“: 4,
„width“: 0,
„height“: 0,
„name“: „“,
„label“: „Temperatur“,
„format“: "{{msg.payload}} aktuelle Daten: ",
„layout“: „row-spread“,
„x“: 370,
„y“: 220,
„wires“: []
},
{
„id“: „64d3abb0a196cc13“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „usage function node“,
„func“: „// Annahme: msg.payload enthält die CPU-Auslastungsdaten im JSON-Format\n// Hier wird angenommen, dass die CPU-Auslastung als Zahl vorliegt\n\n// Neues Array für den Chart erstellen\nvar chartData = [];\n\n// Annahme: msg.payload enthält ein Array von CPU-Auslastungsdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n // Annahme: msg.payload[i].timestamp enthält den Zeitstempel\n // Annahme: msg.payload[i].usage enthält die CPU-Auslastung\n chartData.push({\n x: msg.payload[i].timestamp,\n y: msg.payload[i].usage\n });\n}\n\n// Den umgewandelten Chart-Daten im Payload speichern\nmsg.payload = chartData;\n\nreturn msg;\n\n\n//Dieser Code geht davon aus, dass die CPU-Auslastungsdaten in msg.payload als Array von Objekten im JSON-Format vorliegen, wobei jedes Objekt einen Zeitstempel (timestamp) und die CPU-Auslastung (usage) enthält. Der Code erstellt ein neues Array (chartData), das die erforderliche Struktur für den Chart hat und setzt die umgewandelten Daten in den msg.payload.“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 820,
„y“: 260,
„wires“: [
[
„dd1e74cea56d2958“,
„f6da6dcc83cffd46“
]
]
},
{
„id“: „dd1e74cea56d2958“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „function 3“,
„func“: „// Daten aus dem "chart function node" für Temperatur\nvar chartDataTemperature = flow.get(‚chartData‘) || [];\n\n// Daten aus dem "usage function node" für CPU-Auslastung\nvar chartDataUsage = flow.get(‚usageData‘) || [];\n\n// Annahme: msg.payload enthält die Temperaturdaten im JSON-Format\n// Hier wird angenommen, dass die Temperatur als Zahl vorliegt\n\n// Neues Array für den kombinierten Chart erstellen\nvar combinedChartData = [];\n\n// Annahme: msg.payload enthält ein Array von Temperaturdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n // Annahme: msg.payload[i].Timestamp enthält den Zeitstempel\n // Annahme: msg.payload[i].Value enthält die Temperatur\n combinedChartData.push({\n x: msg.payload[i].Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n y: msg.payload[i].Value\n });\n}\n\n// Fügen Sie die Temperaturdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(…chartDataTemperature);\n\n// Fügen Sie die CPU-Auslastungsdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(…chartDataUsage);\n\n// Die Länge des Arrays auf maximal 60 Einträge begrenzen\nif (combinedChartData.length > 60) {\n combinedChartData = combinedChartData.slice(-60);\n}\n\n// Erstellen Sie die Chart-Datenstruktur im JSON-Format für den neuen Chart\nvar combinedChartPayload = [\n {\n series: ["Temperatur", "CPU Auslastung"],\n data: [combinedChartData],\n labels: ["Zeit"],\n }\n];\n\n// Aktualisieren Sie die Flow-Variablen mit den aktualisierten Daten\nflow.set(‚combinedChartData‘, combinedChartData);\n\n// Weisen Sie den Chart-Daten die Nachrichten-Payload zu\nmsg.payload = combinedChartPayload;\n\nreturn msg;\n“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 1280,
„y“: 260,
„wires“: [
[
„605023dfa492ba31“,
„5d9d0ade23ef9a93“
]
]
},
{
„id“: „605023dfa492ba31“,
„type“: „ui_chart“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „e8c6fdf06e157bcd“,
„order“: 1,
„width“: 0,
„height“: 0,
„label“: „CPU-TEMP“,
„chartType“: „line“,
„legend“: „true“,
„xformat“: „HH:mm:ss“,
„interpolate“: „linear“,
„nodata“: „“,
„dot“: false,
„ymin“: „1“,
„ymax“: „120“,
„removeOlder“: 1,
„removeOlderPoints“: „“,
„removeOlderUnit“: „1“,
„cutout“: 0,
„useOneColor“: false,
„useUTC“: false,
„colors“: [
#1f77b4“,
#aec7e8“,
#00ff00“,
#2ca02c“,
#98df8a“,
#d62728“,
#ff9896“,
#9467bd“,
#c5b0d5
],
„outputs“: 1,
„useDifferentColor“: false,
„x“: 1470,
„y“: 260,
„wires“: [
[
„dd1e74cea56d2958“,
„381db56676b671d6“,
„e3e8989def966284“
]
]
},
{
„id“: „43ef798cac2747a2“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „a99cad6cfe4753de“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 130,
„y“: 200,
„wires“: [
[
„c01088ca1c12cb57“,
„17806628373ccc74“,
„e309bc39b72e3f4b“
]
]
},
{
„id“: „c01088ca1c12cb57“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 12“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 320,
„y“: 260,
„wires“: []
},
{
„id“: „4d69ad0fdeb8f182“,
„type“: „ui_dropdown“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„label“: „Nachrichten auswaehlen“,
„tooltip“: „“,
„place“: „Select option“,
„group“: „aefce03b6158a82d“,
„order“: 1,
„width“: 0,
„height“: 0,
„passthru“: true,
„multiple“: false,
„options“: [
{
„label“: „“,
„value“: „Empfangende Daten fehlerhaft“,
„type“: „str“
},
{
„label“: „“,
„value“: „CPU überhitzt“,
„type“: „str“
},
{
„label“: „“,
„value“: „Übertragungsformat ungültig“,
„type“: „str“
}
],
„payload“: „“,
„topic“: „topic“,
„topicType“: „msg“,
„x“: 390,
„y“: 380,
„wires“: [
[
„a618946bbf59df43“,
„ca8b45229c19651f“
]
]
},
{
„id“: „2d965e5f99f7a9fc“,
„type“: „ui_button“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „aefce03b6158a82d“,
„order“: 6,
„width“: 0,
„height“: 0,
„passthru“: true,
„label“: „Checken“,
„tooltip“: „“,
„color“: „“,
„bgcolor“: „“,
„icon“: „“,
„payload“: „control“,
„payloadType“: „flow“,
„topic“: „topic“,
„topicType“: „msg“,
„x“: 960,
„y“: 380,
„wires“: [
[
„d1f4194daa2a3117“,
„7b0c83a4884010f0“,
„08b72fee678a9928“
]
]
},
{
„id“: „a618946bbf59df43“,
„type“: „change“,
„z“: „9feb0d5017d91904“,
„name“: „Nachricht-umwandlung“,
„rules“: [
{
„t“: „set“,
„p“: „control“,
„pt“: „flow“,
„to“: „payload“,
„tot“: „msg“
}
],
„action“: „“,
„property“: „“,
„from“: „“,
„to“: „“,
„reg“: false,
„x“: 740,
„y“: 380,
„wires“: [
[
„2d965e5f99f7a9fc“,
„a6d9cf88fe66e5e1“
]
]
},
{
„id“: „d1f4194daa2a3117“,
„type“: „mqtt out“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/control“,
„qos“: „“,
„retain“: „“,
„respTopic“: „“,
„contentType“: „“,
„userProps“: „“,
„correl“: „“,
„expiry“: „“,
„broker“: „e172cbc91f2d372f“,
„x“: 1170,
„y“: 380,
„wires“: []
},
{
„id“: „bd140bdabd7706eb“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/control“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „e172cbc91f2d372f“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 1380,
„y“: 600,
„wires“: [
[
„e559997eb9e65748“,
„26ee14425b9b731a“
]
]
},
{
„id“: „e559997eb9e65748“,
„type“: „ui_toast“,
„z“: „9feb0d5017d91904“,
„position“: „top right“,
„displayTime“: „3“,
„highlight“: „“,
„sendall“: true,
„outputs“: 0,
„ok“: „OK“,
„cancel“: „“,
„raw“: false,
„topic“: „msg.topic“,
„name“: „“,
„x“: 1580,
„y“: 600,
„wires“: []
},
{
„id“: „7b0c83a4884010f0“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „function 4“,
„func“: „// Den Payload auf ">Steuerpaket versendet!" setzen\nmsg.payload = ">Steuerpaket versendet!";\n\nreturn msg;\n“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 1160,
„y“: 460,
„wires“: [
[
„5e4ceba81172d441“
]
]
},
{
„id“: „5e4ceba81172d441“,
„type“: „delay“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„pauseType“: „rate“,
„timeout“: „5“,
„timeoutUnits“: „seconds“,
„rate“: „1“,
„nbRateUnits“: „5“,
„rateUnits“: „second“,
„randomFirst“: „1“,
„randomLast“: „5“,
„randomUnits“: „seconds“,
„drop“: true,
„allowrate“: true,
„outputs“: 1,
„x“: 1380,
„y“: 440,
„wires“: [
[
„676fa42186e67f05“,
„b4fc2c45b88a4000“
]
]
},
{
„id“: „676fa42186e67f05“,
„type“: „function“,
„z“: „9feb0d5017d91904“,
„name“: „function 5“,
„func“: „// Leeren Payload setzen, um die Anzeige zu löschen\nmsg.payload = "";\n\nreturn msg;\n“,
„outputs“: 1,
„timeout“: 0,
„noerr“: 0,
„initialize“: „“,
„finalize“: „“,
„libs“: [],
„x“: 1580,
„y“: 460,
„wires“: [
[
„d82433be2c36f6bc“,
„f989298e3cac3bb2“
]
]
},
{
„id“: „d82433be2c36f6bc“,
„type“: „ui_text“,
„z“: „9feb0d5017d91904“,
„group“: „aefce03b6158a82d“,
„order“: 5,
„width“: 0,
„height“: 0,
„name“: „“,
„label“: „Status“,
„format“: „{{msg.payload}}“,
„layout“: „row-spread“,
„x“: 1750,
„y“: 460,
„wires“: []
},
{
„id“: „6c933531f8484a80“,
„type“: „ui_ui_control“,
„z“: „9feb0d5017d91904“,
„name“: „Klick-Liste“,
„events“: „all“,
„x“: 590,
„y“: 720,
„wires“: [
[
„161eefb76b931db9“,
„b32132e11e919d28“,
„24a18bf9247f511e“,
„ccf3723bea059331“
]
]
},
{
„id“: „161eefb76b931db9“,
„type“: „ui_button“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „13d2bb0ce29cde20“,
„order“: 1,
„width“: 0,
„height“: 0,
„passthru“: true,
„label“: „Temperatur“,
„tooltip“: „“,
„color“: „gelb“,
„bgcolor“: „“,
„icon“: „“,
„payload“: „{ "group": { "hide": ["Überblick", "Nachrichten"], "show": ["Temperatur"] } }“,
„payloadType“: „json“,
„topic“: „topic“,
„topicType“: „msg“,
„x“: 890,
„y“: 720,
„wires“: [
[
„0b7018fc8a9f5f5a“
]
]
},

{
„id“: „24a18bf9247f511e“,
„type“: „ui_button“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „13d2bb0ce29cde20“,
„order“: 2,
„width“: 0,
„height“: 0,
„passthru“: true,
„label“: „Nachrichten“,
„tooltip“: „“,
„color“: „red“,
„bgcolor“: „“,
„icon“: „“,
„payload“: „{ "group": { "hide": ["Temperatur", "Überblick"], "show": ["Nachrichten"] } }“,
„payloadType“: „json“,
„topic“: „topic“,
„topicType“: „msg“,
„x“: 890,
„y“: 880,
„wires“: [
[
„25cad911a8b23f68“
]
]
},
{
„id“: „b32132e11e919d28“,
„type“: „ui_button“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„group“: „13d2bb0ce29cde20“,
„order“: 3,
„width“: 0,
„height“: 0,
„passthru“: true,
„label“: „Ueberblick“,
„tooltip“: „“,
„color“: „green“,
„bgcolor“: „“,
„icon“: „“,
„payload“: „{ "group": { "hide": ["Temperatur", "Nachrichten"], "show": ["Überblick"] } }“,
„payloadType“: „json“,
„topic“: „topic“,
„topicType“: „msg“,
„x“: 890,
„y“: 800,
„wires“: [
[
„ce5b613e5e90f203“
]
]
},
{
„id“: „cd61bb48ecc5fa34“,
„type“: „inject“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„props“: [
{
„p“: „payload“
},
{
„p“: „topic“,
„vt“: „str“
}
],
„repeat“: „“,
„crontab“: „“,
„once“: false,
„onceDelay“: 0.1,
„topic“: „“,
„payload“: „“,
„payloadType“: „date“,
„x“: 360,
„y“: 720,
„wires“: [
[
„6c933531f8484a80“,
„6e1e8ea38ae9dec8“
]
]
},
{
„id“: „ce5b613e5e90f203“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 13“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „payload“,
„targetType“: „msg“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1320,
„y“: 800,
„wires“: []
},
{
„id“: „25cad911a8b23f68“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 14“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1300,
„y“: 900,
„wires“: []
},
{
„id“: „0b7018fc8a9f5f5a“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 15“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „payload“,
„targetType“: „msg“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1300,
„y“: 720,
„wires“: []
},
{
„id“: „a6d9cf88fe66e5e1“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 16“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 880,
„y“: 440,
„wires“: []
},
{
„id“: „b4fc2c45b88a4000“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 17“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1540,
„y“: 500,
„wires“: []
},
{
„id“: „26ee14425b9b731a“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 18“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1540,
„y“: 640,
„wires“: []
},
{
„id“: „08b72fee678a9928“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 19“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1160,
„y“: 420,
„wires“: []
},
{
„id“: „ccf3723bea059331“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 20“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 680,
„y“: 640,
„wires“: []
},
{
„id“: „6e1e8ea38ae9dec8“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 21“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 560,
„y“: 820,
„wires“: []
},
{
„id“: „ca8b45229c19651f“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 22“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 580,
„y“: 440,
„wires“: []
},
{
„id“: „381db56676b671d6“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 23“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1620,
„y“: 240,
„wires“: []
},
{
„id“: „5d9d0ade23ef9a93“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 24“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1420,
„y“: 220,
„wires“: []
},
{
„id“: „f989298e3cac3bb2“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 25“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1740,
„y“: 520,
„wires“: []
},
{
„id“: „f6da6dcc83cffd46“,
„type“: „debug“,
„z“: „9feb0d5017d91904“,
„name“: „debug 26“,
„active“: true,
„tosidebar“: true,
„console“: false,
„tostatus“: false,
„complete“: „false“,
„statusVal“: „“,
„statusType“: „auto“,
„x“: 1000,
„y“: 240,
„wires“: []
},
{
„id“: „0738c99136f2e37d“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/temperatur“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „a99cad6cfe4753de“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 140,
„y“: 100,
„wires“: [
[
„2413395a0bbc22e0“,
„17806628373ccc74“,
„e309bc39b72e3f4b“
]
]
},
{
„id“: „e3e8989def966284“,
„type“: „mqtt out“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„retain“: „“,
„respTopic“: „“,
„contentType“: „“,
„userProps“: „“,
„correl“: „“,
„expiry“: „“,
„broker“: „e172cbc91f2d372f“,
„x“: 1700,
„y“: 280,
„wires“: []
},
{
„id“: „3c50fedf03f9e063“,
„type“: „mqtt out“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„retain“: „“,
„respTopic“: „“,
„contentType“: „“,
„userProps“: „“,
„correl“: „“,
„expiry“: „“,
„broker“: „e172cbc91f2d372f“,
„x“: 1280,
„y“: 120,
„wires“: []
},
{
„id“: „6c3b4a3044a86f14“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „a99cad6cfe4753de“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 130,
„y“: 380,
„wires“: [
[
„4d69ad0fdeb8f182“
]
]
},
{
„id“: „e43e352ac64d29f5“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „a99cad6cfe4753de“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 250,
„y“: 580,
„wires“: [
[]
]
},
{
„id“: „4e64ef64ed0a7940“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/cpuusage“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „a99cad6cfe4753de“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 250,
„y“: 640,
„wires“: [
[]
]
},
{
„id“: „4621c975af23bd92“,
„type“: „mqtt in“,
„z“: „9feb0d5017d91904“,
„name“: „“,
„topic“: „red/control“,
„qos“: „2“,
„datatype“: „auto-detect“,
„broker“: „e172cbc91f2d372f“,
„nl“: false,
„rap“: true,
„rh“: 0,
„inputs“: 0,
„x“: 240,
„y“: 520,
„wires“: [
[]
]
},
{
„id“: „b82ce1da1a36f36a“,
„type“: „ui_spacer“,
„z“: „9feb0d5017d91904“,
„name“: „spacer“,
„group“: „aefce03b6158a82d“,
„order“: 3,
„width“: 6,
„height“: 1
},
{
„id“: „ef2d206e6f3daf7e“,
„type“: „ui_group“,
„name“: „Temperatur“,
„tab“: „0d2b5638cd5a7cd7“,
„order“: 2,
„disp“: true,
„width“: 6,
„collapse“: false
},
{
„id“: „aefce03b6158a82d“,
„type“: „ui_group“,
„name“: „Nacrichten“,
„tab“: „0d2b5638cd5a7cd7“,
„order“: 3,
„disp“: true,
„width“: 6,
„collapse“: false
},
{
„id“: „e8c6fdf06e157bcd“,
„type“: „ui_group“,
„name“: „Ueberblick“,
„tab“: „0d2b5638cd5a7cd7“,
„order“: 4,
„disp“: true,
„width“: „6“,
„collapse“: false
},
{
„id“: „a99cad6cfe4753de“,
„type“: „mqtt-broker“,
„name“: „Temperatur“,
„broker“: „193.174.69.5“,
„port“: „10002“,
„clientid“: „“,
„autoConnect“: true,
„usetls“: false,
„protocolVersion“: „4“,
„keepalive“: „3“,
„cleansession“: true,
„autoUnsubscribe“: true,
„birthTopic“: „“,
„birthQos“: „0“,
„birthRetain“: „false“,
„birthPayload“: „“,
„birthMsg“: {},
„closeTopic“: „“,
„closeQos“: „0“,
„closeRetain“: „false“,
„closePayload“: „“,
„closeMsg“: {},
„willTopic“: „“,
„willQos“: „0“,
„willRetain“: „false“,
„willPayload“: „“,
„willMsg“: {},
„userProps“: „“,
„sessionExpiry“: „“
},
{
„id“: „e172cbc91f2d372f“,
„type“: „mqtt-broker“,
„name“: „Info-in“,
„broker“: „193.174.69.5“,
„port“: „10002“,
„clientid“: „“,
„autoConnect“: true,
„usetls“: false,
„protocolVersion“: „4“,
„keepalive“: „3“,
„cleansession“: true,
„autoUnsubscribe“: true,
„birthTopic“: „“,
„birthQos“: „0“,
„birthPayload“: „“,
„birthMsg“: {},
„closeTopic“: „“,
„closeQos“: „0“,
„closePayload“: „“,
„closeMsg“: {},
„willTopic“: „“,
„willQos“: „0“,
„willPayload“: „“,
„willMsg“: {},
„userProps“: „“,
„sessionExpiry“: „“
},
{
„id“: „13d2bb0ce29cde20“,
„type“: „ui_group“,
„name“: „Steuerung“,
„tab“: „0d2b5638cd5a7cd7“,
„order“: 1,
„disp“: true,
„width“: 6,
„collapse“: false
},
{
„id“: „0d2b5638cd5a7cd7“,
„type“: „ui_tab“,
„name“: „HOME“,
„icon“: „dashboard“,
„order“: 2,
„disabled“: false,
„hidden“: false
}
]

Was hat deine Node Red Aufgabe mit homee zu tun ?

Du solltest deinen exportierten Flow richtig formatieren ( als Codeblock ) da sonst niemand Lust hat diese Schnipsel zu importieren.
VG

2 „Gefällt mir“

ich gib dir den Recht,das hat mit Homee nix zu tun, es ist aber hilfreich hier nachzufragen ob irgendjemand Erfahrung damit hat .
ich weißs nicht ob dieser Codeblock ist was du gemeint hast !

[{„id“:„9feb0d5017d91904“,„type“:„tab“,„label“:„MQTT“,„disabled“:false,„info“:„“,„env“:[]},{„id“:„2413395a0bbc22e0“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 7“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:340,„y“:40,„wires“:[]},{„id“:„17806628373ccc74“,„type“:„split“,„z“:„9feb0d5017d91904“,„name“:„“,„splt“:„;“,„spltType“:„str“,„arraySplt“:„2“,„arraySpltType“:„len“,„stream“:false,„addname“:„“,„x“:370,„y“:100,„wires“:[[„5cf4c3601acad5e0“,„dcf32ca5072d517c“]]},{„id“:„5cf4c3601acad5e0“,„type“:„join“,„z“:„9feb0d5017d91904“,„name“:„“,„mode“:„custom“,„build“:„array“,„property“:„payload“,„propertyType“:„msg“,„key“:„topic“,„joiner“:„\n“,„joinerType“:„str“,„accumulate“:false,„timeout“:„“,„count“:„2“,„reduceRight“:false,„reduceExp“:„“,„reduceInit“:„“,„reduceInitType“:„“,„reduceFixup“:„“,„x“:550,„y“:100,„wires“:[[„6f2ffd9c00b7a70d“,„a278d424904ad7e9“,„13a6a57fe6074643“,„64d3abb0a196cc13“]]},{„id“:„6f2ffd9c00b7a70d“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„table function node“,„func“:„// Aktuelle Tabelle aus dem Flow-Speicher abrufen oder ein leeres Array erstellen\nvar currentTable = flow.get(‚tableData‘) || [];\n\n// Neues Messwert-Zeitstempel-Paar erstellen\nvar newValueTimestamp = {\n Value: msg.payload.Value,\n Timestamp: msg.payload.Timestamp\n};\n\n// Das neue Messwert-Zeitstempel-Paar zum Anfang des Arrays hinzufügen\ncurrentTable.unshift(newValueTimestamp);\n\n// Die Tabelle auf maximal 5 Einträge begrenzen\nif (currentTable.length > 5) {\n currentTable.pop();\n}\n\n// Den aktualisierten Tabelle-Daten wieder in den Flow-Speicher setzen\nflow.set(‚tableData‘, currentTable);\n\n// Den Payload auf die aktualisierte Tabelle setzen\nmsg.payload = currentTable;\n\nreturn msg;\n\n//Der Code oben erstellt ein Array namens currentTable, das die in der Tabelle anzuzeigenden Daten enthält. Dieses Array wird im Flow-Speicher gespeichert, sodass es zwischen verschiedenen "function"-Nodes und Zeitschritten gemeinsam genutzt werden kann.\n\n//Jedes Mal, wenn neue Messwert-Zeitstempel-Paare empfangen werden, wird ein neues Objekt newValueTimestamp erstellt, das die "Value" und "Timestamp" Eigenschaften enthält.\n\n//Das neue Messwert-Zeitstempel-Paar wird am Anfang des Arrays currentTable hinzugefügt. Dadurch wird sichergestellt, dass die neuesten Einträge zuerst angezeigt werden.\n\n//Wir überprüfen die Länge des Arrays und entfernen das älteste Element, wenn es mehr als 5 Einträge enthält, um die Anforderungen zu erfüllen.\n\n//Schließlich wird das aktualisierte currentTable-Array im Flow-Speicher aktualisiert, und der Payload wird auf das aktualisierte Array gesetzt.“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:810,„y“:100,„wires“:[[„4f50d9e4be16fb3b“,„a44b79daab205922“]]},{„id“:„dcf32ca5072d517c“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 8“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:520,„y“:160,„wires“:[]},{„id“:„a278d424904ad7e9“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 9“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:800,„y“:40,„wires“:[]},{„id“:„4f50d9e4be16fb3b“,„type“:„ui_table“,„z“:„9feb0d5017d91904“,„group“:„ef2d206e6f3daf7e“,„name“:„“,„order“:1,„width“:0,„height“:0,„columns“:[{„field“:„Spalte:JSON“,„title“:„SPALTE“,„width“:„“,„align“:„left“,„formatter“:„html“,„formatterParams“:{„target“:„_blank“}},{„field“:„Value.JSON „,„title“:„VALUE „,„width“:““,„align“:„left“,„formatter“:„html“,„formatterParams“:{„target“:“_blank“}}],„outputs“:0,„cts“:false,„x“:1090,„y“:100,„wires“:[]},{„id“:„a44b79daab205922“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 10“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„payload“,„targetType“:„msg“,„statusVal“:„“,„statusType“:„auto“,„x“:1080,„y“:40,„wires“:[]},{„id“:„13a6a57fe6074643“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„chart function node“,„func“:„// 1. Überprüfen, ob die Flow-Variable "chartData" bereits existiert oder ein leeres Array erstellen.\nvar chartData = flow.get(‚chartData‘) || [];\n\n// 2. Erstellen Sie ein neues Objekt mit den Werten aus der empfangenen Nachricht.\nvar newValueTimestamp = {\n x: msg.payload.Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n y: msg.payload.Value\n};\n\n// 3. Fügen Sie das neue Objekt der "chartData"-Flow-Variable hinzu.\nchartData.push(newValueTimestamp);\n\n// 4. Stellen Sie sicher, dass die "chartData" nur die letzten 60 Einträge behält.\nif (chartData.length > 60) {\n chartData.shift(); // Entfernen Sie den ältesten Eintrag, um Platz für den neuen zu schaffen.\n}\n\n// 5. Erstellen Sie die Chart-Datenstruktur im JSON-Format.\nvar chartPayload = [\n {\n series: ["Werte"],\n data: [chartData],\n labels: ["Zeit"],\n }\n];\n\n// 6. Aktualisieren Sie die Flow-Variable mit den aktualisierten Chart-Daten.\nflow.set(‚chartData‘, chartData);\n\n// 7. Weisen Sie den Chart-Daten die Nachrichten-Payload zu.\nmsg.payload = chartPayload;\n\nreturn msg;\n\n\n//Der Code erstellt eine Flow-Variable namens "chartData", um die letzten 60 Werte zu speichern.\n\n//Er erstellt ein neues Objekt mit den Werten aus der empfangenen Nachricht und wandelt den Zeitstempel in Millisekunden um.\n\n//Das neue Objekt wird zur "chartData"-Flow-Variable hinzugefügt.\n\n//Der Code stellt sicher, dass nur die letzten 60 Einträge in der Flow-Variable gespeichert sind, wodurch eine FIFO-Queue implementiert wird.\n\n//Er erstellt die Chart-Datenstruktur im JSON-Format, wie in Ihrer Aufgabenstellung gefordert.\n\n//Die Flow-Variable "chartData" wird aktualisiert, um die aktuellen Daten zu speichern.\n\n//Schließlich wird die Chart-Datenstruktur an die Nachrichten-Payload übergeben, um sie an einen "ui_chart"-Node oder einen geeigneten Chart-Node für Ihr Dashboard weiterzuleiten.“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:810,„y“:180,„wires“:[[„21171abf9686f3c3“,„dd1e74cea56d2958“]]},{„id“:„21171abf9686f3c3“,„type“:„ui_chart“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„aefce03b6158a82d“,„order“:2,„width“:0,„height“:0,„label“:„Temperaturverlauf“,„chartType“:„line“,„legend“:„true“,„xformat“:„HH:mm:ss“,„interpolate“:„linear“,„nodata“:„“,„dot“:false,„ymin“:„1“,„ymax“:„120“,„removeOlder“:1,„removeOlderPoints“:„“,„removeOlderUnit“:„1“,„cutout“:0,„useOneColor“:false,„useUTC“:false,„colors“:[„#ff80ff“,„#aec7e8“,„#ff7f0e“,„#2ca02c“,„#98df8a“,„#d62728“,„#ff9896“,„#9467bd“,„#c5b0d5“],„outputs“:1,„useDifferentColor“:false,„x“:1070,„y“:180,„wires“:[[„3a8ae4b3201f979a“,„dd1e74cea56d2958“,„3c50fedf03f9e063“]]},{„id“:„3a8ae4b3201f979a“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 11“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„payload“,„targetType“:„msg“,„statusVal“:„“,„statusType“:„auto“,„x“:1300,„y“:180,„wires“:[]},{„id“:„e309bc39b72e3f4b“,„type“:„ui_text“,„z“:„9feb0d5017d91904“,„group“:„aefce03b6158a82d“,„order“:4,„width“:0,„height“:0,„name“:„“,„label“:„Temperatur“,„format“:„{{msg.payload}} aktuelle Daten: „,„layout“:„row-spread“,„x“:370,„y“:220,„wires“:[]},{„id“:„64d3abb0a196cc13“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„usage function node“,„func“:“// Annahme: msg.payload enthält die CPU-Auslastungsdaten im JSON-Format\n// Hier wird angenommen, dass die CPU-Auslastung als Zahl vorliegt\n\n// Neues Array für den Chart erstellen\nvar chartData = [];\n\n// Annahme: msg.payload enthält ein Array von CPU-Auslastungsdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n // Annahme: msg.payload[i].timestamp enthält den Zeitstempel\n // Annahme: msg.payload[i].usage enthält die CPU-Auslastung\n chartData.push({\n x: msg.payload[i].timestamp,\n y: msg.payload[i].usage\n });\n}\n\n// Den umgewandelten Chart-Daten im Payload speichern\nmsg.payload = chartData;\n\nreturn msg;\n\n\n//Dieser Code geht davon aus, dass die CPU-Auslastungsdaten in msg.payload als Array von Objekten im JSON-Format vorliegen, wobei jedes Objekt einen Zeitstempel (timestamp) und die CPU-Auslastung (usage) enthält. Der Code erstellt ein neues Array (chartData), das die erforderliche Struktur für den Chart hat und setzt die umgewandelten Daten in den msg.payload.“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:820,„y“:260,„wires“:[[„dd1e74cea56d2958“,„f6da6dcc83cffd46“]]},{„id“:„dd1e74cea56d2958“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„function 3“,„func“:„// Daten aus dem "chart function node" für Temperatur\nvar chartDataTemperature = flow.get(‚chartData‘) || [];\n\n// Daten aus dem "usage function node" für CPU-Auslastung\nvar chartDataUsage = flow.get(‚usageData‘) || [];\n\n// Annahme: msg.payload enthält die Temperaturdaten im JSON-Format\n// Hier wird angenommen, dass die Temperatur als Zahl vorliegt\n\n// Neues Array für den kombinierten Chart erstellen\nvar combinedChartData = [];\n\n// Annahme: msg.payload enthält ein Array von Temperaturdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n // Annahme: msg.payload[i].Timestamp enthält den Zeitstempel\n // Annahme: msg.payload[i].Value enthält die Temperatur\n combinedChartData.push({\n x: msg.payload[i].Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n y: msg.payload[i].Value\n });\n}\n\n// Fügen Sie die Temperaturdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(…chartDataTemperature);\n\n// Fügen Sie die CPU-Auslastungsdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(…chartDataUsage);\n\n// Die Länge des Arrays auf maximal 60 Einträge begrenzen\nif (combinedChartData.length > 60) {\n combinedChartData = combinedChartData.slice(-60);\n}\n\n// Erstellen Sie die Chart-Datenstruktur im JSON-Format für den neuen Chart\nvar combinedChartPayload = [\n {\n series: ["Temperatur", "CPU Auslastung"],\n data: [combinedChartData],\n labels: ["Zeit"],\n }\n];\n\n// Aktualisieren Sie die Flow-Variablen mit den aktualisierten Daten\nflow.set(‚combinedChartData‘, combinedChartData);\n\n// Weisen Sie den Chart-Daten die Nachrichten-Payload zu\nmsg.payload = combinedChartPayload;\n\nreturn msg;\n“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:1280,„y“:260,„wires“:[[„605023dfa492ba31“,„5d9d0ade23ef9a93“]]},{„id“:„605023dfa492ba31“,„type“:„ui_chart“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„e8c6fdf06e157bcd“,„order“:1,„width“:0,„height“:0,„label“:„CPU-TEMP“,„chartType“:„line“,„legend“:„true“,„xformat“:„HH:mm:ss“,„interpolate“:„linear“,„nodata“:„“,„dot“:false,„ymin“:„1“,„ymax“:„120“,„removeOlder“:1,„removeOlderPoints“:„“,„removeOlderUnit“:„1“,„cutout“:0,„useOneColor“:false,„useUTC“:false,„colors“:[„#1f77b4“,„#aec7e8“,„#00ff00“,„#2ca02c“,„#98df8a“,„#d62728“,„#ff9896“,„#9467bd“,„#c5b0d5“],„outputs“:1,„useDifferentColor“:false,„x“:1470,„y“:260,„wires“:[[„dd1e74cea56d2958“,„381db56676b671d6“,„e3e8989def966284“]]},{„id“:„43ef798cac2747a2“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„a99cad6cfe4753de“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:130,„y“:200,„wires“:[[„c01088ca1c12cb57“,„17806628373ccc74“,„e309bc39b72e3f4b“]]},{„id“:„c01088ca1c12cb57“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 12“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:320,„y“:260,„wires“:[]},{„id“:„4d69ad0fdeb8f182“,„type“:„ui_dropdown“,„z“:„9feb0d5017d91904“,„name“:„“,„label“:„Nachrichten auswaehlen“,„tooltip“:„“,„place“:„Select option“,„group“:„aefce03b6158a82d“,„order“:1,„width“:0,„height“:0,„passthru“:true,„multiple“:false,„options“:[{„label“:„“,„value“:„Empfangende Daten fehlerhaft“,„type“:„str“},{„label“:„“,„value“:„CPU überhitzt“,„type“:„str“},{„label“:„“,„value“:„Übertragungsformat ungültig“,„type“:„str“}],„payload“:„“,„topic“:„topic“,„topicType“:„msg“,„x“:390,„y“:380,„wires“:[[„a618946bbf59df43“,„ca8b45229c19651f“]]},{„id“:„2d965e5f99f7a9fc“,„type“:„ui_button“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„aefce03b6158a82d“,„order“:6,„width“:0,„height“:0,„passthru“:true,„label“:„Checken“,„tooltip“:„“,„color“:„“,„bgcolor“:„“,„icon“:„“,„payload“:„control“,„payloadType“:„flow“,„topic“:„topic“,„topicType“:„msg“,„x“:960,„y“:380,„wires“:[[„d1f4194daa2a3117“,„7b0c83a4884010f0“,„08b72fee678a9928“]]},{„id“:„a618946bbf59df43“,„type“:„change“,„z“:„9feb0d5017d91904“,„name“:„Nachricht-umwandlung“,„rules“:[{„t“:„set“,„p“:„control“,„pt“:„flow“,„to“:„payload“,„tot“:„msg“}],„action“:„“,„property“:„“,„from“:„“,„to“:„“,„reg“:false,„x“:740,„y“:380,„wires“:[[„2d965e5f99f7a9fc“,„a6d9cf88fe66e5e1“]]},{„id“:„d1f4194daa2a3117“,„type“:„mqtt out“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/control“,„qos“:„“,„retain“:„“,„respTopic“:„“,„contentType“:„“,„userProps“:„“,„correl“:„“,„expiry“:„“,„broker“:„e172cbc91f2d372f“,„x“:1170,„y“:380,„wires“:[]},{„id“:„bd140bdabd7706eb“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/control“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„e172cbc91f2d372f“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:1380,„y“:600,„wires“:[[„e559997eb9e65748“,„26ee14425b9b731a“]]},{„id“:„e559997eb9e65748“,„type“:„ui_toast“,„z“:„9feb0d5017d91904“,„position“:„top right“,„displayTime“:„3“,„highlight“:„“,„sendall“:true,„outputs“:0,„ok“:„OK“,„cancel“:„“,„raw“:false,„topic“:„msg.topic“,„name“:„“,„x“:1580,„y“:600,„wires“:[]},{„id“:„7b0c83a4884010f0“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„function 4“,„func“:„// Den Payload auf ">Steuerpaket versendet!" setzen\nmsg.payload = ">Steuerpaket versendet!";\n\nreturn msg;\n“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:1160,„y“:460,„wires“:[[„5e4ceba81172d441“]]},{„id“:„5e4ceba81172d441“,„type“:„delay“,„z“:„9feb0d5017d91904“,„name“:„“,„pauseType“:„rate“,„timeout“:„5“,„timeoutUnits“:„seconds“,„rate“:„1“,„nbRateUnits“:„5“,„rateUnits“:„second“,„randomFirst“:„1“,„randomLast“:„5“,„randomUnits“:„seconds“,„drop“:true,„allowrate“:true,„outputs“:1,„x“:1380,„y“:440,„wires“:[[„676fa42186e67f05“,„b4fc2c45b88a4000“]]},{„id“:„676fa42186e67f05“,„type“:„function“,„z“:„9feb0d5017d91904“,„name“:„function 5“,„func“:„// Leeren Payload setzen, um die Anzeige zu löschen\nmsg.payload = "";\n\nreturn msg;\n“,„outputs“:1,„timeout“:0,„noerr“:0,„initialize“:„“,„finalize“:„“,„libs“:[],„x“:1580,„y“:460,„wires“:[[„d82433be2c36f6bc“,„f989298e3cac3bb2“]]},{„id“:„d82433be2c36f6bc“,„type“:„ui_text“,„z“:„9feb0d5017d91904“,„group“:„aefce03b6158a82d“,„order“:5,„width“:0,„height“:0,„name“:„“,„label“:„Status“,„format“:„{{msg.payload}}“,„layout“:„row-spread“,„x“:1750,„y“:460,„wires“:[]},{„id“:„6c933531f8484a80“,„type“:„ui_ui_control“,„z“:„9feb0d5017d91904“,„name“:„Klick-Liste“,„events“:„all“,„x“:590,„y“:720,„wires“:[[„161eefb76b931db9“,„b32132e11e919d28“,„24a18bf9247f511e“,„ccf3723bea059331“]]},{„id“:„161eefb76b931db9“,„type“:„ui_button“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„13d2bb0ce29cde20“,„order“:1,„width“:0,„height“:0,„passthru“:true,„label“:„Temperatur“,„tooltip“:„“,„color“:„gelb“,„bgcolor“:„“,„icon“:„“,„payload“:„{ "group": { "hide": ["Überblick", "Nachrichten"], "show": ["Temperatur"] } }“,„payloadType“:„json“,„topic“:„topic“,„topicType“:„msg“,„x“:890,„y“:720,„wires“:[[„0b7018fc8a9f5f5a“]]},{„id“:„24a18bf9247f511e“,„type“:„ui_button“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„13d2bb0ce29cde20“,„order“:2,„width“:0,„height“:0,„passthru“:true,„label“:„Nachrichten“,„tooltip“:„“,„color“:„red“,„bgcolor“:„“,„icon“:„“,„payload“:„{ "group": { "hide": ["Temperatur", "Überblick"], "show": ["Nachrichten"] } }“,„payloadType“:„json“,„topic“:„topic“,„topicType“:„msg“,„x“:890,„y“:880,„wires“:[[„25cad911a8b23f68“]]},{„id“:„b32132e11e919d28“,„type“:„ui_button“,„z“:„9feb0d5017d91904“,„name“:„“,„group“:„13d2bb0ce29cde20“,„order“:3,„width“:0,„height“:0,„passthru“:true,„label“:„Ueberblick“,„tooltip“:„“,„color“:„green“,„bgcolor“:„“,„icon“:„“,„payload“:„{ "group": { "hide": ["Temperatur", "Nachrichten"], "show": ["Überblick"] } }“,„payloadType“:„json“,„topic“:„topic“,„topicType“:„msg“,„x“:890,„y“:800,„wires“:[[„ce5b613e5e90f203“]]},{„id“:„cd61bb48ecc5fa34“,„type“:„inject“,„z“:„9feb0d5017d91904“,„name“:„“,„props“:[{„p“:„payload“},{„p“:„topic“,„vt“:„str“}],„repeat“:„“,„crontab“:„“,„once“:false,„onceDelay“:0.1,„topic“:„“,„payload“:„“,„payloadType“:„date“,„x“:360,„y“:720,„wires“:[[„6c933531f8484a80“,„6e1e8ea38ae9dec8“]]},{„id“:„ce5b613e5e90f203“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 13“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„payload“,„targetType“:„msg“,„statusVal“:„“,„statusType“:„auto“,„x“:1320,„y“:800,„wires“:[]},{„id“:„25cad911a8b23f68“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 14“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1300,„y“:900,„wires“:[]},{„id“:„0b7018fc8a9f5f5a“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 15“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„payload“,„targetType“:„msg“,„statusVal“:„“,„statusType“:„auto“,„x“:1300,„y“:720,„wires“:[]},{„id“:„a6d9cf88fe66e5e1“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 16“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:880,„y“:440,„wires“:[]},{„id“:„b4fc2c45b88a4000“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 17“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1540,„y“:500,„wires“:[]},{„id“:„26ee14425b9b731a“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 18“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1540,„y“:640,„wires“:[]},{„id“:„08b72fee678a9928“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 19“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1160,„y“:420,„wires“:[]},{„id“:„ccf3723bea059331“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 20“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:680,„y“:640,„wires“:[]},{„id“:„6e1e8ea38ae9dec8“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 21“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:560,„y“:820,„wires“:[]},{„id“:„ca8b45229c19651f“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 22“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:580,„y“:440,„wires“:[]},{„id“:„381db56676b671d6“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 23“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1620,„y“:240,„wires“:[]},{„id“:„5d9d0ade23ef9a93“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 24“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1420,„y“:220,„wires“:[]},{„id“:„f989298e3cac3bb2“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 25“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1740,„y“:520,„wires“:[]},{„id“:„f6da6dcc83cffd46“,„type“:„debug“,„z“:„9feb0d5017d91904“,„name“:„debug 26“,„active“:true,„tosidebar“:true,„console“:false,„tostatus“:false,„complete“:„false“,„statusVal“:„“,„statusType“:„auto“,„x“:1000,„y“:240,„wires“:[]},{„id“:„0738c99136f2e37d“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/temperatur“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„a99cad6cfe4753de“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:140,„y“:100,„wires“:[[„2413395a0bbc22e0“,„17806628373ccc74“,„e309bc39b72e3f4b“]]},{„id“:„e3e8989def966284“,„type“:„mqtt out“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„retain“:„“,„respTopic“:„“,„contentType“:„“,„userProps“:„“,„correl“:„“,„expiry“:„“,„broker“:„e172cbc91f2d372f“,„x“:1700,„y“:280,„wires“:[]},{„id“:„3c50fedf03f9e063“,„type“:„mqtt out“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„retain“:„“,„respTopic“:„“,„contentType“:„“,„userProps“:„“,„correl“:„“,„expiry“:„“,„broker“:„e172cbc91f2d372f“,„x“:1280,„y“:120,„wires“:[]},{„id“:„6c3b4a3044a86f14“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„a99cad6cfe4753de“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:130,„y“:380,„wires“:[[„4d69ad0fdeb8f182“]]},{„id“:„e43e352ac64d29f5“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„a99cad6cfe4753de“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:250,„y“:580,„wires“:[[]]},{„id“:„4e64ef64ed0a7940“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/cpuusage“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„a99cad6cfe4753de“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:250,„y“:640,„wires“:[[]]},{„id“:„4621c975af23bd92“,„type“:„mqtt in“,„z“:„9feb0d5017d91904“,„name“:„“,„topic“:„red/control“,„qos“:„2“,„datatype“:„auto-detect“,„broker“:„e172cbc91f2d372f“,„nl“:false,„rap“:true,„rh“:0,„inputs“:0,„x“:240,„y“:520,„wires“:[[]]},{„id“:„b82ce1da1a36f36a“,„type“:„ui_spacer“,„z“:„9feb0d5017d91904“,„name“:„spacer“,„group“:„aefce03b6158a82d“,„order“:3,„width“:6,„height“:1},{„id“:„ef2d206e6f3daf7e“,„type“:„ui_group“,„name“:„Temperatur“,„tab“:„0d2b5638cd5a7cd7“,„order“:2,„disp“:true,„width“:6,„collapse“:false},{„id“:„aefce03b6158a82d“,„type“:„ui_group“,„name“:„Nacrichten“,„tab“:„0d2b5638cd5a7cd7“,„order“:3,„disp“:true,„width“:6,„collapse“:false},{„id“:„e8c6fdf06e157bcd“,„type“:„ui_group“,„name“:„Ueberblick“,„tab“:„0d2b5638cd5a7cd7“,„order“:4,„disp“:true,„width“:„6“,„collapse“:false},{„id“:„a99cad6cfe4753de“,„type“:„mqtt-broker“,„name“:„Temperatur“,„broker“:„193.174.69.5“,„port“:„10002“,„clientid“:„“,„autoConnect“:true,„usetls“:false,„protocolVersion“:„4“,„keepalive“:„3“,„cleansession“:true,„autoUnsubscribe“:true,„birthTopic“:„“,„birthQos“:„0“,„birthRetain“:„false“,„birthPayload“:„“,„birthMsg“:{},„closeTopic“:„“,„closeQos“:„0“,„closeRetain“:„false“,„closePayload“:„“,„closeMsg“:{},„willTopic“:„“,„willQos“:„0“,„willRetain“:„false“,„willPayload“:„“,„willMsg“:{},„userProps“:„“,„sessionExpiry“:„“},{„id“:„e172cbc91f2d372f“,„type“:„mqtt-broker“,„name“:„Info-in“,„broker“:„193.174.69.5“,„port“:„10002“,„clientid“:„“,„autoConnect“:true,„usetls“:false,„protocolVersion“:„4“,„keepalive“:„3“,„cleansession“:true,„autoUnsubscribe“:true,„birthTopic“:„“,„birthQos“:„0“,„birthPayload“:„“,„birthMsg“:{},„closeTopic“:„“,„closeQos“:„0“,„closePayload“:„“,„closeMsg“:{},„willTopic“:„“,„willQos“:„0“,„willPayload“:„“,„willMsg“:{},„userProps“:„“,„sessionExpiry“:„“},{„id“:„13d2bb0ce29cde20“,„type“:„ui_group“,„name“:„Steuerung“,„tab“:„0d2b5638cd5a7cd7“,„order“:1,„disp“:true,„width“:6,„collapse“:false},{„id“:„0d2b5638cd5a7cd7“,„type“:„ui_tab“,„name“:„HOME“,„icon“:„dashboard“,„order“:2,„disabled“:false,„hidden“:false}]

Er meinte bestimmt dass Du Bitte den Code in einen Codetag packen sollst :upside_down_face:


1 „Gefällt mir“
[{"id":"9feb0d5017d91904","type":"tab","label":"MQTT","disabled":false,"info":"","env":[]},{"id":"e172cbc91f2d372f","type":"mqtt-broker","name":"Info-in","broker":"193.174.69.5","port":"10002","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"3","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"a740103cc1c0f505","type":"ui_base","theme":{"name":"theme-custom","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"Times New Roman,Times,serif","edited":true,"reset":false},"darkTheme":{"default":"#097479","baseColor":"#5f2341","baseFont":"Impact,Impact,Charcoal,sans-serif","edited":true,"reset":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","reset":false},"themeState":{"base-color":{"default":"#4B7930","value":"#4B7930","edited":true},"page-titlebar-backgroundColor":{"value":"#4B7930","edited":false},"page-backgroundColor":{"value":"#111111","edited":false},"page-sidebar-backgroundColor":{"value":"#333333","edited":false},"group-textColor":{"value":"#6db046","edited":false},"group-borderColor":{"value":"#555555","edited":false},"group-backgroundColor":{"value":"#333333","edited":false},"widget-textColor":{"value":"#eeeeee","edited":false},"widget-backgroundColor":{"value":"#4b7930","edited":false},"widget-borderColor":{"value":"#333333","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey","palette":"light"}},"site":{"name":"Node-RED Dashboard","hideToolbar":"false","allowSwipe":"true","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"a99cad6cfe4753de","type":"mqtt-broker","name":"Temperatur","broker":"193.174.69.5","port":"10002","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"3","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"0d2b5638cd5a7cd7","type":"ui_tab","name":"HOME","icon":"dashboard","order":2,"disabled":false,"hidden":false},{"id":"aefce03b6158a82d","type":"ui_group","name":"Nacrichten","tab":"0d2b5638cd5a7cd7","order":3,"disp":true,"width":6,"collapse":false},{"id":"e8c6fdf06e157bcd","type":"ui_group","name":"Ueberblick","tab":"0d2b5638cd5a7cd7","order":4,"disp":true,"width":"6","collapse":false},{"id":"ef2d206e6f3daf7e","type":"ui_group","name":"Temperatur","tab":"0d2b5638cd5a7cd7","order":2,"disp":true,"width":6,"collapse":false},{"id":"13d2bb0ce29cde20","type":"ui_group","name":"Steuerung","tab":"0d2b5638cd5a7cd7","order":1,"disp":true,"width":6,"collapse":false},{"id":"b82ce1da1a36f36a","type":"ui_spacer","z":"9feb0d5017d91904","name":"spacer","group":"aefce03b6158a82d","order":3,"width":6,"height":1},{"id":"2413395a0bbc22e0","type":"debug","z":"9feb0d5017d91904","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":340,"y":40,"wires":[]},{"id":"17806628373ccc74","type":"split","z":"9feb0d5017d91904","name":"","splt":";","spltType":"str","arraySplt":"2","arraySpltType":"len","stream":false,"addname":"","x":370,"y":100,"wires":[["5cf4c3601acad5e0","dcf32ca5072d517c"]]},{"id":"5cf4c3601acad5e0","type":"join","z":"9feb0d5017d91904","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":550,"y":100,"wires":[["6f2ffd9c00b7a70d","a278d424904ad7e9","13a6a57fe6074643","64d3abb0a196cc13"]]},{"id":"6f2ffd9c00b7a70d","type":"function","z":"9feb0d5017d91904","name":"table function node","func":"// Aktuelle Tabelle aus dem Flow-Speicher abrufen oder ein leeres Array erstellen\nvar currentTable = flow.get('tableData') || [];\n\n// Neues Messwert-Zeitstempel-Paar erstellen\nvar newValueTimestamp = {\n    Value: msg.payload.Value,\n    Timestamp: msg.payload.Timestamp\n};\n\n// Das neue Messwert-Zeitstempel-Paar zum Anfang des Arrays hinzufügen\ncurrentTable.unshift(newValueTimestamp);\n\n// Die Tabelle auf maximal 5 Einträge begrenzen\nif (currentTable.length > 5) {\n    currentTable.pop();\n}\n\n// Den aktualisierten Tabelle-Daten wieder in den Flow-Speicher setzen\nflow.set('tableData', currentTable);\n\n// Den Payload auf die aktualisierte Tabelle setzen\nmsg.payload = currentTable;\n\nreturn msg;\n\n//Der Code oben erstellt ein Array namens currentTable, das die in der Tabelle anzuzeigenden Daten enthält. Dieses Array wird im Flow-Speicher gespeichert, sodass es zwischen verschiedenen \"function\"-Nodes und Zeitschritten gemeinsam genutzt werden kann.\n\n//Jedes Mal, wenn neue Messwert-Zeitstempel-Paare empfangen werden, wird ein neues Objekt newValueTimestamp erstellt, das die \"Value\" und \"Timestamp\" Eigenschaften enthält.\n\n//Das neue Messwert-Zeitstempel-Paar wird am Anfang des Arrays currentTable hinzugefügt. Dadurch wird sichergestellt, dass die neuesten Einträge zuerst angezeigt werden.\n\n//Wir überprüfen die Länge des Arrays und entfernen das älteste Element, wenn es mehr als 5 Einträge enthält, um die Anforderungen zu erfüllen.\n\n//Schließlich wird das aktualisierte currentTable-Array im Flow-Speicher aktualisiert, und der Payload wird auf das aktualisierte Array gesetzt.","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":100,"wires":[["4f50d9e4be16fb3b","a44b79daab205922"]]},{"id":"dcf32ca5072d517c","type":"debug","z":"9feb0d5017d91904","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":520,"y":160,"wires":[]},{"id":"a278d424904ad7e9","type":"debug","z":"9feb0d5017d91904","name":"debug 9","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":800,"y":40,"wires":[]},{"id":"4f50d9e4be16fb3b","type":"ui_table","z":"9feb0d5017d91904","group":"ef2d206e6f3daf7e","name":"","order":1,"width":0,"height":0,"columns":[{"field":"Spalte:JSON","title":"SPALTE","width":"","align":"left","formatter":"html","formatterParams":{"target":"_blank"}},{"field":"Value.JSON ","title":"VALUE ","width":"","align":"left","formatter":"html","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1090,"y":100,"wires":[]},{"id":"a44b79daab205922","type":"debug","z":"9feb0d5017d91904","name":"debug 10","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1080,"y":40,"wires":[]},{"id":"13a6a57fe6074643","type":"function","z":"9feb0d5017d91904","name":"chart function node","func":"// 1. Überprüfen, ob die Flow-Variable \"chartData\" bereits existiert oder ein leeres Array erstellen.\nvar chartData = flow.get('chartData') || [];\n\n// 2. Erstellen Sie ein neues Objekt mit den Werten aus der empfangenen Nachricht.\nvar newValueTimestamp = {\n    x: msg.payload.Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n    y: msg.payload.Value\n};\n\n// 3. Fügen Sie das neue Objekt der \"chartData\"-Flow-Variable hinzu.\nchartData.push(newValueTimestamp);\n\n// 4. Stellen Sie sicher, dass die \"chartData\" nur die letzten 60 Einträge behält.\nif (chartData.length > 60) {\n    chartData.shift(); // Entfernen Sie den ältesten Eintrag, um Platz für den neuen zu schaffen.\n}\n\n// 5. Erstellen Sie die Chart-Datenstruktur im JSON-Format.\nvar chartPayload = [\n    {\n        series: [\"Werte\"],\n        data: [chartData],\n        labels: [\"Zeit\"],\n    }\n];\n\n// 6. Aktualisieren Sie die Flow-Variable mit den aktualisierten Chart-Daten.\nflow.set('chartData', chartData);\n\n// 7. Weisen Sie den Chart-Daten die Nachrichten-Payload zu.\nmsg.payload = chartPayload;\n\nreturn msg;\n\n\n//Der Code erstellt eine Flow-Variable namens \"chartData\", um die letzten 60 Werte zu speichern.\n\n//Er erstellt ein neues Objekt mit den Werten aus der empfangenen Nachricht und wandelt den Zeitstempel in Millisekunden um.\n\n//Das neue Objekt wird zur \"chartData\"-Flow-Variable hinzugefügt.\n\n//Der Code stellt sicher, dass nur die letzten 60 Einträge in der Flow-Variable gespeichert sind, wodurch eine FIFO-Queue implementiert wird.\n\n//Er erstellt die Chart-Datenstruktur im JSON-Format, wie in Ihrer Aufgabenstellung gefordert.\n\n//Die Flow-Variable \"chartData\" wird aktualisiert, um die aktuellen Daten zu speichern.\n\n//Schließlich wird die Chart-Datenstruktur an die Nachrichten-Payload übergeben, um sie an einen \"ui_chart\"-Node oder einen geeigneten Chart-Node für Ihr Dashboard weiterzuleiten.","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":180,"wires":[["21171abf9686f3c3","dd1e74cea56d2958"]]},{"id":"21171abf9686f3c3","type":"ui_chart","z":"9feb0d5017d91904","name":"","group":"aefce03b6158a82d","order":2,"width":0,"height":0,"label":"Temperaturverlauf","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"1","ymax":"120","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"1","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#ff80ff","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":1070,"y":180,"wires":[["3a8ae4b3201f979a","dd1e74cea56d2958","3c50fedf03f9e063"]]},{"id":"3a8ae4b3201f979a","type":"debug","z":"9feb0d5017d91904","name":"debug 11","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1300,"y":180,"wires":[]},{"id":"e309bc39b72e3f4b","type":"ui_text","z":"9feb0d5017d91904","group":"aefce03b6158a82d","order":4,"width":0,"height":0,"name":"","label":"Temperatur","format":"{{msg.payload}} aktuelle Daten: ","layout":"row-spread","x":370,"y":220,"wires":[]},{"id":"64d3abb0a196cc13","type":"function","z":"9feb0d5017d91904","name":"usage function node","func":"// Annahme: msg.payload enthält die CPU-Auslastungsdaten im JSON-Format\n// Hier wird angenommen, dass die CPU-Auslastung als Zahl vorliegt\n\n// Neues Array für den Chart erstellen\nvar chartData = [];\n\n// Annahme: msg.payload enthält ein Array von CPU-Auslastungsdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n    // Annahme: msg.payload[i].timestamp enthält den Zeitstempel\n    // Annahme: msg.payload[i].usage enthält die CPU-Auslastung\n    chartData.push({\n        x: msg.payload[i].timestamp,\n        y: msg.payload[i].usage\n    });\n}\n\n// Den umgewandelten Chart-Daten im Payload speichern\nmsg.payload = chartData;\n\nreturn msg;\n\n\n//Dieser Code geht davon aus, dass die CPU-Auslastungsdaten in msg.payload als Array von Objekten im JSON-Format vorliegen, wobei jedes Objekt einen Zeitstempel (timestamp) und die CPU-Auslastung (usage) enthält. Der Code erstellt ein neues Array (chartData), das die erforderliche Struktur für den Chart hat und setzt die umgewandelten Daten in den msg.payload.","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":260,"wires":[["dd1e74cea56d2958","f6da6dcc83cffd46"]]},{"id":"dd1e74cea56d2958","type":"function","z":"9feb0d5017d91904","name":"function 3","func":"// Daten aus dem \"chart function node\" für Temperatur\nvar chartDataTemperature = flow.get('chartData') || [];\n\n// Daten aus dem \"usage function node\" für CPU-Auslastung\nvar chartDataUsage = flow.get('usageData') || [];\n\n// Annahme: msg.payload enthält die Temperaturdaten im JSON-Format\n// Hier wird angenommen, dass die Temperatur als Zahl vorliegt\n\n// Neues Array für den kombinierten Chart erstellen\nvar combinedChartData = [];\n\n// Annahme: msg.payload enthält ein Array von Temperaturdaten\nfor (var i = 0; i < msg.payload.length; i++) {\n    // Annahme: msg.payload[i].Timestamp enthält den Zeitstempel\n    // Annahme: msg.payload[i].Value enthält die Temperatur\n    combinedChartData.push({\n        x: msg.payload[i].Timestamp * 1000, // Multiplizieren Sie den Zeitstempel mit 1000, um ihn in Millisekunden umzuwandeln.\n        y: msg.payload[i].Value\n    });\n}\n\n// Fügen Sie die Temperaturdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(...chartDataTemperature);\n\n// Fügen Sie die CPU-Auslastungsdaten zum Array für den kombinierten Chart hinzu\ncombinedChartData.push(...chartDataUsage);\n\n// Die Länge des Arrays auf maximal 60 Einträge begrenzen\nif (combinedChartData.length > 60) {\n    combinedChartData = combinedChartData.slice(-60);\n}\n\n// Erstellen Sie die Chart-Datenstruktur im JSON-Format für den neuen Chart\nvar combinedChartPayload = [\n    {\n        series: [\"Temperatur\", \"CPU Auslastung\"],\n        data: [combinedChartData],\n        labels: [\"Zeit\"],\n    }\n];\n\n// Aktualisieren Sie die Flow-Variablen mit den aktualisierten Daten\nflow.set('combinedChartData', combinedChartData);\n\n// Weisen Sie den Chart-Daten die Nachrichten-Payload zu\nmsg.payload = combinedChartPayload;\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1280,"y":260,"wires":[["605023dfa492ba31","5d9d0ade23ef9a93"]]},{"id":"605023dfa492ba31","type":"ui_chart","z":"9feb0d5017d91904","name":"","group":"e8c6fdf06e157bcd","order":1,"width":0,"height":0,"label":"CPU-TEMP","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"1","ymax":"120","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"1","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#00ff00","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":1470,"y":260,"wires":[["dd1e74cea56d2958","381db56676b671d6","e3e8989def966284"]]},{"id":"43ef798cac2747a2","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","datatype":"auto-detect","broker":"a99cad6cfe4753de","nl":false,"rap":true,"rh":0,"inputs":0,"x":130,"y":200,"wires":[["c01088ca1c12cb57","17806628373ccc74","e309bc39b72e3f4b"]]},{"id":"c01088ca1c12cb57","type":"debug","z":"9feb0d5017d91904","name":"debug 12","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":320,"y":260,"wires":[]},{"id":"4d69ad0fdeb8f182","type":"ui_dropdown","z":"9feb0d5017d91904","name":"","label":"Nachrichten auswaehlen","tooltip":"","place":"Select option","group":"aefce03b6158a82d","order":1,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"","value":"Empfangende Daten fehlerhaft","type":"str"},{"label":"","value":"CPU überhitzt","type":"str"},{"label":"","value":"Übertragungsformat ungültig","type":"str"}],"payload":"","topic":"topic","topicType":"msg","x":390,"y":380,"wires":[["a618946bbf59df43","ca8b45229c19651f"]]},{"id":"2d965e5f99f7a9fc","type":"ui_button","z":"9feb0d5017d91904","name":"","group":"aefce03b6158a82d","order":6,"width":0,"height":0,"passthru":true,"label":"Checken","tooltip":"","color":"","bgcolor":"","icon":"","payload":"control","payloadType":"flow","topic":"topic","topicType":"msg","x":960,"y":380,"wires":[["d1f4194daa2a3117","7b0c83a4884010f0","08b72fee678a9928"]]},{"id":"a618946bbf59df43","type":"change","z":"9feb0d5017d91904","name":"Nachricht-umwandlung","rules":[{"t":"set","p":"control","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":380,"wires":[["2d965e5f99f7a9fc","a6d9cf88fe66e5e1"]]},{"id":"d1f4194daa2a3117","type":"mqtt out","z":"9feb0d5017d91904","name":"","topic":"red/control","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"e172cbc91f2d372f","x":1170,"y":380,"wires":[]},{"id":"bd140bdabd7706eb","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/control","qos":"2","datatype":"auto-detect","broker":"e172cbc91f2d372f","nl":false,"rap":true,"rh":0,"inputs":0,"x":1380,"y":600,"wires":[["e559997eb9e65748","26ee14425b9b731a"]]},{"id":"e559997eb9e65748","type":"ui_toast","z":"9feb0d5017d91904","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"msg.topic","name":"","x":1580,"y":600,"wires":[]},{"id":"7b0c83a4884010f0","type":"function","z":"9feb0d5017d91904","name":"function 4","func":"// Den Payload auf \">Steuerpaket versendet!\" setzen\nmsg.payload = \">Steuerpaket versendet!\";\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1160,"y":460,"wires":[["5e4ceba81172d441"]]},{"id":"5e4ceba81172d441","type":"delay","z":"9feb0d5017d91904","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"allowrate":true,"outputs":1,"x":1380,"y":440,"wires":[["676fa42186e67f05","b4fc2c45b88a4000"]]},{"id":"676fa42186e67f05","type":"function","z":"9feb0d5017d91904","name":"function 5","func":"// Leeren Payload setzen, um die Anzeige zu löschen\nmsg.payload = \"\";\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1580,"y":460,"wires":[["d82433be2c36f6bc","f989298e3cac3bb2"]]},{"id":"d82433be2c36f6bc","type":"ui_text","z":"9feb0d5017d91904","group":"aefce03b6158a82d","order":5,"width":0,"height":0,"name":"","label":"Status","format":"{{msg.payload}}","layout":"row-spread","x":1750,"y":460,"wires":[]},{"id":"6c933531f8484a80","type":"ui_ui_control","z":"9feb0d5017d91904","name":"Klick-Liste","events":"all","x":590,"y":720,"wires":[["161eefb76b931db9","b32132e11e919d28","24a18bf9247f511e","ccf3723bea059331"]]},{"id":"161eefb76b931db9","type":"ui_button","z":"9feb0d5017d91904","name":"","group":"13d2bb0ce29cde20","order":1,"width":0,"height":0,"passthru":true,"label":"Temperatur","tooltip":"","color":"gelb","bgcolor":"","icon":"","payload":"{     \"group\": {         \"hide\": [\"Überblick\", \"Nachrichten\"],         \"show\": [\"Temperatur\"]     } }","payloadType":"json","topic":"topic","topicType":"msg","x":890,"y":720,"wires":[["0b7018fc8a9f5f5a"]]},{"id":"24a18bf9247f511e","type":"ui_button","z":"9feb0d5017d91904","name":"","group":"13d2bb0ce29cde20","order":2,"width":0,"height":0,"passthru":true,"label":"Nachrichten","tooltip":"","color":"red","bgcolor":"","icon":"","payload":"{     \"group\": {         \"hide\": [\"Temperatur\", \"Überblick\"],         \"show\": [\"Nachrichten\"]     } }","payloadType":"json","topic":"topic","topicType":"msg","x":890,"y":880,"wires":[["25cad911a8b23f68"]]},{"id":"b32132e11e919d28","type":"ui_button","z":"9feb0d5017d91904","name":"","group":"13d2bb0ce29cde20","order":3,"width":0,"height":0,"passthru":true,"label":"Ueberblick","tooltip":"","color":"green","bgcolor":"","icon":"","payload":"{     \"group\": {         \"hide\": [\"Temperatur\", \"Nachrichten\"],         \"show\": [\"Überblick\"]     } }","payloadType":"json","topic":"topic","topicType":"msg","x":890,"y":800,"wires":[["ce5b613e5e90f203"]]},{"id":"cd61bb48ecc5fa34","type":"inject","z":"9feb0d5017d91904","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":360,"y":720,"wires":[["6c933531f8484a80","6e1e8ea38ae9dec8"]]},{"id":"ce5b613e5e90f203","type":"debug","z":"9feb0d5017d91904","name":"debug 13","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1320,"y":800,"wires":[]},{"id":"25cad911a8b23f68","type":"debug","z":"9feb0d5017d91904","name":"debug 14","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1300,"y":900,"wires":[]},{"id":"0b7018fc8a9f5f5a","type":"debug","z":"9feb0d5017d91904","name":"debug 15","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1300,"y":720,"wires":[]},{"id":"a6d9cf88fe66e5e1","type":"debug","z":"9feb0d5017d91904","name":"debug 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":880,"y":440,"wires":[]},{"id":"b4fc2c45b88a4000","type":"debug","z":"9feb0d5017d91904","name":"debug 17","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1540,"y":500,"wires":[]},{"id":"26ee14425b9b731a","type":"debug","z":"9feb0d5017d91904","name":"debug 18","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1540,"y":640,"wires":[]},{"id":"08b72fee678a9928","type":"debug","z":"9feb0d5017d91904","name":"debug 19","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1160,"y":420,"wires":[]},{"id":"ccf3723bea059331","type":"debug","z":"9feb0d5017d91904","name":"debug 20","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":640,"wires":[]},{"id":"6e1e8ea38ae9dec8","type":"debug","z":"9feb0d5017d91904","name":"debug 21","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":560,"y":820,"wires":[]},{"id":"ca8b45229c19651f","type":"debug","z":"9feb0d5017d91904","name":"debug 22","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":440,"wires":[]},{"id":"381db56676b671d6","type":"debug","z":"9feb0d5017d91904","name":"debug 23","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1620,"y":240,"wires":[]},{"id":"5d9d0ade23ef9a93","type":"debug","z":"9feb0d5017d91904","name":"debug 24","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1420,"y":220,"wires":[]},{"id":"f989298e3cac3bb2","type":"debug","z":"9feb0d5017d91904","name":"debug 25","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1740,"y":520,"wires":[]},{"id":"f6da6dcc83cffd46","type":"debug","z":"9feb0d5017d91904","name":"debug 26","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1000,"y":240,"wires":[]},{"id":"0738c99136f2e37d","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/temperatur","qos":"2","datatype":"auto-detect","broker":"a99cad6cfe4753de","nl":false,"rap":true,"rh":0,"inputs":0,"x":140,"y":100,"wires":[["2413395a0bbc22e0","17806628373ccc74","e309bc39b72e3f4b"]]},{"id":"e3e8989def966284","type":"mqtt out","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"e172cbc91f2d372f","x":1700,"y":280,"wires":[]},{"id":"3c50fedf03f9e063","type":"mqtt out","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"e172cbc91f2d372f","x":1280,"y":120,"wires":[]},{"id":"6c3b4a3044a86f14","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","datatype":"auto-detect","broker":"a99cad6cfe4753de","nl":false,"rap":true,"rh":0,"inputs":0,"x":130,"y":380,"wires":[["4d69ad0fdeb8f182"]]},{"id":"e43e352ac64d29f5","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","datatype":"auto-detect","broker":"a99cad6cfe4753de","nl":false,"rap":true,"rh":0,"inputs":0,"x":250,"y":580,"wires":[[]]},{"id":"4e64ef64ed0a7940","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/cpuusage","qos":"2","datatype":"auto-detect","broker":"a99cad6cfe4753de","nl":false,"rap":true,"rh":0,"inputs":0,"x":250,"y":640,"wires":[[]]},{"id":"4621c975af23bd92","type":"mqtt in","z":"9feb0d5017d91904","name":"","topic":"red/control","qos":"2","datatype":"auto-detect","broker":"e172cbc91f2d372f","nl":false,"rap":true,"rh":0,"inputs":0,"x":240,"y":520,"wires":[[]]}]
1 „Gefällt mir“

Was für ein Node ist das für die Tabelle ?