Wie kann ich einzelne Einträge in der InfluxDB auslassen?

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

volkerg99
Beiträge: 38
Registriert: Sa 15. Okt 2022, 19:49
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Wie kann ich einzelne Einträge in der InfluxDB auslassen?

Beitrag von volkerg99 »

Hi zusammen,

da es immer wieder vorkommt, dass in meinem System irrwitzige Einträge in der InfluxDB landen, hätte ich mal ne Frage.

Kann man in den Scripten an irgendeiner Stelle solche Werte abfragen und die Solaranzeige dazu bewegen, diese nicht in die DB zu schreiben? Mit manchen meiner Tagessummen könnte ich ganz Deutschland mit Strom versorgen. Andere besagen, dass meine Einzelzellen 0V oder auch mal 5V haben.

Ich würde solche Einträge gerne bereits im Code herausfiltern, so dass diese gar nicht erst in die DB geschrieben werden. Im Moment lösche ich abends die fehlerhaften Einträge aus der DB. Aber da Influx für solche Fälle nicht grad kooperativ ist, muss man ja jeden Eintrag einzeln löschen. Allerdings habe ich von PHP leider nicht wirklich die Ahnung. Ich kann zwar die betroffenen Stellen im Code suchen und ändern, wüsste aber nicht wie ich solch Abfragen gestalten müsste und an welcher Stelle sie in welches Script kommen müssen.

Ich wäre über eure Hilfe dankbar.

Benutzeravatar
mr.big
Beiträge: 484
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 10 Mal
Danksagung erhalten: 100 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von mr.big »

Du könntest in einer *_math.php download/EigeneErweiterungen.pdf die Werte auf Plausibilität prüfen und auch eventuell korrigieren bevor sie in die Datenbank geschrieben werden.

Dazu wirst du dich aber etwas mit PHP auseinandersetzen müssen, einfaches Beispiel siehe hier https://www.php-kurs.com/bedingungen-if ... in-php.htm

Benutzeravatar
mdkeil
Beiträge: 383
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 15 Mal
Danksagung erhalten: 23 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von mdkeil »

Wenn die _math.php verarbeitet wird, sind meiner Ansicht nach die Daten bereits in der DB. Eine Plausibilitätsprüfung müsste meiner Ansicht nach zentral passieren, unabhängig vom Regler.. ist aber wahrscheinlich beliebig komplex. Die nächste Herausforderung besteht darin, dass die Speicherung in der Influx einem festen Schema folgt, ich also nicht einfach einen Wert verwerfen kann, da dann ggfs. der gesamte Datensatz verworfen werden müsste.. Dieses Problem lässt sich natürlich auch mit entsprechendem Programmieraufwand lösen oder der Wert wird z.b. auf 0 gesetzt, was aber auch nicht immer korrekt sein dürfte..

Als Workaround sind wahrscheinlich entsprechende Filter/Transformationen in Grafana deutlich einfacher umzusetzen, was das Problem zwar nicht löst aber zumindest das Frontend bereinigt.
IBN: 07/2021
Fronius Symo : 13.2kWp S 45° + 3.96 kWp S 15°
Fronius Primo : 2.97 kWp N 15°
Speicher: 14,3 kWh LiFePO4 (EEL) + Seplos BMS @ Victron MP-II 48/5000
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro
######
Tibber-Invite (100% Öko-Strom + 50€ Bonus)

solarfanenrico

Re: Einträge in der InfluxDB auslassen

Beitrag von solarfanenrico »

volkerg99 hat geschrieben:
Di 4. Apr 2023, 07:02
Hi zusammen,

da es immer wieder vorkommt, dass in meinem System irrwitzige Einträge in der InfluxDB landen, hätte ich mal ne Frage.

Kann man in den Scripten an irgendeiner Stelle solche Werte abfragen und die Solaranzeige dazu bewegen, diese nicht in die DB zu schreiben? Mit manchen meiner Tagessummen könnte ich ganz Deutschland mit Strom versorgen. Andere besagen, dass meine Einzelzellen 0V oder auch mal 5V haben.

Ich würde solche Einträge gerne bereits im Code herausfiltern, so dass diese gar nicht erst in die DB geschrieben werden. Im Moment lösche ich abends die fehlerhaften Einträge aus der DB. Aber da Influx für solche Fälle nicht grad kooperativ ist, muss man ja jeden Eintrag einzeln löschen. Allerdings habe ich von PHP leider nicht wirklich die Ahnung. Ich kann zwar die betroffenen Stellen im Code suchen und ändern, wüsste aber nicht wie ich solch Abfragen gestalten müsste und an welcher Stelle sie in welches Script kommen müssen.

Ich wäre über eure Hilfe dankbar.
Als shell-skript habe ich diese Variante mal für einen anderen Nutzer gestaltet. Hier brauchen im Prinip nur der Name der InfluxDB, das Measurement, das Field an dei eigenen Bedürfnisse angepasst, und die Anzahl der zu entfernen Spikes eingetragen werden. Wie man dieses skript nennt ist egal, genau in welchem Ryhms es durch den crontab ausgefüht wird. Die Rechte müssen noch erteilt werden.

