Influxdb Werte nachtragen.

RudiP

Active member
Bei der Influxdb kann man ja manuell Werte nachtragen.
Das Format soll so aussehen:
<measurment>, <tag_key>=<tag_value> <fields_key>=<field_value> timestamp

Wenn ich jetzt in meine influxdb schaue, gibt es den Bereich, wo ich auswähle, was ich sehen will.
1688487608801.png
Da steht ja Measurment und Tags drüber. Ich nehme also an, das "m³" das Measurment ist und "gasverbrauch_temp" das Tag.
Dann würde also eine Zeile zum hinzufügen von einem Wert so aussehen:
m³, entity_id-1="gasverbrauch_temp" value="1712.981" 1685613600
Kommt aber die Fehlermeldung: missing tag key

Jemand ne Idee, wie die Zeile richtig lauten muß ?
 
Ok, wenn ich
m³,entity_id=gasverbrauch_temp value=1728.745 1688205600
schreibe, akzeptiert er die Zeile schon mal, übernimmt den Wert aber nicht in die DB.

Ok, Fehler gefunden. Mein Timestamp ist nur Sekundengenau, beim schreiben in die DB war aber ns gewählt. Auf s gestellt und schon klappt es. :D
 
So, dann machen wir mal ein kleines Tutorial daraus.
Zuerst mal ein Tool, mit dem man das Datum in UNIX Timestamp umrechnen kann. Das findet man z.B. hier
Einfach das gewünschte Datum und eine Uhrzeit eingeben, auf "Datum in Timestamp umrechnen" klicken und dann kann man sich den Wert kopieren.

Zuerst einmal müssen wir uns in der InfluxDB aber die Daten suchen, die wir ändern wollen. Dazu öffnen wir die InfluxDB Oberfläche und klicken links in der Leiste das dritte Symbol von oben an. Wenn man mit der Maus darüber bleibt, erscheint "Explore"
1688497030869.png
In der Zeile "Measurements & Tags" müssen wir nun nach der Meßeinheit suchen, die unser Eintrag, den wir ändern wollen, hat. In meinem Fall wäre das "m³", da ich den Gasverbrauch angeben will. Wir geben also in das Suchfeld, wo aktuell Filter steht, "m³" ein
1688497165876.png
Man kann nun nach Entity_id oder auch friendly_name suchen, Ich klicke hier mal auf "entity_id-2", weil sich da meine Werte verbergen. Bei euch kann da auch nur "entity_id-1" oder "entity_id-5" stehen, je nachdem, wieviele Einträge da drin sind.
So, nun haben wir eigentlich auch schon alle wichtigen Infos.

1688497504274.png
Der Aufbau der Zeile, mit der wir gleich unsere Werte eingeben wollen, ist folgender:
<measurment>, <tag_key>=<tag_value> <fields_key>=<field_value> timestamp

measurment ist in diesem fall das "m³"
Dann kommt "entity_id=gasverbrauch_temp" für tag_key=tag_value. Man beachte "entity_id" ohne das "-1" oder "-2" dahinter.
Heißt hier also, das wir etwas bei "gasverbrauch_temp" eintragen wollen.
Nun kommt noch "value=1728.745". Das heißt, das wir in das Feld "value" die Zahl "1728,745" eintragen wollen.
Anstelle von value könnte man auch die anderen Felder wie "device_class_str" oder "frindly_name_str" nehmen, aber das macht wenig Sinn, da wir ja Werte für die Datenbank eintragen wollen.
Man beachte hier auch, das man anstelle des "," einen "." eingeben muß. Englisches Format halt.
So, zum Schluß dann noch den Timestamp, den man sich auf der Seite oben generieren kann.
Eine fertige Zeile sähe dann so aus.

m³,entity_id=gasverbrauch_temp value=1728.745 1688205600

Wie und wo tragen wir die nun ein ?
1688497740918.png
Da oben, rechts neben dem grünen Feld steht "Write Data" Da klicken wir man drauf.
Dann kommt dieses Fenster:
1688497790616.png
Einmal klicken wir oben auf "Manual Entry" und rechts daneben bei "With ns Precision" klicken wir auf das "ns" und wählen dort "s" aus.
 
