NEWS
Hilfe bei Gaszähler > Reed > InfluxDB > Grafana
-
Vielen vielen Dank @Markus-7
das hat mir sehr weitergeholfen, war zwar den ganzen Tag nicht zuhause, konnte aber in kurzer Zeit schon einiges davon umsetzen.Hab als erstes die Datenpunkte angelegt, war eigentlich ganz einfach.
Anschliessend hab ich dann ein Blockly Script anhanden deinem Bild nachgebaut mit meinen Datenpunkten.
Dann hab ich noch das speichern dens Datenpunkts die DB eingestellt.
Und jetzt muss ich noch das Dashboard in Grafana zusammenbasteln.
Da hab ich aber noch ein paar schwarze Flecken, diese Flux Query Language ist ja ggrauenhaft, hab das jetzt mal voin influxql umgestellt, jetzt geht zwar mein restliches Zeug nichtmehr aber egal mann muss ja auch mal mit der Zeit gehen.Jedenfalls brauche ich noch ein paar Infos:
Wie finde ich das passende Bucket meins Datenpunkts, hier mal ein Beispiel Datenpunkt:{ "common": { "name": "Zaehlerstand_m3", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0, "custom": { "influxdb.0": { "enabled": true, "storageType": "", "aliasId": "Zaehlerstand_m3", "debounceTime": 0, "blockTime": 0, "changesOnly": true, "changesRelogInterval": 0, "changesMinDelta": 0, "ignoreBelowNumber": "", "disableSkippedValueLogging": false, "enableDebugLogs": false, "debounce": 1000 } } }, "type": "state", "native": {}, "_id": "0_userdata.0.Gas.Zaehlerstand_m3", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1708875595753 }
Wäre hier das Bucket das ich in der Query verwenden müsste influxdb.0
Wenn ich jetzt deine Abfrage auf mein Feld anwenden wollte müsste ich das dann so ändern: (cih habe den ganzen ID Pfad da genommen, oder reicht da diese aliasid auch aus?)
from(bucket: "influxdb.0") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Gas.Zaehlerstand_m3") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
Jedenfalls bin ich schon weit gekommen und hab viel gelernt, diese Datenpunkte und die einfache Handhabung mit Blockly eröffnen ja extreme Möglichkeiten
-
@seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Wie finde ich das passende Bucket meins Datenpunkts, hier mal ein Beispiel Datenpunkt:
Ich weiß nicht, ob ich dich richtig verstehe, denn unter "Bucket" habe ich nur ein einziges, in das mir alle Daten von ioBroker reingeschaufelt werden. Man kann aber auch bei größeren bzw. sehr vielen Datenpunkten auch mehrere Buckets definieren. Und das Bucket definierst du ja in ioBroker selbst in der influxdb.0 Instanz (hier "DB Name" genannt):
In InfluxDB selber gehe ich diesen Weg, um die richtige Abfrage zu finden:
Das ergibt dann diese Abfrage, die ich mit copy&paste in Grafana einfüge:
-
@markus-7 das war genau mrine Frage!!
Den Dataexplorer hab ich noch nicht gefunden, vielleicht muss ich mein grafana updaten, ich hab ja nur die Query Language umgestellt.Probier ich morgen gleich aus.
-
@markus-7 said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Ich weiß nicht, ob ich dich richtig verstehe, denn unter "Bucket" habe ich nur ein einziges, in das mir alle Daten von ioBroker reingeschaufelt werden.
Es gibt schon Gründe für mehrere Buckets. Bisher habe ich nur eines, aber ggfs. werde ich mir ein Zweites mit deutlich längerer Retain Time anlegen, in das dann z.b. Tageswerte für Energieverbrauch kommen... Das aktuelle Bucket räumt alles ab, was älter, als 12 Monate ist...
-
@seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Den Dataexplorer hab ich noch nicht gefunden, vielleicht muss ich mein grafana updaten,
Nur, dass wir nicht aneinander vorbeischreiben: Den Dataexplorer gibt es in InfluxDB, nicht in Grafana
-
@markus-7 ich hab influx über die console installiert, ich glaub ich hab garkein webinterface dazu, wenn ich ip:8086 aufrufe bekommf ich nur „page not found“
das interface hätte alled deuhlich vereinfacht, hast du eine idee dazu? 🫣
Ich habe InfluxDB 1.6.7 installiert, muss ich das updaten?
-
Leider kenne ich mich da nicht wirklich aus, da ich auch das meiste nur "stur nach Anleitung" installieren konnte.
Vielleicht hilft dir dieser Tread weiter: https://forum.iobroker.net/topic/39887/geklärt-problem-bei-influx-installation/33Ansonsten müssten da mal hier die Profis ran, mir hat man auch schon viel (und erfolgreich) hier geholfen
-
Bevor ich das InfluxDB Problem weiter behandle muss ich noch die Falschzählungen des Reedkontakts lösen.
Ich hab das Script wie gesagt aus dem Netz und hätte dazu ein paar Fragen, ich hoffe jemand kann mir dabei helfen.
Wozu brauch ich folgenden Part, hab kein Homeassistant laufen, konnte das durch google nicht lösen.
Kann ich das rauslöschen?# Enable Home Assistant API api: encryption: key: "2342+243532+234532="
Jetzt zum eigentlichen Problem:
Aktuell zähle ich leider doppelt da ich mit einem Blockly Script bei Änderung des Status eine Zählung mache, da aber die Rückstellung von on auf off auch eine Änderung ist zähle ich jede Umdrehung doppelt.
Hier der Teil aus der esphome yaml der den Status erfasst:# Reed Kontakt an GPIO5 binary_sensor: - platform: gpio name: "Gaszaehler" id: Gaszaehler pin: number: 5 inverted: true mode: INPUT_PULLUP filters: # debounce, delay um Doppelzählungen zu vermeiden - delayed_off: 1s on_press: then: - mqtt.publish: topic: esphome/Gaszaehler/Stand payload: id(Gaszaehler).state
Ich hab noch nicht rausgefunden wie ich das am einfachsten löse.
Kann man in Blockly nicht sagen "wenn Wert == on > Zählen", dann würde er die Rückstellung auf off nicht beachten
Vielen Dank für eeure Tipps!
EDIT:
Was haltet ihr davon
-
@seppele Die zweite Lösung funktioniert. Übliche Lösung ist aber auch oben im Trigger statt ....
"wurde geändert"
"ist größer als voriger"
... zu wählen,,,
-
@seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Aktuell zähle ich leider doppelt da ich mit einem Blockly Script bei Änderung des Status eine Zählung mache
Ich habe das so gelöst, dass ich pro Impuls die Hälfte der eigentlichen Verbrauchszahl hinzuaddiere.
Ich greife also am Zähler (mit der Auflösung von 0,001 m3) die 2. Nachkommastelle ab (entspricht 10 L).
Dabei gibt es bei pro ganzer Umdrehung des Zählrades zwei Impulse. Diese addiere ich dann in Blockly mit jeweils dem Wert "0,005", sodass die zwei Impulse dann zusammen "0,01 m3" ergeben und zum bestehenden Verbrauch addiert werden. -
Danke euch zwei!
@martinp Verstehe ich nicht ich stelle ja immer zwischen ON und OFF hin und her und habe ja keinen Wert der sich erhöht oder kapiere ich die Funktion nicht?
@Markus-7 Ja verstehe jetzt dein vorgehen, ich glaube ich bleib aber vorerst mal bei meinem Wertvergleich gefällt mir irgendwie besser
-
@seppele Wenn ich Dir einen Tipp geben kann- lass es mit Reed- Näherungssensor oder IR- Sensor. Habe damit echt lange rumexperimentiert- frisst echt nur Zeit und Nerven. Es wir immer wieder mal zu Fehlzählungen kommen, und dann muss du wieder von Hand eingreifen und das korrigieren. Ich hab mich schließlich für die ESP-Cam entschieden mit Watermeter. Das funktioniert echt zuverlässig seit einem Jahr.
Ich habe mal ein Video darüber gemacht - https://www.youtube.com/watch?v=Rtp13A-BMxA&t=77s - schau es dir einfach mal an wenn du Lust hast. -
@seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Bevor ich das InfluxDB Problem weiter behandle muss ich noch die Falschzählungen des Reedkontakts lösen.
wie alle (oder fast alle) ist das Prellen des Reedkontakt problematisch. Ich hab da auch lange rum probiert. Letztendlich hab ich dann den Reedkontakt hardwareseitig mit einem retriggerbaren Monoflop ausgestattet. Dann war Ruhe. läuft jetzt ohne Falschimpulse seit einem Jahr.
-
So hab wieder getüftelt, leider hat meine Variante vom Blockly-Script nicht funktioniert, warum weis ich nicht, hab dann auf die variante von @Markus-7 zurück geändert und zähle jetzt mit 0,005 aber dafür On und Off damit ergibt sich dann wieder bei einem Durchgang 0,01
Jetzt wird wieder fleißig gezählt, heute morgen war aber leider der Status auf ON also hat das D1 nichtmehr zurückgestellt auf OFF und somit fehlt mit jetzt eine Zählung.
Wie muss ich mir denn das vorstellen mit dem Reedkontakt, der Magnet am Zählerrad dreht sich am Kontakt vorbei und schliesst den Schalter, erkennt der beim drehen den Anfangszeitpunkt wo der Schalter schliesst und den Endzeitpunkt wo der Schalter wieder öffnet?
Oder erkennt der nur einen Impuls beim schliessend und öffnet dann wenn der Magnet wieder außer Reichweite ist ohne einen Impuls und das Script sagt nach 1 Sekunde wieder zurückstellen auf OFF?Der erste Impuls wurde nämlich immer sauber übertragen, somit würde die Zählung stimmen wenn meine Variante vom Blockly Script funktioniert hätte,
@Springreiter Danke für die Info, aktuell macht mir das noch Spass das rumtüfteln, aber wenn das auf Dauer nicht sauber läuft dann muss ich mir was anderes Überlegen. Ich hab jedenfalls ein übriges ESP-Cam da liegen, daran scheiterst jedenfalls nicht
Schau mir dein Video aber heute Abend an.@ubecker Muss ich erst mal googeln was ein Monoflop ist aber danke für den Hinweis.
Jetzt zu InfluxDB:
Das Problem hab ich gelöst.
Hab einfach die 1.6.7 deinstalliert und eine 2.7 installiert, im Adapter habe ich nur auf v2 umstellen und das API Token eingeben müssen.
Leider hab ich meine bisherigen Daten verloren, hab zwar ein backup gemacht aber vermutlich passen die Strukturen nichtmehr mit der neuen Datenbank zusammen.
Mal sehen ob ich mir das antu und die Daten versuche zu importieren.Grafana:
Auch da hab ich ein Update von 9.x auf 10.x gemacht, jetzt bin ich überall wieder sauber.
Musste auch hier die Datenquell neu anlegen und das Token eingeben aber dann hat alles sofort funktioniert.
Hab auch schon ein paar Flux Querys gebastelt und dadurch schon Auswertungen gemacht.
Der Data Explorer von Influxdb2 ist sehr cool und Hilft mir sehr, auch gibts da ja sogar ein Dahsboard zum auswerten, wie Grafana für kleine Auswertungen.Es bleibt spannend durch eure Hilfe, mal sehen ob wir das hinbekommen mit dem Zählen.
-
@seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Verstehe ich nicht ich stelle ja immer zwischen ON und OFF hin und her und habe ja keinen Wert der sich erhöht oder kapiere ich die Funktion nicht?
Es werden in Programmiersprachen für möglichst viele Datentypen Sortier-Kriterien festgelegt...
Und bei Logikwerten ist true größer als false. Also wird bei "ist größer ..." der Übergang false->true ausgewertet, aber true -> false nicht ...
-
@martinp Danke martin, ich verstehe was du meinst, aber mein Status ist ja ON und OFF, das sind doch String Werte oder?
Kann ich den Wert On/OFF auf einen boolean prüfen?Wenn du sagst dass das geht dann probiere ich das heute Abend aus, dann müsste ich im Blockly aber prüfen auf Wahr oder?
-
@seppele sagte in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Jetzt wird wieder fleißig gezählt, heute morgen war aber leider der Status auf ON also hat das D1 nichtmehr zurückgestellt auf OFF und somit fehlt mit jetzt eine Zählung.
Wie muss ich mir denn das vorstellen mit dem Reedkontakt, der Magnet am Zählerrad dreht sich am Kontakt vorbei und schliesst den Schalter, erkennt der beim drehen den Anfangszeitpunkt wo der Schalter schliesst und den Endzeitpunkt wo der Schalter wieder öffnet?
Oder erkennt der nur einen Impuls beim schliessend und öffnet dann wenn der Magnet wieder außer Reichweite ist ohne einen Impuls und das Script sagt nach 1 Sekunde wieder zurückstellen auf OFF?Es ist noch ein wenig anders. Ja, der Magnet dreht sich am Reed-Kontakt vorbei. Solange der Magnet vor dem Reed-Kontakt steht, wird "ON" gesendet, ansonsten "OFF". Wenn nun der Gasbezug zufälliger Weise endet, während der Magnet vor dem Reed-Kontakt steht, bleibt der Status auf "ON". Ganz normal, aber kein Problem, dadurch geht ja kein Wert verloren.
-
@marc-berg danke marc, eigentlich logisch jetzt wo dus mir erklärt hast
Dann beobachte ich heute mal den Zählerstand.
-
@seppele Auch bei Strings gibt es Sortierkriterien, "OFF" ist in diesem Falle kleiner als "ON", da "F" weiter vorne im Alphabet liegt, als "N".
-
@seppele sagte in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:
Hab einfach die 1.6.7 deinstalliert und eine 2.7 installiert, im Adapter habe ich nur auf v2 umstellen und das API Token eingeben müssen.
Leider hab ich meine bisherigen Daten verloren, hab zwar ein backup gemacht aber vermutlich passen die Strukturen nichtmehr mit der neuen Datenbank zusammen.
Mal sehen ob ich mir das antu und die Daten versuche zu importieren.Mit dem Backup kannst du auf der 2.7 nichts anfangen. Der einfachste Weg wäre wohl gewesen, ein
influxd upgrade --config-file <path to v1 config file>
durchzuführen. Dazu müssten aber noch die alte Config (
influxdb.conf
) und die Datendateien der InfluxDB 1.x vorhanden sein.