Ich benutze das allererste mal Node-Red für ein Hobbyprojekt und bin eigentlich erstaunt dass ich es soweit geschafft habe. Aber jetzt scheine ich in eine Sackgasse gekommen zu sein, aus der ich vermutlich nicht ohne Hilfe herauskomme. Ich möchte gerne aus einem Datenstrom, der aus mehreren gleichen Teilen besteht, eine Liniengraphik erstellen. Dabei habe ich jetzt zwei Probleme. 1. Der Datenstrom ist als Buffer vorhanden und enthält viele gleiche Teile, die wiederum je aus der Epochtime, Wert A und Wert B bestehen. Ich kann die 3 Werte des allerersten Teils des Buffers extrahieren und mit Debug richtig darstellen. Mein Problem hier ist, wie kann man mittels einer loop o.ä. nacheinander alle anderen Teile des Buffers auf gleiche Weise extrahieren ? Diese Daten sollen dann als Input für die Liniengraphik dienen. 2. Wie könnte man dann mittels Dashboard eine Liniengraphik aus den extrahierten Daten erstellen, bei der die Abszisse die Epochtime enthält und die Ordinate den zugehörigen Wert A oder B ? Geht das überhaupt? Für mich gibt das der Chart Node so nicht her. Wäre für Hilfe sehr dankbar. Wenn nötig kann ich gerne noch das eine oder andere Detail mitteilen.
Hallo, wie hast du denn die Werte aktuell aus dem Buffer herausgelöst? Man könnte den Buffer splitten und die Einzelteile separat verarbeiten, oder was in vielen Fällen einfacher ist die Aufgabe selbst in Javascript innerhalb einer Function-Node lösen. Das letztere setzt natürlich entsprechende Kenntnisse voraus. Man kann durchaus auch mit Nodes Schleifen bauen, sollte aber gut überlegen was mann tut. Sascha
Danke für die Antwort. Hier ein Auszug des Parsers den ich verwende. Mir wäre erst mal geholfen wenn ich wüsste wie ich den Buffer in die Portionen zerlegen könnte über die ich dann den obigen Parser laufen lassen würde. Vergessen zu erwähnen. Von Java habe ich keine Ahnung!
:
Bearbeitet durch User
Bot N. schrieb: > über die ich dann den obigen > Parser laufen lassen würde. Den brauchst du für dein Vorhaben nicht! Bot N. schrieb: > Von Java habe ich keine Ahnung! Javascript != Java! Schau dir doch einfach das Tutorial an! https://noderedguide.com/tutorial-node-red-dashboards-multiple-lines-on-a-chart/
:
Bearbeitet durch User
Harry L. schrieb: > Schau dir doch einfach das Tutorial an! > https://noderedguide.com/tutorial-node-red-dashboards-multiple-lines-on-a-chart/ Sri, ich stehe irgendwie daneben. Momentan sehe ich keine Verbindung zu dem was ich möchte und dem Link. Wie kann man beim Node Chart die in meinem Fall mitgelieferte Epochtime auf die x-Achse bringen? Habe mal ein vereinfachtes Beispiel (Bild oben) erstellt zur Verdeutlichung was ich bisher habe. Kann auch gerne den Flow posten.
Hallo Bot N. du kannst den eingehenden Buffer per Split-Node in gleich große Häppchen zerteilen, was mit deinen 13 Byte klappen sollte. Am Ausgang erhälst du dann n-Nachrichten die du auf deinen Parser geben kannst. Da die Nachrichten ja nacheinander kommen, fallen auch die Ergebnisse des Parsers in der richtigen Reihenfolge raus. In der Hilfe zur Chart-Node https://github.com/node-red/node-red-dashboard/blob/master/Charts.md findest du den Hinweis wie du Daten mit Zeitstempel in den Chart bringst. Du musst ein Object übergben das die entsprechenden Daten beinhaltet. {topic:"temperature", payload:22, timestamp:1520527095000} An sonsten wird als Zeit immer die der eingehen Nachricht verwendet. Du kannst gern das deinen Flow hier einstellen und auch die Daten. Gruß sascha
Danke sehr Sascha W.! Werde das mit dem Split-Node mal probieren. Den Hinweis auf die Github Doku hatte ich vor paar Minuten auch gefunden. Dort wird die Darstellung gespeicherten Daten etwas erläutert. Wenn ich nicht selber weiterkomme werde ich den Test-Flow hier mal einstellen und nochmals um Hilfe bitten.
:
Bearbeitet durch User
Das mit dem Split-Node hat geklappt. Was ich aber nicht hinbekomme ist die so selektierten Daten in die nötige Struktur für die Charts. Muss ja irgendwie so was sein: var chart = [{ "series": ["Temperature ="], "data": dataarray, "labels": [""] }]; Ich hänge mal meinen Beispielflow mit 3 Datensätzen an. Vielleicht kann da mal jemand drüber schauen und mir sagen wie es weiter gehen müsste. Danke sehr.
:
Bearbeitet durch User
Hallo Bot N. der Flow tut erst mal was er soll, du musst für die Charts nur ein Dashboard anlegen. Den Split darfst du nicht auf Stream stellen, da sonst das letzte Byte in der Node hängenbleibt (40Byte geht ja nicht auf) und dann durch das nächste Paket ergänzt wird was zu einem Versatz führt. Da ohne Stream das letzte Byte einzeln ausgegeben wird und zu einem Fehler im anschließenden Parser führt habe ich eine Function dazwischen gehangen die nur Nachrichten mit 13 Byte durchlässt. Im oberen Teil hab ich den Parser belassen. Und die Daten mit Changenodes für den Chart aufbereitet. Im mittleren Teil ist die Aufbereitung des Datensatzes in eine Function gepackt. Die Ausgänge kannst du alternativ mit den Eingängen der Charts verbinden. Im unteren Teil ist alles in einer Function vereint. Das ist natürlich am übersichtlichsten, aber prinzipiell ist NR ja dazu gedacht alles einfach aus Bausteinen zusammen zu setzen. Die epochtime aus deinen Daten muss man mit 1000 multiplizieren da der Chart die Zeit in ms haben will. Gruß Sascha PS: Das von dir oben erwähnte Inputformat für den Chart würde sich nur aus der 3. Variante mit Function-Node erstellen lassen, da alle Chartdaten auf ein Mal übergeben werden müssen. So wie es jetzt ist kannst du den Chart beliebig oft mit neunen Daten ergänzen. Darum auch die Insernode zum löschen der Charts
:
Bearbeitet durch User
Hallo Sascha, tausend Dank für die Arbeit und die Erklärungen dazu! Es funktioniert SUPER. Ich habe jetzt erst mal auf die Schnelle deinen Split-FullData Node in meine eigentliche Applikation eingesetzt. Das hat sofort die gewünschte Anzeige gebracht. Ich betreibe damit einen ESP01S der mir Daten von 3 Shelly H&TGen3 WLAN Sensoren in einem Ringbuffer speichert. Diesen lese ich dann gelegentlich aus und wollte ihn zur Anzeige bringen. Dank deiner Hilfe klappt das jetzt sehr gut. Da ich heute sehr viele Video Clips und Dokumente zu dem NR Chart Thema angesehen habe und damit aber auch nicht weitergekommen bin, werde ich mir dann erst morgen mal deinen Flow genauer ansehen und versuchen zu verstehen wie du das erledigt hast. Eigentlich bin dir jetzt was schuldig, denn du hast mir sehr viel Zeit erspart. Vielleicht hätte ich es gar nicht hinbekommen! Vielen Dank noch mal.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.