So, da ich nur 5 Dateien anhängen darf, also ein zweiter Beitrag.
Das ganze sieht nun so aus:
1688497912716.png
Jetzt kopieren wir einfach unsere oben erstellte Zeile hier rein und klicken unten auf Write.
Wenn alles geklappt hat, schließt sich dieses Fenster wieder und ihr sehr wieder die db und wenn alles gut gelaufen ist, auch euren Eintrag.
Im Fehlerfall erscheint rechts neben dem Fenster eine rote Fehlermeldung, die euch sagt, was ihm nicht passt.

Tja, das wars dann auch eigentlich schon.
Außer noch eine eindringliche Warnung. Seit vorsichtig mit dem, was ihr da macht, ihr schreibt Werte direkt in die DB, die man so ohne weiteres nicht wieder raus bekommt. (da arbeite ich aber noch dran)
 
Du darfst das von mir aus gerne verwenden. Aber warte mal ein paar Tage, eventuell findet ja jemand noch Fehler. :D
 
Hallo,
super Erklärung zum hinzufügen von Daten. Aber eine Frage habe ich trotzdem, gibt es auf diesem Weg auch die Möglichkeit, vorhandene Daten zu ändern. Ich habe in den letzten 3 Monaten verschiedene falsche Daten (viel zu hoch oder auch negative Werte) in der InfluxDB und die würde ich gerne korrigieren.
Wenn es hier eine Lösung geben würde, wäre ich mehr als happy.

Gruß
Transputer
 
Ändern kann man über die Statistik.
Wir klicken auf die Entwicklerwerkzeuge. Der Hammer links in der Seitenleiste. Oben in der Menüleiste dann auf Statistik. Da bekommen wir dann unsere Sensoren, Entitäten usw. angezeigt. Da suchen wir uns den raus, dessen Werte wir ändern wollen.
Wir sehen in der Liste ganz rechts auch so ein komisches Symbol. Ne Rampe mit nem Pfeil nach oben ???
Das zeigt uns an, das hier Werte geändert werden können.
Ich nehme bei mir mal den SmartMeter, der also meinen Stromverbrauch Misst und anzeigt. Dazu klicken wir einmal auf die Zeile, NICHT auf das Symbol
Es öffne sich ein Diagramm. Wenn man da mit der Maus über die Linie fährt, bekommt man Datum und Uhrzeit der Messung angezeigt. Diesen Wert brauchen wir, weil wir da ja einen Wert ändern wollen.
Nun machen wir am besten HA in einem Browser noch einmal auf und wählen dort noch einmal die Statistik aus. Jetzt klicken wir aber in der Reihe, deren Werte wir ändern wollen, auf das komische Symbol.
Es geht ein neues Fenster auf "Adjust a statistic"
1690275561543.png
Und da sehen wir Datum, Uhrzeit und, wenns gut läuft, eine Reihe von Meßwerten.
Wenn wir jetzt z.B. einen Wert von gestern Morgen ändern wollen, klicken wir auf das Datum und geben klicken auf den 24 und dann OK. Dann stellen wir die Uhrzeit ein, nehmen wir mal 08:00:00 Uhr. Wir klicken einmal in das Feld mit den Stunden und tippen 8 ein. Dann drücken wir einmal die TAB Taste. Ich weiß, viele nutzen diese, kennen den Namen aber nicht. Das ist die links auf der Tastatur, etwas breiter, als die anderen und zwei Pfeile nach links und rechts drauf.
Jetzt tippen wir 00, dann nochmal TAB und nochmal 00 und nochmal TAB
Jetzt bekommen wir alle Meßwerte vom 24.07 08:00:00 bis 08:10:00 angezeigt.
Such Dir den Wert raus, den Du ändern willst und klick drauf. Da geht ein neues Fenster auf, wo Du den neuen Wert eintragen kannst. ADJUST klicken und fertig.
So kannst Du alle Werte in der Influx DB ändern. Ist echt Mühsam, wenn man viele Werte ändern muß, aber was tut man nich talles für eine schöne saubere Statistik. :D
 
