Chart-Daten zwischenspeichern

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
MKaiser96
Beiträge: 44
Registriert: 20.09.2019, 13:42

Chart-Daten zwischenspeichern

Beitrag von MKaiser96 » 02.02.2020, 23:28

Hallo,

ich nutze seit neuestem das RedMatic-Addon auf der RaspberryMatic und bin dabei ein kleines Dashboard aufzubauen. Wichtig sind mir dabei Diagramme, die mir beispielsweise Wetterdaten der letzten 24 Stunden anzeigen. Leider gehen die Daten nach einem Neustart verloren und beginnen von vorne aufzuzeichnen.

Eine Lösung habe ich unter folgendem Link gefunden:
https://www.hexamail.com/guides/node-re ... charts.htm
Leider verstehe ich noch nicht so recht die Funktionsweise. Meines Erachtens nach wird bei jedem Dateneingang in das Diagramm am Ausgang eine Datei geschrieben, die alle Datenpunkte enthält und bei Start eingelesen werden.

Mein Flow sieht wie folgt aus:
Flow.png

Bei mir taucht allerdings ein Problem auf. Es kann scheinbar keine Datei geschrieben werden. Ich erhalte folgende Meldung:
Meldung.png
Meldung.png (218.04 KiB) 3055 mal betrachtet

Das Problem scheint in der LoadSave-Funktion zu liegen.

Code: Alles auswählen

msg.filename ="/home/pi/charts/"+strSafe+".dat";
Ist der Pfad so für RedMatic nicht beschreibbar? Welcher Pfad ist für RedMatic problemlos beschreibbar?

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Chart-Daten zwischenspeichern

Beitrag von Baxxy » 02.02.2020, 23:45

MKaiser96 hat geschrieben:
02.02.2020, 23:28
Ist der Pfad so für RedMatic nicht beschreibbar? Welcher Pfad ist für RedMatic problemlos beschreibbar?
Auf einer RaspberryMatic gibt es kein /home/pi/ Verzeichnis. Alle Nutzerdaten werden normalerweise in /usr/local/ abgelegt.
Du könntest dir z.B. in /usr/local/addons/redmatic ein Verzeichnis "charts" anlegen und dieses benutzen. Zu empfehlen ist das aber nicht da durch die häufigen Schreibvorgänge die SD-Karte wohl ziemlich schnell hin sein könnte.

Besser wäre es wohl ein Verzeichnis auf einem USB Stick zu benutzen, sofern einer angeschlossen ist. Wie lange der das durchhält wird sich dann zeigen. :wink:

Grüße
Baxxy

MKaiser96
Beiträge: 44
Registriert: 20.09.2019, 13:42

Re: Chart-Daten zwischenspeichern

Beitrag von MKaiser96 » 03.02.2020, 09:29

Besser wäre es wohl ein Verzeichnis auf einem USB Stick zu benutzen, sofern einer angeschlossen ist. Wie lange der das durchhält wird sich dann zeigen. :wink:
Okay, Danke für den Hinweis. Das muss ich mir dann wohl noch überdenken.

Ich habe soeben mal das Verzeichnis auf /usr/local/addons/redmatic/var geändert. Allerdings taucht immer noch der gleiche Fehler auf. Nur, dass jetzt das geänderte Verzeichnis angegeben wird.

Ist das jetzt ein Fehler im Skript oder ein Zugriffsproblem?

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Chart-Daten zwischenspeichern

Beitrag von Baxxy » 03.02.2020, 14:25

MKaiser96 hat geschrieben:
03.02.2020, 09:29
Ist das jetzt ein Fehler im Skript oder ein Zugriffsproblem?
Das kann ich leider nicht beantworten da ich selber nicht so tief in der Materie stecke. Da musst du wohl auf die Antwort eines Insiders warten. :wink:

Ich habe es übrigens selber ausprobiert. Ein Verzeichnis mit vollen Rechten auf dem USB-Stick angelegt und dieses im Script zugewiesen. Nada. Es wird keine Datei geschrieben, aber es kommt auch keine weitere Fehlermeldung. Die kommt nur beim Neustart von Redmatic, aber das ist klar. Ist ja keine Datei vorhanden die eingelesen werden könnte.

Grüße
Baxxy

tloeffel
Beiträge: 447
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Chart-Daten zwischenspeichern

Beitrag von tloeffel » 02.03.2020, 22:12

Hallo Zusammen,

ich habe den Fall auch einmal getestet. Bei mir klappt es auch nur bedingt.

Wenn man in der Node-Switch nur so zum Testen "!=" und "load" eingibt, dann speichert er tatsächlich die Daten. Aber mit der Einstellung "=" und "" nicht. Ich blicke die Funktion Node auch nicht voll. Aber der Wurm scheint in der Funktion Node zu liegen.

Lieben Gruß Thomas


200302_Chart3.JPG
200302_Chart1.JPG
200302_Chart2.JPG
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

tloeffel
Beiträge: 447
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Chart-Daten zwischenspeichern

Beitrag von tloeffel » 03.03.2020, 23:21

