NEWS
Energieverbrauch in Datei speichern?
-
Hallo, ich suche einer Möglichkeit, Werte z. B. Energieverbrauch in eine Datei zu schreiben und zu speichern.
-
@butalive23 Wenn Du Node-Red verwendest, ist das kein Problem.
Wenn Du lieber puzzelst hast Du glaube ein Problem, ausser Du programmierst wie mit JS und benutzt das fs Modul. -
@mickym Danke für die schnelle Antwort dann bleibt nur Nod-Red gibt es da fertige Vorlagen von JS lasse ich die Finger als Anfänger.
-
@butalive23 Na Vorlagen ist schwierig - aber NodeRed ist ja einfach. Es gibt eine Node mit einem Hilfetext - und damit kann man eine payload in eine Datei schreiben:
-
Hallo, danke, aber ich verstehe nur Bahnhof helfe mir mal auf die Sprünge muss dann mal per Videos anschauenbolded text
-
@butalive23 Na sag doch einfach, was Du konkret machen willst und dann können wir es doch gemeinsam machen
-
@mickym Hallo Mick nach dem mein Editor geht, könnten wir ja einen Versuch machen, was für Daten brauchst den noch?
-
@butalive23 Ich bin jetzt erst mal nur noch ca. 10 Minuten da. Aber beschreib, wo die Daten (Datenpunkte liegen), wie die Datei aussehen soll. Wie oft wird da geschrieben, wie lange soll die Datei werden, soll die Datei jeden Tag/Woche etc. neu geschrieben werden.
Du musst doch eine Vorstellung haben, wie genau das Prozedere aussehen soll, nur dann kann man es doch entsprechend umsetzen.
-
@mickym Danke es eilt nicht.Also, wie gesagt, ich bin Anfänger und habe das Talent mich nicht richtig ausdrücken zu können, ich versuche es mal. Ich habe zur Zeit 17 Schellys im Iobroker per Script eingebunden(https://www.kreyenborg.koeln/shelly-verbrauchs-historie-fuer-tag-woche-monat-jahr/). Ich möchte nun, dass die Werte täglich zur gleichen Zeit pro Gerät fortlaufend in eine Datei geschrieben (nicht überschrieben) im odt oder csv Format auf meinen NAS geschrieben und gespeichert werden. Der Hintergrund ist, dass ich das füher mit meinen Gosund zwischen Steckern auch so gemacht habe. Es wurde mir auch reichen, wenn nur der tägliche Wert geschrieben wird, den Rest könnte man auch über die Tabellenkalkulation machen. Zurzeit habe ich auch noch keine VIS, aber das ist ein anderes Thema. Danke
-
@butalive23 Ja OK - ich habe zwar zwischenzeitlich auch ein Node-Red Flow gemacht, der Dir die Zählerstände abliest - aber gut, dann hast Du ja Datenpunkte.
Dann lässt Du die halt in eine Datei schreiben. Da die Datenpunkte ja zu unterschiedlichen Zeiten triggern - solltest Du vielleicht die Dateien nach Zeit erstellen und dafür die Spalten nach Geräten.
Grundsätzlich kann NodeRed nur ins lokale Dateisystem schreiben. Wenn Du also auf ein NAS ausserhalb des Systems schreiben willst, musst die Netzlaufwerke vorher in entsprechende Ordner mounten. Ich empfehle Dir Dateien in das home Verzeichnis des Benutzers iobroker zu schreiben. -
Hallo danke für Dir schon mal.
Die Datenpunkte stehen in den Objekten, oder?
Mit den unterschiedlichen Zeiten ist mir noch nicht klar, gut finde ich aber das nur eine Datei für alles erstellt wird und meine Geräte in Spalten angezeigt werden, dass erleichtert es mir es verstehe ich das richtig? Oder meinst Du das, für jedes Gerät eine Datei erstellt wird und Spalten für Tag, Woche, Monat und Jahr angezeigt werden. Auf jeden Fall möchte ich die Auswertung nicht unnötig verkomplizieren.
Der Speicherort spielt eigentlich keine Rolle, wollte damit sagen, dass dies bei den alten Geräten so bisher gemacht wurde, der Raspi ist ja auch eine Art NAS.
Kommt das nicht auf das Gleiche raus, wenn die Zählerstände in den Objekten abgelesen werden? -
Ich hoffe, Du kannst auch anderen damit anderen Usern helfen, nicht nur solch einen Statistik Narren wie mich.
-
Im Prinzip habe ich das ganze hier schon mal gemacht: https://forum.iobroker.net/topic/73421/mehrere-objektwerte-in-csv-schreiben-gelöst
Wenn Du nicht jetzt die Luxusversion willst und nicht lange überprüfen willst, ob eine Datei bereits existiert oder nicht dann brauchst Du keine zusätzlichen Nodes wie in dem Thread den ich gerade gepostet habe.
Wie gesagt ich kenne das Skript von Kreyenborg nicht und habe dafür erst ein eigenen NodeRed Flow gemacht, der wahrscheinlich das gleiche wie dieses Skript macht - aber halt nicht mit Javascript Code.
Dieses Javascript erzeugt ja einen Datenpunkt - gestern, der wahrscheinlich dann einen gesamten Tagesverbrauch enthält.
Diesen würde ich halt dann zum triggern nehmen.
Momentan erzeugt mein Node-Red Flow aktuell zu beliebigen Zeitpunkten auch Verbrauchsdaten anhand der Standardzählerstände.
Jedenfalls auch mit der Kreyenborg version hast Du ja mit dem Datenpunkt "gestern" einen vollständigen Tagesverbrauch.
Diesen lässt Du triggern über eine iobroker-In Node und setzt anschließend ein topic - der beschreibt, um was es sich für ein Gerät handelt.
Um das Ganze im Detail zu erklären:
Du gehst allso in Deinen Kreyenborg Datenpunkten auf den Datenpunkt gestern und kopierst aus der 1. Spalte über das Kopieren Icon den Pfad in die Zwischenablage:
Dann ziehst Du Dir eine iobroker-IN Node in Dein Floweditor und kopierst den Pfad des Topics aus Deinem Kreyenborg datenpunkt in das Topic.
Alternativ kannst Du das topic auch durch das Klicken auf die 3 Punkte neben dem Topic auswählen:
Jedenfalls steht dann im topic oben das Feld:
Damit die Datei nicht ungeplant erzeugt wird, sagst Du dass nur Änderungen triggern sollen und der Datenpunkt beim Neustart des Node-Red Adapter neu eingelesen wird. .
Ich mach das mal bei mir für stündlich, um es Dir zu Testzwecken zu zeigen.
Den Rest kannst Du so lassen.
Nun setzen wir das topic so, wie wir die Spalte dann in der CSV Datei haben wollen.
Also um bei dem Kreyenborg Beispiel zu bleiben:
handelt es sich wohl um einen Katzenbrunnen und dieses werden wir dann als Spaltenüberschrift benutzen und somit als topic. Dieses topic setzen wir in einer Change Node
Das machst Du mit allen anderen Geräten, die Du in die Datei schreiben willst genauso.
Anschließend fasst Du das ganze Zusammen - definierst die Spaltenüberschriften nochmal und fügst das Datum ein, wann die Zeile geschrieben wurde.
-
So zum Abschluss jetzt hier mal eine vereinfachte Form des Flows, den ich aus dem anderen Thread referenziert habe:
Man importiert die CSV Datei am Besten in ein leeres Excelsheet.
Hier der Flow zum Import:
-
@butalive23 Hallo, ich bin überwältigt, ich habe es bis jetzt nicht fassen, über eure Hilfe, ein Spitzenforum hier.
Das Script war das Einzige, was ich damals gefunden habe. Natürlich bin ich offen für Alternativen, was mir ein Bekannter in meinen Iobroker eingepflegt, deswegen habe ich auch keine Ahnung. Klar beschäftige ich mich damit, aber ich werde das nicht umsetzen können( Ewiger Pessimist). Ich danke Euch.