Hallo,
vielen Dank für die Anleitung. Leider kann ich die betroffenen Daten-Punkte nach der Erklärung oben nicht in der Influxdb finden.
Das korrigieren von Daten nach der oben beschriebenen Methode funktioniert für die Energieverteilung und Übersicht einwandfrei.
Vielleicht liegt es es daran, das ich die home-assistant_v2.db durch MariaDB ersetzt habe gleichzeitig auch die Influxdb installiert habe.
Kann es daran liegen, das ich beide Datenbanken installiert habe?
Ist es auch möglich in Homeassistant nur die InfluxDB zu benutzen, also ohne home-assistant_v2.db oder wie gesagt Mariadb?
Ich bin ganz neu auf dem Gebiet Homeassistant und Influx oder MariaDB und bin über jede Hilfe dankbar.
Anbei noch 2 Screenshot der besagten Daten
gruß
 

Anhänge

  • Screenshot_20230725_163912_Home Assistant.jpg
    Screenshot_20230725_163912_Home Assistant.jpg
    574,9 KB · Aufrufe: 3
  • Screenshot_20230725_165522_Home Assistant.jpg
    Screenshot_20230725_165522_Home Assistant.jpg
    470,5 KB · Aufrufe: 3
Mit MariaDB habe ich nix gemacht, da kann ich nichts zu sagen. Auch nicht, wohin HA den nun die Daten schreibt.
Was ich mir aber denke, zwei Datenbanken gleichzeitig sind eher Contra produktiv. Sind ja zwei Systeme, die laufen und Daten sammeln.
Ich habe bei mir auch manchmal das Problem, das ich denke, irgendein Sensor hat keine Daten aufgezeichnet. Da hilft es manchmal zu schauen, woher der Sensor seine Daten bekommt.
Beispiel: Ich habe Steckdosen, die den Stromverbrauch messen können und melden. Leider haben die das falsche Format, um diese auf dem Energie Dashboard anzeigen zu lassen. Also habe ich mir Routinen geschrieben, die das gerade rücken.
Und genau da muß man schauen, welche Werte werden in der DB gespeichert. Die original Sensor Daten glaube ich ja, die selbst berechneten wahrscheinlich nicht.
Aber auf dem Gebiet bin ich auch noch nicht ganz fit.
 
Die MariaDB habe ich nur installiert, weil das Problem mit dem Verlust von Daten in der home-assistant_v2.db oft vorkommt.
Nach der installation von MariaDB habe ich die home-assistant_v2.db gelöscht.
Grafana und InfluxDB habe ich danach nur installiert, weil ich die Auswertungen mit Diagrammen erstellen wollte.
Wäre nicht nötig gewesen, wenn ich die Auswertungen und Diagramme mit Grafana und MariaDB hinbekommen würde.
Ist leider nicht so einfach wie mit Grafana und InfluxDB.
Ich werde in nächster Zeit mal versuchen, die Auswertungen in Grafana mit MYSQL (MariaDB) zu erstellen. Ich brauche gerade mal 6 bis 8 Sensoren die ich da einbinden müsste. Wenn das klappen sollte, werde ich die InfluxDB wieder löschen.
Vielleicht habe ich ja Glück und es kommen dafür noch ein paar Tips, wie ich das in Grafana mit MSQL hinbekomme.
Was muss ich in MYSQL bei Code eingeben, um die angehängten Sensoren zu erhalten?

Danke
 

Anhänge

  • Screenshot_20230726_100656_Home Assistant.jpg
    Screenshot_20230726_100656_Home Assistant.jpg
    357,1 KB · Aufrufe: 5
  • Screenshot_20230726_100937_Home Assistant.jpg
    Screenshot_20230726_100937_Home Assistant.jpg
    718,3 KB · Aufrufe: 5
  • Screenshot_20230726_101048_Home Assistant.jpg
    Screenshot_20230726_101048_Home Assistant.jpg
    703,6 KB · Aufrufe: 5
