NEWS
InfluxDB schreiben nur Änderungen
-
@homoran
In einem alten Thema wurde das behandelt. Ist aber jetzt geschlossen worden. Deshalb hier neu:
Einen Schalter zum Testen gebaut. Mit einem Alias in 0/1 Werte gewandelt. Zur Grafana Auswertung. Möchte nur die Änderungen in die Datenbank schreiben. Funktioniert nicht. Nehme ich den Haken bei "Nur Änderungen " raus, wird etwas eingetragen. Der Wert steht bei mir bis zum nächsten manuellen Umschalten.
Entprellzeit 100, Block 200 mS. Wie oft sollte denn etwas in die Datenbank geschrieben werden, wenn kein "Nur Änderungen" aktiv ist?
Möchte nicht Unmengen von Daten erzeugen. Das ist aber nur ein Nebenthema. Es tritt zur Zeit nicht auf.
Wie mache ich das richtig, um nur Änderungen zu protokollieren?Hier ein Bild aus der realen Welt (Kein Testschalter):

Wenn die grüne Kurve abknickt, schaltet der GPIO auf 0. Aber kein Eintrag in die Datenbank. (orange Kurve)@Laser sagte in InfluxDB schreiben nur Änderungen:
Deshalb hier neu:
Dies wird jetzt (mindestens) der dritte Thread zu deinem "Problem".
Nachdem du im letzten Thread ganz zum Schluss noch weitere Informationen hinzugefügt hattest, bin ich mir gar nicht mehr sicher, ob wir jetzt hier richtig sind!Um dir wirklich helfen zu können musst du strukturiert an die Sache herangehen. Daher bitte ich dich:
Bitte mach dir Gedanken wie die Kette von der Entstehung deines Signals(??) bis hin zur Verarbeitung in der InfluxDB beteiligt ist.
Schreibe dir das ei fach mal auf. Da kannst und sollst du editieren, ändern ergänzen so viel du willst.
Wenn du das fertig hast, poste diese ganze Verarbeitungskette mit wirklich allen Informationen hier.
Ich würde das dann ggf. verschieben, oder in verschiedene Threads spalten, um die beteiligten Adapter o.ä. einzeln nacheinander zu analysieren.
Vielleicht hilft dir das Lesen von
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträgeum zu verstehen was wir zum Helfen benötigen
-
Wie wird das Signal generiert? Ich erfasse die Leistungsaufnahme meines Ölbrenners. Aus diesem Wert erstelle ich zwei Zustände. Leistung größer xx= Brenner Ein. Leistung kleiner xx = Brenner aus. Damit schalte ich einen GPIO zur Brennerfreigabe, um eine Pausenzeit zu erzeugen. Das GPIO Signal (false/true) wird mit einem Alias in 0/1 gewandelt. Dieser Zustand soll in einer Datenbank gespeichert werden und in Grafana in einer Kurve der Temperatur des Wärmeerzeugers dargestellt werden.
-
Wie wird das Signal generiert? Ich erfasse die Leistungsaufnahme meines Ölbrenners. Aus diesem Wert erstelle ich zwei Zustände. Leistung größer xx= Brenner Ein. Leistung kleiner xx = Brenner aus. Damit schalte ich einen GPIO zur Brennerfreigabe, um eine Pausenzeit zu erzeugen. Das GPIO Signal (false/true) wird mit einem Alias in 0/1 gewandelt. Dieser Zustand soll in einer Datenbank gespeichert werden und in Grafana in einer Kurve der Temperatur des Wärmeerzeugers dargestellt werden.
@Laser Bitte!
Glaubst du wirklich, da könnten potentielle Helfende wirklich etwas mit anfangen?Wenn ich nicht die letzten Tage alles von dir gelesen hätte, und versucht hätte das nachträglich sinnvoll zu strukturieren, sähe das für mich nicht anders aus.
Ich bin mir allerdings noch lange nicht sicher ob ich alles relevante weiss.Z.B.
@Laser sagte in InfluxDB schreiben nur Änderungen:
Ich erfasse die Leistungsaufnahme meines Ölbrenners
- womit?
- wie kommt das Signal in ioBroker?
- welcher Adapter?
- welcher Datenpunkt?
- welcher Typ?
- welcher Wert
und ggf. noch mehr Infos, bitte
und das für jeden Schritt in der Kette, und nicht nur als Nacherzählung, sondern relevantes mit Fakten zeigen!
-
@homoran Dazu muß ich erst mal wissen, welche Dinge wichtig sind.
Leistunsaufnahme wird mit einem Shelly Mini gemessen.
Mit dem Baustein "Shelly" in den IO Broker eingelesen.
Der Datenpunkt:Dieser Leistungswert wird in einem Script ausgewertet und ein Binärer Datenpunkt erzeugt (Hatte ich schon mal dargestelltI)
Damit wird über ein anderes Script ausgewertet, ob das Signal fällt oder steigt.
Das fallende Signal soll in die Datenbank gespeichert werden. Ein GPIO wird angesteuert.
Da dieses aber "boolean" ist, habe ich einen Alias erzeugt, um 0/1 Werte zu erhalten. Der Wechsel auf 0/1 soll in die Datenbank geschrieben werden. Leider funktioniert das mal und mal nicht. Der letzte Zustand ist, daß ich den Haken bei "Nur Änderungen aufzeichnen" herausgenommen habe.
Wenn weitere Informationen fehlen, bitte schreiben. -
Mein Problem ist, wie schreibe ich zuverlässig nur die Änderung des Binärzustandes des Alias 0 und 1 in die Datenbank.
Gerne schreibe ich aber auch, wie die Leistung des Brenners erfasst wird. Auch wenn mir nicht klar ist, wozu man das für die Konfiguration der Datenbank braucht. Das ist sicher nicht das Einzige, was für mich unklar ist. -
Mein Problem ist, wie schreibe ich zuverlässig nur die Änderung des Binärzustandes des Alias 0 und 1 in die Datenbank.
Gerne schreibe ich aber auch, wie die Leistung des Brenners erfasst wird. Auch wenn mir nicht klar ist, wozu man das für die Konfiguration der Datenbank braucht. Das ist sicher nicht das Einzige, was für mich unklar ist.@Laser sagte in InfluxDB schreiben nur Änderungen:
Auch wenn mir nicht klar ist, wozu man das für die Konfiguration der Datenbank braucht.
wie ich vorhin schrieb
sagte in InfluxDB schreiben nur Änderungen:
bin ich mir gar nicht mehr sicher, ob wir jetzt hier richtig sind!
Möglicherweise liegt das Problem ganz woanders in der Kette.
Deswegen
sagte in InfluxDB schreiben nur Änderungen:
Schreibe dir das einfach mal auf. Da kannst und sollst du editieren, ändern ergänzen so viel du willst.
"das" = alle an der Kette beteiligten Vorgänge
-
@homoran
mit dieser Einstellung wurde der Binärzustand schon 2x richtig in die Datenbank geschrieben. Ohne irgendwelche unnötigen Zustände zu schreiben. Es wurden nur die Änderungen protokolliert. Mit dieser Einstellung:
Ein ein vollstaändiger Zyklus dauert immer etwa 30 Minuten. Ich beobachte weiter.
-
@homoran
mit dieser Einstellung wurde der Binärzustand schon 2x richtig in die Datenbank geschrieben. Ohne irgendwelche unnötigen Zustände zu schreiben. Es wurden nur die Änderungen protokolliert. Mit dieser Einstellung:
Ein ein vollstaändiger Zyklus dauert immer etwa 30 Minuten. Ich beobachte weiter.
@Laser sagte in InfluxDB schreiben nur Änderungen:
mit dieser Einstellung wurde der Binärzustand schon 2x richtig in die Datenbank geschrieben
ohne weitere Infos nutzt mir der Screenshot gar nichts.
- Was ist das für ein Datenpunkt
- wann wird der geschrieben?
- von wem?
- mit welchen Werten?
- wie werden diese generiert?
- sind die ggf. immer nur "geändert" wenn geschrieben wird?
.....
- sind die ggf. immer nur "geändert" wenn geschrieben wird?
-
Der Datenpunkt:
Der Datenpunkt wird in einem Script beschrieben.
setState('rpi2.0.gpio.23.state'/*Gpio 23*/,false) ; //true = Freigabe Brenner
Aus diesem Datenpunkt wird ein Alias abgeleitet.
Dessen Zustand soll protokolliert werden.
-
Ohne den Haken bei "Nur Änderungen aufzeichnen" in der Datenpunktkonfiguration für infuxDB hat es jetzt 3x richtig geschrieben.
Funktioniert bei Binärdaten diese Zusatzfunktion nicht richtig? Ist Sie evtl. überflüssig? Ist die Auswertung fehlerhaft?
Achtung geändert: Bei analogen Komma- Zahlenwerten funktioniert es ja. -
Mit dieser Zeile

veränderst du potentiell die Daten. Lösch' die mal.
-
@homoran 9 mal funktionierte das Schreiben in die Datenbank. Jetzt ein Aussetzer. Der nächste Zustandswechsel wurde wieder geschrieben.
@Laser
Bist du dir sicher, dass der Wert nicht in die DB geschrieben wird?Wahrscheinlicher ist, dass es vor der DB hapert (Wert wird vom Skript nicht korrekt geschreiben) oder danach (evtl. agregate Window in Grafana)
Wenn du im Iobroker die Werte bei Influx Verlaufsdaten anschaust: fehlt er dort auch?

-
Die InfluxDB hat ja eine grafische Oberfläche. Dort kann ich sehen, wenn Werte fehlen. Daß der Wert sich ändert, sehe ich ja an der Steuerung. In der Verlaufskurve der Temperatur. Siehe #13.
Grafana werde ich mir morgen nochmal genauer vornehmen. Da es bisher immer so lief, habe ich das nicht mehr angefasst.
Es dauert auch immer eine halbe Stunde, bis der Wert sich ändert.
Bild Link)