NEWS
Daten nur einmal täglich in Influxdb schreiben
-
@legro said in Daten nur einmal täglich in Influxdb schreiben:
@murph said in Daten nur einmal täglich in Influxdb schreiben:
@spacerx
Mit Blockly?
Wie muss ich mir das vorstellen?
..Hier ein Beispiel, wie ich das mit meinem Gasverbrauch geregelt habe ..
zeit=zeit-12*3600*1000 // Vortag 12:00 Uhr mittags sendTo('influxdb.0', 'storeState', { id: ziel, state: {ts: zeit, val: wert, ack: false, from: ziel} }, result => console.log('added'));
Der Quelltext der JavaScript-Funktion ist unten dargestellt.
Im Datenpunkt tempTag wird der Verbrauch über den Tag aufsummiert. Die Blockly-Anweisung dataInfluxDB habe ich in einen CRON-Job eingeschlossen, der um 0:00 Uhr aktiv wird und die Daten schreibt. Damit diese korrekt dem vergangenen Tag zugewiesen werden, korrigiere ich den Zeitstempel um 12h.
Die sog. Arrow Function in Zeile 5 kannst du selbstverständlich weglassen.
Vielen Dank für Dein Beispiel. Möchte das gerne nutzen um den Ölverbrauch je Tag zu speichern.
Kannst Du evtl. sagen ob diese manuelle Speicherung auch nur wieder manuell ausgelesen werden kann oder kann zB Flot darauf auch zugreifen?
Thx
-
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
Kannst Du evtl. sagen ob diese manuelle Speicherung auch nur wieder manuell ausgelesen werden kann oder kann zB Flot darauf auch zugreifen?
Die auf diese Weise in InfluxDB geschriebenen Daten unterscheiden sich natürlich nicht von jenen, die etwa via InfluxDB-Adapter geschrieben wurden. Sie können also ganz normal wie alle Daten aus InfluxDB verwendet werden.
-
@legro
Danke. Habe erfolgreich die Tagesverbräuche von diesem Jahr eben so in die influxdB geschrieben/nachgetragen.Leider findet zB Flot diese Werte nicht. Mag sein, das es daran liegt das sie ja jetzt "manuell" geschrieben wurden und nicht über die Konfiguration eines Datenpunktes in der Admin Oberfläche. In der Datenbank drin sind sie defintiv, das sehe ich zB mit Grafana, das ich eigentlich nicht nutzen möchte. Aber egal, dank Deinem schönem Beispiel sollte auch ein Auslesen aus der dB hinzubekommen sein.
-
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
Leider findet zB Flot diese Werte nicht. Mag sein, das es daran liegt das sie ja jetzt "manuell" geschrieben wurden und nicht über die Konfiguration eines Datenpunktes in der Admin Oberfläche. ..
Nun kenne ich Flot nur vom Hörensagen. Ich nutze Grafana und habe noch keinen Unterschied in der Verwendung der in InfluxDB gespeicherten Daten feststellen können; es ist definitiv gleichgültig, ob die Daten vom Adapter oder über sendTo in die Datenbank geschrieben wurden.
Sei versichert: Auch der Adapter verwendet letztendlich auch bloß sendTo, um die Daten in InfluxDB zu schreiben.
-
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
Leider findet zB Flot diese Werte nicht.
ist der zugehörige Datenpunkt für influx konfiguriert?
wie sieht da der Datenverlauf aus? -
@homoran said in Daten nur einmal täglich in Influxdb schreiben:
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
Leider findet zB Flot diese Werte nicht.
ist der zugehörige Datenpunkt für influx konfiguriert?
Nein, die Werte werden vom Blockly/Skript s.o. direkt in die Datenbank geschrieben. Entsprechend verwundert das auch nicht wirklich, da dies so auch extern von irgendeiner anderen Software passieren könnte ohne das Flot bzw. das IOBroker-Umfeld diesen DatenPunkt/Datenbezeichnung (gasTag) kennt.
Ob es Sinn macht diesen in IObroker anzulegen und für influx zu konfigurieren ohne dass der DP etwas schreibt also nur damit er "bekannt" ist, scheitert daran das er nur mit der ID: "gasTag" im root Verzeichnis liegen müßte, ob man das tun sollte, weiß ich nicht.
@legro Thx, ja am Ende was in der dB steht ist gleich. Auf dem Weg dahin ist es nur anders bzw. Flot benötigt nimmt nur per Auswahlmenü Datenpunkte die über die IObrokerObfläche dafür konfiguriert worden sind. Grafana ist da freier bzw. nicht so tief integriert in IObroker.
Also mein temporäres Fazit: Was ich am IOBroker/InfluxAdapter vorbei in die dB schreibe muß ich dann auch wieder selbst herauslesen -> eigene Queries bauen und in DPs schreiben.
-
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
Nein, die Werte werden vom Blockly/Skript s.o. direkt in die Datenbank geschrieben
wie soll flot dann da ran kommen?
Flot greift auf die historischen Daten des Influxdb-Adapters zu.
Wenn da nichts konfiguriert ist, sieht flot auch nichts. -
Zu den influx- Mechanismen kann ich nichts beitragen.
Meine Erfahrung aber ist, daß gerade Energie- und Verbrauchsdaten ein Schatz für Optimierungen darstellen. Und da kommt es nicht nur auf tägliche Energiemengen an, sondern auch auf Leistungen und zeitliche Verläufe.
Deshalb sage ich mir: Alle Daten wegschreiben (gut, bei Smartmeter wird über 30 Sekunden gemittelt), Speicherplatz ist heute billig.
Zusätzlich mache ich Tages-,Wochen-, Monats-, Jahresstatistik, wobei man das mittlerweile wohl auch über fertige Adapter machen lassen kann.Kurzum - Ein Wert pro Tag wäre mir zu wenig. Man kommt immer wieder zu Fragestellungen, wo man gerne mehr Daten hätte.
-
@klassisch said in Daten nur einmal täglich in Influxdb schreiben:
.. Zusätzlich mache ich Tages-,Wochen-, Monats-, Jahresstatistik, wobei man das mittlerweile wohl auch über fertige Adapter machen lassen kann. ..
Hier habe ich dokumentiert, wie ich Tages-, Wochen-, Monats- und Jahreswerte generiere und verwalte.
-
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
... Grafana ist da freier bzw. nicht so tief integriert in IObroker ..
Das mag ich einfach nicht glauben. Der Adapter verwendet doch ebenfalls bloß sendTo. Vielleicht erwartet Flot sog. Metadaten, die ich in meinem Beispiel nicht schreibe.
Wenn du dir genauer ansehen möchtest, was man sendTo übergeben kann, schau dir diese Anleitung auf GitHub an.
Vorsicht! Der Beispielcode enthält noch immer Fehler. In den Adapterbezeichnungen steht history statt influxdb. Auch ist im erste Beispiel die Klammersetzung falsch: statt eckige Klammern [..] müssen geschweifte {..} verwendet werden, schließlich wird hier ein Objekt übergeben.
-
@legro said in Daten nur einmal täglich in Influxdb schreiben:
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
... Grafana ist da freier bzw. nicht so tief integriert in IObroker ..
Das mag ich einfach nicht glauben. Der Adapter verwendet doch ebenfalls bloß sendTo. Vielleicht erwartet Flot sog. Metadaten, die ich in meinem Beispiel nicht schreibe.
So wie @homoran es schreibt. Flot funktioniert nicht ohne die influxdb Instanz bzw. IOBroker. Grafana ist das völlig egal und guckt direkt in die dB.
Hier mal das Auswahlmenü von Flot:
Aber am Ende ist es halt so, wie es ist und ich komme damit zu recht. Sonstige Lösungen wären aufwendiger, haben Lücken oder gefallen mir wie Grafana eingebettet im VIS auf Grund der benötigten Ladezeit nicht. Insofern die Werte per Query wieder manuell aus der dB holen und alles tip top!
-
@legro natürlich sind die Daten jetzt wahrscheinlich korrekt in der Datenbank (mit sendTo).
@Dieter_P aber zum rausholen benötigt flot Zugriff auf den Datenpunkt. und das geht über den influxdb-Adapter sowie einen konfigurierten Datenpunkt dafür.
und zwar der DP muss konfiguriert werden unter dessen ID der Wert direkt in die InfluxDB geschrieben wurde.
Dann wird flot auch die am Adapter vorbei geschriebenen Werte sehen!Wo ist denn das Problem?
-
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
Hier mal das Auswahlmenü von Flot:
und wo ist der DP ausgewählt?
oder soll flot die Werte aller IDs auf einmal darstellen? -
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
.. Ob es Sinn macht diesen in IObroker anzulegen und für influx zu konfigurieren ohne dass der DP etwas schreibt also nur damit er "bekannt" ist, scheitert daran das er nur mit der ID: "gasTag" im root Verzeichnis liegen müßte, ob man das tun sollte, weiß ich nicht. ..
Die IDs vom InfluxDB-Adapter und sendTo müssen doch vermutlich bloß gleich lauten. Also anstelle „gasTag“ die (sehr lange) ID eintragen, die der Adapter generiert und schon sollte doch alles funktionieren.
Aber wenn bereits alles zu deiner Zufriedenheit funktioniert, ist ja alles gut.
-
@legro sagte in Daten nur einmal täglich in Influxdb schreiben:
Die IDs vom InfluxDB-Adapter und sendTo müssen doch vermutlich bloß gleich lauten.
genau das schreibe ich die ganze Zeit
@homoran sagte in Daten nur einmal täglich in Influxdb schreiben:
der DP muss konfiguriert werden unter dessen ID der Wert direkt in die InfluxDB geschrieben wurde.
-
@homoran said in Daten nur einmal täglich in Influxdb schreiben:
Dann wird flot auch die am Adapter vorbei geschriebenen Werte sehen!
Wo ist denn das Problem?
nirgends. Für mich Austausch und Verständnisabgleich warum, was, wie. Nun ist es bestätigt = gemeinsamer Nenner gefunden (jedenfalls aus meiner Sicht).
@legro said in Daten nur einmal täglich in Influxdb schreiben:
Aber wenn bereits alles zu deiner Zufriedenheit funktioniert, ist ja alles gut.
Nö, aber hab das selbst zusammen gewürfeltete Verständnis dank Euch bestätigt bekommen und eine Idee wie ich es löse und somit alles top!
Danke, wie gesagt solche Datenbankbeispiele helfen sehr, wenn man das nicht jeden Tag macht und schnell vergisst. Hab diese Daten aktuell auch nur im produktivsystem und nicht wirklich Lust mit falschen Attacken auf die dB mir das System auf den Rücken zu legen.
-
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
aber hab das selbst zusammen gewürfeltete Verständnis dank Euch bestätigt bekommen
und das wäre?
ich fürchte nämlich, wir reden immer noch aneinander vorbei.
Was mich dieser Satz leider wieder vermuten lässt:Hab diese Daten aktuell auch nur im produktivsystem und nicht wirklich Lust mit falschen Attacken auf die dB mir das System auf den Rücken zu legen.
-
@dieter_p said in Daten nur einmal täglich in Influxdb schreiben:
.. und eine Idee wie ich es löse und somit alles top!
Und nur darauf kommt‘s letztlich an.
-
@homoran said in Daten nur einmal täglich in Influxdb schreiben:
@dieter_p sagte in Daten nur einmal täglich in Influxdb schreiben:
aber hab das selbst zusammen gewürfeltete Verständnis dank Euch bestätigt bekommen
und das wäre?
ich fürchte nämlich, wir reden immer noch aneinander vorbei.
kann da nichts zu Deinem empfinden sagen. Hier im Beitrag ging es darum manuell per Blockly etwas in eine Datenbank zu schreiben. Das Thema ist schon was länger durch. Ich hab dann Off-Topic erfragt, da es ja meistens mit dem schreiben nicht beendet ist, welche Möglichkeiten wie beim Lesen existieren? Darunter spezifisch auch nach Flot. Für michauch unter dem genannten Aspekt der aufgeführten ID "gasTag" = ungewöhnlich da mir nur IDs vom Adapter bekannt waren.
@legro habe ich so verstanden, dass er keine Erfahrung bzgl. Flot hat und dies gleich zu Grafana sieht. Da ich ihm für sein Beispiel sehr dankbar bin, hab ich ihm kurz den Screenshot von Flot gezeigt und das Flot hier auf die im Adapter angelegten Datenpunkte zugreifen möchte. Ob hier ggf. eine manuelle Anpassung möglich gewesen wäre kann/konnte ich nicht auschließen. Ist aber so bei der gezeigten ID nicht der Fall, wie Ihr bestätigt habt. Also bleibt für mich eine Lösung ohne Adapter oder ich schreibe die bereits gespeicherten Werte mit einer passenderen ID von einem über den Adapter auch nur als Dummy angelegten Datenpunkt um in der dB.Soweit mein Fazit.
Die Dankbarkeit über Beispiele für Datenbankabfragen bleibt, da wenn ich jetzt zu unüberlegt mit InfluxQL Queries lesend auf die Datenbank "schieße" um ganze Monatszeiträume abzufragen, kann das fehlerhaft auch schnell nach hinten losgehen. Gewisse Abfragen erzeugen halt eine gewisse Last und das ist mir mit Grafana beispielsweise auf dem Raspberry schon zu langsam. Deswegen möchte ich gerne zeitgesteuert die Queries einmal täglich ausführen und die Datenpunkte visualisieren. Mag umständlich sein, ist mir aber lieber als jedes mal 1,2 Sekunden auf Grafana etc. zu warten wenn ich es aufrufe und ein Hardwareupgrade deswegen mit höherem Stromverbrauch kommt dafür für mich nicht in die Tüte.
Wie gesagt, für mich viel erfahren, dankbar Beispiele gesehen und genutzt und für weitere Nutzung der Lösungsweg eindeutig klar, somit tip top und noch nett geschwatzt dazu
-
@dieter_p
Danke für die ausführliche Erläuterung.
Im Prinzip bestätigt das meine Vermutung, allerdings gab es für mich eine wichtige Zusatzinformation.Da ich erst ab dem Punkt mit flot "eingestiegen" bin, da ich weder zu Influx noch zum Skript hätte etwas sagen können, war mir nicht bekannt wie die Daten in Influx verwaltet werden und dass diese ohne ID geschrieben wurden.
Ich musste aufgrund der Vorgeschichte davon ausgehen, dass diese zusätzlichen Daten ebenfalls adapterkonform eingetragen wurden.
So ganz habe ich die Hoffnung auch noch nicht aufgegeben, denn wie sonst würden sie sonst zusammen passen.Aber da kann ich dir aus o.a. Gründen leider nicht weiterhelfen.
Und ja!
"Schlimmstenfalls" müsstest du die gewünschten Daten noch einmal mit der DP ID in die Influx schreiben.Bei einer vernünftigen Datenbank sollte da nichts passieten, da IDs und damit Datenreihen Unique sein müssen.
Lediglich die bisher per Skript geschriebenen Daten lägen dann als Datenleichen unnütz in der DB.