Naja, InfluxDB und MariaDB arbeiten ja auch mit SQL abfragen. Die werden sich also nicht großartig unterscheiden.
Im Prinzip ist es ja immer nur ein SELECT 'was' VON 'datenbank Tabelle' WHERE 'bedingung'
Dann halt eventuell noch ein GROUP BY oder BETWEEN um die Zeit einzugrenzen.
Die Sensoren werden in der InfluxDB ja auch über ihren Namen angesprochen. Sollte also eigentlich nicht das große Problem sein.
 
So, ich habe jetzt mal den Code aus der InfluxDB für meinen Sensor netzbezug_tasmota_kwh kopiert und bei MYSQL Code eingefügt.
Leider kommt eine Fehlermeldung und der Hinweis No Data.

SELECT difference(mean("value")) FROM "default"."kWh" WHERE ("entity_id" = 'netzbezug_tasmota_kwh') AND $timeFilter GROUP BY time(10m) fill(previous)

Was muss hier geändert werden, das es in MYSQL funktioniert.

Gruß und danke für die Hilfe
 

Anhänge

  • Screenshot_20230726_175323_Home Assistant.jpg
    Screenshot_20230726_175323_Home Assistant.jpg
    455,7 KB · Aufrufe: 4
Ich würde erst mal alle Bedingungen weg lassen und schauen, ob er dann Daten anzeigt.
SELECT difference(mean("value")) FROM "default"."kWh"
Kommen dann Daten, dann eine Bedingung nach der anderen dazu setzen und immer wieder testen.
Kommen hier auch keine Daten, stimmt entweder die Datenbank nicht oder die Tabelle nicht oder die Bezeichnung für die Werte nicht.
 
Ich weiß nicht ob das hier auch zu Problemen führt oder so vorgesehen ist, aber normalerweise würde eine solche Query schon wegen der Anführungszeichen nicht funktionieren:
1690444568002.png
Ersetzt man die " durch ` ist es eine gültige Abfrage - also bei Datenbank-, Tabellen- und Spaltennamen. Wäre vielleicht einen Versuch wert, ob es daran liegt.
 
Ich habe jetzt 2 Tage ausprobiert, wie ich eine Diagramm in Grafana mit MYSQL hinbekomme.
Da ich mich mit MYSQL Null auskenne, hat der Tip von Nival mit dem Hinweis "SELECT * From" mir wenigstens mal folgendes ausgegeben (siehe Anhang).
Gibt es denn niemanden im Forum, der mir den Code nennen kann, wie ich in Grafana mit MYSQL aus der Mariadb meinen Sensor
"sensor.netzbezug_tasmota_kwh" als Diagramm darstellen kann?

Danke an alle für die Geduld und Mühe
 

Anhänge

  • Screenshot_20230727_183458_Home Assistant.jpg
    Screenshot_20230727_183458_Home Assistant.jpg
    583,3 KB · Aufrufe: 3
Ich kenne mich zwar etwas mit SQL bzw. auch MySQL aus, aber ich habe bei mir keine MariaDB installiert.
Aber wenn ich mir Grafana -> Explore so ansehe, kannst Du doch oben links die Datenbank auswählen, auf die Du zugreifen willst.
Danach klickst Du dir doch nur noch nur noch das zurecht, was DU sehen willst und dann hast Du doch auch die Abfrage dazu.
1690542053908.png
So sieht es aus, wenn man nur auf EXPLORE geht. Links oben steht "InfluxDB", da sollte bei Dir dann MariaDB stehen.
Dann klickst Du auf "select measurement" um den Bereich auszuwählen, der abgefragt werden soll. Bei mir nehme ich mal "W" wie Watt.
Bei "WHERE" das Plus dahinter anklicken und weiter differenzieren. Hier z.B. die entity_id:tag. Danach kann man dann bei "select tag value" den Sensor auswählen, dessen Werte man sehen will.
Und wenn Du nun den Abfrage String haben willst, klickst Du auf "Query history". Der oberste sollte es dann sein und da kannst Du ganz rechts auf "copy query to clipboard" klicken.
1690542311508.png
Man kann da noch viel mehr einstellen, aber das würde den Bereich hier sprengen. Da muß man sich auch mal selbst etwas in SQL einlesen.
 
