Neues Modul InfluxDBLogger

Begonnen von timmib, 07 Oktober 2020, 23:31:09

Vorheriges Thema - Nächstes Thema

timmib

ZitatSind conversions case sensitive oder würde folgende definition auch ein ON zu 1 übersetzen?

Die Conversions sind unabhängig von der Groß und Kleinschreibung. TRUE und On und oN usw. würden in Deinem Beispiel also auch auf 1 konvertiert.

Viele Grüße

Tim

volschin

Cooles Modul. Danke für die tolle Arbeit. Ich stelle gerade mein influxlog auf das neue Modul um.
Das ist dann gerade rechtzeitig, um für influxdb 2.0 gerüstet zu sein.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Karflyer

Nach einem Neustart von FHEM erhalte ich vielfach (ca. 160 Zeilen) die folgende Fehlermeldung im Log:
InfluxDBLogger: [influxdb_climate] Error = write to http://xxxxxxxxxx:8086 timed out
bzw.
InfluxDBLogger: [influxdb_meter] Error = read from http://xxxxxxxxxxx:8086 timed out

Danach laufen die beiden InfluxDBLogger-Instanzen normal weiter. Kann es sein, dass das FHEM-System den Neustart noch nicht abgeschlossen und InflußDBLogger bereits versucht die Datenbank zu erreichen, was dann fehlschlägt?

Grüße
Stefan

timmib

#108
Ne, das reagiert erst wenn die Initialisierung durch ist.
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/93_InfluxDBLogger.pm#L56

tomleitner

Super Modul ... klappt hervorragend. Danke an den/die Entwickler !!!

Hatte damit in ca. 1 Stunde schon die ersten Plots via InfluxDb und Grafana erzeugt. Letzere beide als Docker Container auf meinem NAS.

Aktuell hab ich auch ein DbLog auf PostgreSQL -- das will ich aber eher los werden weil es ja keinen Sinn macht alles doppelt zu loggen. Darüberhinaus wird mit dbLog ohnehin zu viel unnützes Zeug geloggt.

Leider kann man nun aber mit InfluxDB keine Plots in Fhem machen. Oder irre ich mich da? Jedenfalls habe ich nichts derartiges gefunden.  Aktuell kann man bei Plots nur "Logfile" oder "logDb" auswählen ... super wäre eben auch wenn dort  das InfluxDbLogger Device aufscheinen würde.

Gibts da Pläne diesbezüglich?

Danke // Tom

timmib

Ich nutze dafür Grafana im IFrame I'm TabletUI.

Freut mich, dass es gefällt.

meier81

#111
Hallo Tim,

ich hab ja jetzt seit einigen Wochen dein Modul im Einsatz, läuft soweit echt gut und ohne Probleme. Hatte gestern Mal ein reload des Moduls gemacht und ein paar Fehlermeldungen erhalten:

Too many arguments for main::InfluxDBLogger_GetPassword at ./FHEM/93_InfluxDBLogger.pm line 116, near "$name)"
Too many arguments for main::InfluxDBLogger_GetMeasurement at ./FHEM/93_InfluxDBLogger.pm line 187, near "$value)"
Too many arguments for main::InfluxDBLogger_GetTagSet at ./FHEM/93_InfluxDBLogger.pm line 188, near "$value)"
Too many arguments for main::InfluxDBLogger_GetFieldSet at ./FHEM/93_InfluxDBLogger.pm line 189, near "$value)"
Too many arguments for main::InfluxDBLogger_ResetStatistics at ./FHEM/93_InfluxDBLogger.pm line 395, near "$name)"


Ich hab dann mal in die Moduldatei reingeschaut, ich glaube da fehlen ein paar $-Zeichen in den subs. Hab folgende Zeilen angepasst:


Zeile 195: sub InfluxDBLogger_GetMeasurement($$$$$)
Zeile 214: sub InfluxDBLogger_GetTagSet($$$$$)
Zeile 233: sub InfluxDBLogger_GetFieldSet($$$$$)
Zeile 379: sub InfluxDBLogger_Set($$$@)
Zeile 403: sub InfluxDBLogger_ResetStatistics($$)
Zeile 424: sub InfluxDBLogger_GetPassword($$)


Bei folgenden subs sind gar keine Übergabeparameter definiert:


Zeile 439: sub InfluxDBLogger_StoreSecret
Zeile 470: sub InfluxDBLogger_ReadSecret


Ich denke dort sollen dann auch jeweils die dazu passenden Übergabeparameter mit dazu, habe das alles mal angepasst, dann restart fhem, anschließend bringt ein reload des Moduls keinen Fehler mehr.