mit sudo nano delete.sh diese Datei anlegen und Inhalt reinkopieren
#!/bin/bash
INFLUXDATABASE="solaranzeige"
MEASUREMENT="AC"
FIELD="Leistung"
# im folgenden Befehl werden in den geschweiften Klammern die Anzahl der Zeichen bestimmt, welche entfernt werden müssen , damit der
timestamp vollständig erhalten bleibt.
# es darf nur mit dieser {Zahl} experimentiert werden.
VAR=`influx -host localhost -port 8086 -database $INFLUXDATABASE -execute "SELECT max("$MEASUREMENT") FROM "$FIELD" ORDER
BY time DESC LIMIT 1" | sed -r -n '4,4s/.{7}$//p'`
echo $VAR
influx -host localhost -port 8086 -database $INFLUXDATABASE -execute "DELETE WHERE time = $VAR"
mit STRG+X speichern, mit „J“ bestätigen und schließen
danach Rechte vergeben
chmod 755 /home/pi/delete.sh
In regelmäßigen Abständen wird dies dann mit dem cronjob erledigt
Enrcio

Benutzeravatar
mr.big
Beiträge: 484
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 10 Mal
Danksagung erhalten: 100 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von mr.big »

Code: Alles auswählen

1. Falls das Gerät dafür vorbereitet ist, werden Befehle zum Gerät gesendet.
2. Die Daten werden aus dem Gerät ausgelesen.
3. Hier werden die eigenen Erweiterungen verarbeitet.
4. Die Daten werden, falls gewünscht per MQTT zum nächsten Brocker gesendet.
5. Die Daten werden zur entfernten Datenbank gesendet. (Falls gewünscht)
6. Die Daten werden in die lokale Datenbank geschrieben.
7. Falls gewünscht werden Daten zur HomeMatic gesendet.
8. Falls nötig werden Nachrichten über Pushover gesendet.
Laut Beschreibung kann ich schon in der _math.php (Punkt 3) die Daten vor dem "Wegschreiben" ( Punkt 5/6) manipulieren!

Benutzeravatar
mdkeil
Beiträge: 383
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 15 Mal
Danksagung erhalten: 23 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von mdkeil »

Du hast Recht, ich habe auch nochmal in meine Regler.php geschaut-- die _math.php wird verarbeitet bevor die Daten geschrieben werden.
IBN: 07/2021
Fronius Symo : 13.2kWp S 45° + 3.96 kWp S 15°
Fronius Primo : 2.97 kWp N 15°
Speicher: 14,3 kWh LiFePO4 (EEL) + Seplos BMS @ Victron MP-II 48/5000
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro
######
Tibber-Invite (100% Öko-Strom + 50€ Bonus)

volkerg99
Beiträge: 38
Registriert: Sa 15. Okt 2022, 19:49
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von volkerg99 »

mdkeil hat geschrieben:
Di 4. Apr 2023, 08:30
Wenn die _math.php verarbeitet wird, sind meiner Ansicht nach die Daten bereits in der DB. Eine Plausibilitätsprüfung müsste meiner Ansicht nach zentral passieren, unabhängig vom Regler.. ist aber wahrscheinlich beliebig komplex. Die nächste Herausforderung besteht darin, dass die Speicherung in der Influx einem festen Schema folgt, ich also nicht einfach einen Wert verwerfen kann, da dann ggfs. der gesamte Datensatz verworfen werden müsste.. Dieses Problem lässt sich natürlich auch mit entsprechendem Programmieraufwand lösen oder der Wert wird z.b. auf 0 gesetzt, was aber auch nicht immer korrekt sein dürfte..

Als Workaround sind wahrscheinlich entsprechende Filter/Transformationen in Grafana deutlich einfacher umzusetzen, was das Problem zwar nicht löst aber zumindest das Frontend bereinigt.
Der Datensatz soll auch verworfen werden. Ansonsten hat man ja 0 oder NULL für den entsprechenden Eintrag im Datensatz. Die Bedingung soll ja nur heißen, wenn ein Datum im Datensatz Müll ist, dann schreibe den DS gar nicht erst in die DB, sondern verwerfe ihn. Wenn zwischendurch mal ein, zwei Datensätze fehlen sieht es immer noch besser aus, als mit den Ausreißern. Dann muss ich mir mal die _math.php anschauen. Gibt es für die Datei Beispiele hier im Forum? Bin über die Suche nicht weiter gekommen :-(

volkerg99
Beiträge: 38
Registriert: Sa 15. Okt 2022, 19:49
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von volkerg99 »

Hi zusammen,

ich habe mir jetzt die _math,php vorgenommen.

Wenn Ausreißer, dann soll der EIntrag ja nicht übernommen werden. Daher habe ich in der _math.php die Variable $MQTT auf false gesetzt. Scheinbar wird der Eintrag allerdings ignoriert bzw. in der nachfolgenden .php wieder aktiviert.

Benutzeravatar
mr.big
Beiträge: 484
Registriert: Mi 7. Sep 2022, 12:12
Wohnort: tief im Osten...
Hat sich bedankt: 10 Mal
Danksagung erhalten: 100 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von mr.big »

MQTT ist aber nicht InfluxDB !? :?:

Jetzt wird es leicht verwirrend?

volkerg99
Beiträge: 38
Registriert: Sa 15. Okt 2022, 19:49
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Einträge in der InfluxDB auslassen

Beitrag von volkerg99 »

Hatte ich vorhin auch schon festgestellt :roll:
Aber er schreibt auch nach MQTT.
Allerdings hatte ich jetzt vorhin ausprobiert in der _math.php $InfluxDB_local auf false zu setzen.
Das hat er auch ignoriert.
Jetzt versuche ich es grad mit $InfluxDB_local = 0 in der _math.php

Antworten

Zurück zu „Allgemeines“