Nachdem ich jetzt mal MariaDB und Grafana installiert habe scheint mir das mit MySQL als Quelle schon ein wenig anders auszusehen, speziell hat es eben viel weniger Optionen. Ich habe mich allerdings nie mit InfluxDB beschäftigt (und bis heute auch nicht mit Grafana), insofern kann ich jetzt auch nicht alles übersetzen was dort steht... mean dürfte avg sein, Durchschnitt. Ein "GROUP BY time()" wäre mir in MySQL nicht bekannt, difference() sagt mir jetzt spontan auch nichts. Ausgehend von diesen Daten:
1690547063306.png
wäre das somit (schwer improvisiert) in etwa diese Query:
Code:
SELECT AVG(state), SUBSTR(last_updated, 1, 15) FROM states WHERE entity_id = 'input_number.xyz' GROUP BY SUBSTR(last_updated, 1, 15)
1690547161417.png
um den Durchschnitt der Daten im 10-Minuten-Takt anzuzeigen. Vielleicht hilft das schonmal etwas weiter.
 
Hallo,
vielen Dank für die schnelle Antwort. Ich glaube aber, wir reden aneinander vorbei.
Die MariaDB habe ich nur als Ersatz (da gehen keine Daten mehr verloren) für die interne Datenbank "home-assistant_v2.db" in Homeassistant installiert. Die home-assistant_v2.db habe ich dann nach der installation von MariaDB gelöscht.
Mit der InfluxDB, die auch installiert ist, habe ich keine Probleme. Dort habe ich alle Sensoren eingebunden und das funktioniert alles super.
Ich möchte nur nicht zwei Datenbanken installiert haben und würde eigendlich gerne die Influxdb löschen. Bei Mariadb geht das leider nicht so einfach, das Menü sieht hier ganz anders aus, man kann keine Entitäten, Sensoren und so weiter direkt auswählen, geht alles nur über die Code Eingabe,siehe Anhang.
Ich habe auch schon den Code aus der InfluxDB in MYSQL kopiert, kommt aber immer eine Fehlermeldung.
Der Grund ist, in der InfluxDB kann man nicht so einfach falsche Werte ändern oder löschen. Bei der internen DB also MariaDB geht das sehr gut über Entwicklerwerkzeuge/Statistik in Homeassistant.

vielen Dank
transputer
 

Anhänge

  • Screenshot_20230728_143725_Home Assistant.jpg
    Screenshot_20230728_143725_Home Assistant.jpg
    369,7 KB · Aufrufe: 2
Äh, wieso kannst Du in der InfluxDB keine Werte ändern ? Gerade dazu habe ich doch einen Beitrag verfasst, der zeigt, wie das geht. Und zwar genau so, wie Du es im letzten Satz auch geschrieben hast. Entwicklerwerkzeuge - > Statistik
Ich bin mir sehr sicher, das die Sensoren in der MariaDB die selben Namen haben, wie in der InfluxDB.
Die Namen in deinem angehängten Bild sind nur etwas anders, als in InfluxDB.
Dataset sollte der Name der Datenbank sein.
Tabelle heißt bei InfluxDB measurement.
Column ist dann der Tag

Du hast oben doch schon geschrieben, das dein "SELECT * FROM ....." ein Ergebnis geliefert hat. Perfekt.
Nun mußt Du doch nur noch sagen, was genau Du sehen willst.
SELECT * zeigt halt ALLE an.
SEELECT mean würde nur den "mean" Wert anzeigen.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.676
Beiträge
47.748
Mitglieder
4.324
Neuestes Mitglied
Onkel Fritz
Zurück
Oben