Hallo Zusammen,

ich habe herausgefunden warum das bei mir nicht geklappt hat.

Wie gefragt habe ich diesen Link benutzt:
https://www.hexamail.com/guides/node-re ... charts.htm

Wenn Du in Redmatic default auf "file" und nicht auf "memory" stehen hast geht diese Methode nicht.
Hintergrund: Dieser Node basiert auf der Annahme das "var loaded=context.get(strSafe)||0;" abgefragt wird. Also wenn er den "Context" findet, wird die Variable nicht "0" und durchläuft nicht den Teil wo die Daten geladen werden. Jetzt kommt es: der "Context" verschwindet bei jedem "neu starten" von redmatic, falls es nicht auf "file" steht!

Zum Zweiten bleibt er in der Switch Node hängen, da die Bedingung "==" und "" heisst. Sie ist aber nicht "" sonder liefert Daten (ein Array, oder auch =! load). Wenn Du dieses auch änderst klappt das mit dem Speichern und auch dem automatischem Laden. Zumindest in meinem Beispiel.

Gruß Thomas

PS: Vielleicht hat einer der wissenden eine Idee was man machen soll, wenn man auf "file" bleiben will.

200303_Chart1.JPG
200302_Chart2.JPG
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

tloeffel
Beiträge: 447
Registriert: 13.09.2017, 05:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 12 Mal

Re: Chart-Daten zwischenspeichern

Beitrag von tloeffel » 04.03.2020, 12:29

Hallo Zusammen,

ich habe es nun zum Laufen gebracht (siehe erstes Bild). Im Falle Ihr benutzt dieses Subflow: https://www.hexamail.com/guides/node-re ... charts.htm, dann muss man folgendes bedenken. Ich habe einen Guide zusammen geschrieben.

Funktion dieses Subflows:
Dieser Subflow speichert die Diagrammdaten eines jeweiligen Charts auf einem Datenträger. Im Falle das Redmatic einen "neustart" macht läd er die gespeicherten Daten wieder in den Chart und somit bleiben die alten Daten erhalten. Es müssen einige Sachen beachtet werden, diese werden im Folgenden erklärt.

Voraussetzung:
Es muss geklärt werden wie ihr in Eurem System die "Context" Variablen speichert (siehe Bild2). In meinem Fall auf dem USB Stick. Dann werden die Inhalte bei einem Neustart nicht gelöscht und somit würde diese Subflow nicht funktionieren und die Funktion Node muss angepasst werden (siehe Bild 6).

Regeln:
- Die Nachricht muss einen eindeutigen "msg.topic" haben. Auf Basis dieser Info werden die Dateinamen vergeben.
- Die Diagrammdaten werden nur geladen, nachdem die erste Nachricht empfangen wurde.
- Es muss der Speicherpfad in der Subflow/Funktion Node eingetragen werden. Standardmäßig werden bei mir Diagrammdaten in "/media/usb1/redmatic/var/charts/" abgelegt.

Notwendige Änderungen:
1) Bitte Euren Dateipfad wie beschrieben eintragen (siehe Bild6).
2) Im Falle das Ihr die Context Variablen auch auf dem Datenträger speichert (siehe Bild 2), dann muss der Funktion set + get die Quelle angefügt werden. Bei mir wäre das ...context.set(strSafe,1,"memory");.... Somit ist dem System klar das bei einem "Neustart" diese Context Daten gelöscht werden sollen. Hierdurch erkennt der Subflow das ein "neustart" passiert ist. Bitte set + get anpassen.
3) Im Switch Node ist die erste Bedingung falsch. Diese durch z.b. != load anpassen. Ansonsten speichert er nie (siehe Bild5)!
4) Den Subflow wie in Bild3 anschliessen und testen. Mit CUxd schauen ob er speichert und dann einen "neustart" auslösen und fertig :-).

Ich hoffe es klappt bei Euch wie erwartet.
Gruß Thomas


Bild1: Ergebnis mit zwei Charts (eines mit speichern und eines ohne)
200304_chart_übersicht.JPG

Bild2: Die Einstellung des Context Speichers
200303_Chart1.JPG
Bild3: Der Flow
200304_flow.JPG
Bild4: Der Subflow
200304_flow_sub.JPG
Bild5: Die Switch Node
200302_Chart2.JPG
Bild6: Die Funktion Node
200304_flow_sub_function.JPG
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte

jasteen
Beiträge: 10
Registriert: 24.12.2018, 12:15
Wohnort: Saterland

Re: Chart-Daten zwischenspeichern

Beitrag von jasteen » 14.06.2022, 15:08

Hallo an Alle.

Zunächst einmal, der letzte Beitrag funktioniert bei mir soweit hervorragend.
Allerdings habe ich bei ein paar Charts das Problem das sie doch nicht speichern. Ich denke das liegt an den "function-Node".
Hat da vielleicht einer eine Idee?
Dateianhänge
Screenshot_20220614-150619~2.png
Screenshot_20220614-150314~2.png

Antworten

Zurück zu „RedMatic“