Das könntest du vielleicht an deinem Modul noch anpassen, dann sind die reload-Fehler auch behoben.

Gruß Markus

edit: Hab dir mal noch die Datei mit den Änderungen angefügt  ;)
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

timmib

Hallo Markus,

ich habe es übernommen und commited.

Vielen Dank

Tim

timmib

Hallo liebe Freunde von InfluxDB,

das neue Modul ermöglicht die effektive Übertragung von InfluxDB "Fields" nach FHEM.
Dies ist sehr nützlich um Werte,die direkt nach InfluxDB geschrieben werden (ohne FHEM) trotzdem in FHEM nutzbar zu machen. So entsteht anstatt einer Doppellieferung nach InfluxDB und FHEM eine Kette.

Und nicht nur das, es kann die volle Macht von Kapacitor dabei ausgenutzt werden. Kapacitor erlaubt z.B. gleitende Mittelwerte über bestimmte Zeitfenster uvm.

Das Modul registriert automatisch einen einfachen Task beim Kapacitor und stellt einen TCP-Server bereit um die Werte zu empfangen. Dieser Task wird sogar automatisch aktualisiert, wenn ihr die Attribute ändert.

TODOs:

  • jegliche Security
  • jegliches Löschen des Tasks

Viel Spaß beim Testen und Feedback schreiben.

Tim

siehe hier https://forum.fhem.de/index.php?topic=118208.msg1126288#msg1126288

meier81

Hallo Tim,

ich hätte noch einen Verbesserungsvorschlag bezüglich readingExclude und readingInclude.

Ich fände es sinnvoll hier nicht das Event auszuwerten sondern nur das Reading, habe bei mir nämlich den Fall das ich bei readingInclude z.B. "wind" definiert habe, ich dann aber alle Werte mit "wind" bekomme, also "wind", "windChill", "windDirection", etc.

Hab auch schon versucht das ganze mal mit einzubauen, hab da allerdings noch ein paar kleine Probleme zur Zeit.

Was meinst du denn zu dem Vorschlag, denke wäre dann auch eindeutig, vom Namen her (readingInclude) gehe ich eigentlich von der Funktion aus. Ansonsten müsste es eigentlich eher "eventInclude" heißen.

Gruß Markus
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

timmib

Hi Markus,

wenn Du nur auf den Readingnamen matchen möchtest stelle bitte ein ^ voran. Siehe https://perldoc.perl.org/perlrequick
Also in Deinem Falle:
^wind

Um das Ganze noch stärker einzuschränken könnte man die RegEx noch weiter ausfeilen.

Ein Reading besteht in meinen Augen aus Name und Wert. Insofern ist die Bezeichnung korrekt.

Viele Grüße

Tim

meier81

Zitat von: timmib am 27 Januar 2021, 13:33:35
Hi Markus,

wenn Du nur auf den Readingnamen matchen möchtest stelle bitte ein ^ voran. Siehe https://perldoc.perl.org/perlrequick
Also in Deinem Falle:
^wind

Hi Tim, das dachte ich ja ursprünglich auch, funktioniert bei diesem Modul aber leider nicht (siehe Antwort 92-94 hier im Beitrag).

Wie gesagt ich finde es nur komisch das hier der event dafür benutzt wird, das kenn ich eigentlich so nicht von anderen Modulen. War bislang immer so wenn du readings einschränkst sich das dann immer nur auf den readingnamen beschränkt.

Falls es doch angepasst werden sollte, habe den Fehler in meiner Skriptanpassung gefunden, läuft jetzt rund ;)
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

meier81

#117
Falls du dir mal die Änderungen anschauen willst, hab dir mal die Datei angehängt.

Die Änderungen sind zwischen Zeile 137 und 159.

Ist aktuell include-vorrangig, d.h. trägst du das gleiche reading bei include und exclude überwiegt include, das kann ja aber einfach umgedreht werden.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

timmib

Hi,

also ich filtere auf
test:.* und es klappt wunderbar

Auch ^test sorgt dafür das wrong: test nicht inkludiert wird.

Viele Grüße

Tim

timmib

ZitatFalls du dir mal die Änderungen anschauen willst, hab dir mal die Datei angehängt.

Habe ich mir angeschaut.

Da diese Funktion bei JEDEM Event aufgerufen wird von JEDEM Device der auf die devspec matcht sollte sie so effizient wie möglich sein.
Da auch noch die Werte ignoriert werden, also es so weniger Funktion hat, würde ich eher dafür plädieren es so zu lassen wie es ist und einfach entsprechend eure RegExn anpassen.

Tim