Neues Modul InfluxDBLogger

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

Vorheriges Thema - Nächstes Thema

meier81

Zitat von: timmib am 27 Januar 2021, 16:21:11
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

Das ist denke ich Ansichtssache, ich denke beide Varianten haben ihre Vor- und Nachteile. Prinzipiell hast du ja nicht weniger Funktion, ich will ja nicht die Werte filtern sondern die readings. Wie gesagt Ansichtssache. Vom Skript her kann das auch nicht all zu falsch sein, kommt so auch im DBLog vor, was ja auch bei jeden Event von jeden Device getriggert wird.

Bezüglich des Filters hier mal eine Übersicht meines aktuellen Filters:

readingInclude: \b(temperature|humidity|dewpoint|absoluteHumidity|pct|brightness|rainRate|wind|pressureAbs|Power_.*__kW|DesiredSupplyTemp|OutdoorTemp|Power|PowerModulation|PumpModulation|ReturnTemp|SupplyTemp|WaterDesiredTemp|WaterTemp|ENERGY_Power|SunAlt)\b

readingExclude: TELEMETRY|ASC_ShadingMessage|command


Mein Problem was ich hier habe ist das ich z.B. temperature als include haben will, nicht aber temperaturInside. Deswegen geht ^temperature schonmal nicht. Hab dann ja nach einigem hin- und hertesten herausgefunden das ich in diesem Fall mit \b am Anfang und Ende filtern muss. Dann hatte ich aber das Problem das ich bei meinen Tasmota-Geräten ein reading habe welches SENSOR heißt, in den steht dann folgende Daten:
"Time":"2021-01-27T16:44:42","ENERGY":{"TotalStartTime":"2019-01-22T17:26:26","Total":872.756,"Yesterday":0.003,"Today":0.004,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":233,"Current":0.000}

Da es hier eine Position Namens "Power" gibt schlägt natürlich der include-Filter zu und versucht das reading zu loggen, was natürlich abgeschnitten wird aber am Modul eine dropped_writes Meldung verursacht. In exclude kann ich sie aber nicht setzen sonst gehen die Power-Messwerte der Steckdosen nicht mehr.

Das war deswegen eigentlich der Grund meiner Anpassung nur die readings auszuwerten und nicht die events, lässt sich halt wesentlich besser uns feiner filtern. Die Werte will ich ja nicht filtern, die sollen ja wenn das reading passt geloggt werden.

Wie schon gesagt ist Ansichtssache. Was mich nur wundert das ich da der einzige bin der die Problematik besitzt bzw. die Filter halt so genau setzen will.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

meier81

Hab eben auch nochmal folgendes include probiert, da wird aber gar nichts mehr geloggt:

(temperature|humidity|dewpoint|absoluteHumidity|pct|brightness|rainRate|wind|pressureAbs|Power_.*__kW|DesiredSupplyTemp|OutdoorTemp|Power|PowerModulation|PumpModulation|ReturnTemp|SupplyTemp|WaterDesiredTemp|WaterTemp|ENERGY_Power|SunAlt):.*
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

timmib

#122
Wie oben geschrieben, Pack doch einfach den Doppelpunkt dahinter.

temperature:

meier81

Zitat von: timmib am 27 Januar 2021, 19:52:58
Wie oben geschrieben, Pack doch einfach den Doppelpunkt dahinter.

temperature:

Das funktioniert leider nicht. Wenn ich jetzt nicht irgendwo einen Denkfehler habe weiß ich nicht was ich noch probieren soll.

Hier nochmal meine DEF:

define InfluxDB InfluxDBLogger http://127.0.0.1:8086 fhem Fuehler.*,Rolladen.*,Wetterstation,Strom_Haus,Buderus,Waschmaschine,Trockner,Astro

Habe jetzt das Attribut readingExclude gelöscht und bei readingInclude folgendes probiert:

windDirection:
windDirection:.*


Mein reading in dem Device "Wetterstation" heißt "windDirection" und ändert sich alle 60 Sekunden. Es wird nicht geschrieben, bei keiner der beiden Varianten.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

timmib

Ich vermute du hast beide Varianten probiert und nicht gleichzeitig. Das ist komisch.

Ich gucke nacher nochmal.

meier81

Zitat von: timmib am 27 Januar 2021, 20:29:42
Ich vermute du hast beide Varianten probiert und nicht gleichzeitig. Das ist komisch.

Ich gucke nacher nochmal.

Richtig, beides separat von einander probiert.

Wit gesagt habe hier schon ettliches probiert, hat aber nie wirklich genau mein erwartetes Ergebnis erbracht, das war dann eigentlich auch mit der Hauptgrund warum ich das ja auf reading-Match umgebaut habe.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

timmib

Das mit
test:.*

habe ich heute nochmal hin und her probiert, in meiner Perl Sandbox. (Testtreiber+Modul ohne FHEM)

Hast du im Eventmonitor den Event gesehen in der schreibweise?

meier81

Zitat von: timmib am 27 Januar 2021, 20:39:41
Hast du im Eventmonitor den Event gesehen in der schreibweise?

Gerade frisch geschaut, der Event sieht so aus:

2021-01-27 20:45:29.907 WS980 Wetterstation windDirection: 346

FHEM ist aktuell einschließlich aller Module.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

timmib

Da steht doch wind: und nicht windDirection: !!

meier81

Zitat von: timmib am 27 Januar 2021, 20:46:29
Da steht doch wind: und nicht windDirection: !!

Hab´s eben korrigiert, war in der Zeile verrutscht. Du hast´s zu schnell gelesen  ;)
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

meier81

Zitat von: meier81 am 27 Januar 2021, 20:44:47
Gerade frisch geschaut, der Event sieht so aus:

2021-01-27 20:45:29.907 WS980 Wetterstation windDirection: 346

FHEM ist aktuell einschließlich aller Module.

Das heißt das ist das richtige Event im Eventmonitor. Hatte wie gesagt die falsche Zeile rauskopiert.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

timmib

So, habe es jetzt nochmal in meine FHEM Testinstanz probiert und es klappt mit test:

attr influxEn readingInclude test:

2021-01-27 20:05:48 dummy d3 test: 2
2021-01-27 20:05:51 InfluxDBLogger influxEn failed_writes_last_error: 192.168.178.106: No route to host (113)
2021-01-27 20:05:51 InfluxDBLogger influxEn failed_writes: 2
2021-01-27 20:05:51 InfluxDBLogger influxEn Statistics: t=2 s=0 f=2 e=2
2021-01-27 20:06:27 Global global ATTR influxEn readingInclude test:
2021-01-27 20:06:55 InfluxDBLogger influxEn total_writes: 3
2021-01-27 20:06:55 InfluxDBLogger influxEn total_events: 3
2021-01-27 20:06:55 InfluxDBLogger influxEn Statistics: t=3 s=0 f=2 e=3
2021-01-27 20:06:55 dummy d3 test: 3
2021-01-27 20:06:56 InfluxDBLogger influxEn failed_writes_last_error: 192.168.178.106: No route to host (113)
2021-01-27 20:06:56 InfluxDBLogger influxEn failed_writes: 3
2021-01-27 20:06:56 InfluxDBLogger influxEn Statistics: t=3 s=0 f=3 e=3
2021-01-27 20:11:03 Global global SAVE
2021-01-27 20:12:10 Global global ATTR influxEn readingInclude fest:
2021-01-27 20:12:13 Global global SAVE
2021-01-27 20:12:26 dummy d3 test: 4


Vor dem letzten Eintrag habe ich mal den negativ Test gemacht und entsprechend fehlt der Versuch es zu schreiben.

attr influxEn readingInclude fest:

meier81

Tut mir Leid aber funktioniert nicht. Habe eben meine DEF angepasst und nur ein Device verwendet:
define InfluxDB InfluxDBLogger http://127.0.0.1:8086 fhem Trockner

Das sollte ja hoffentlich so richtig sein, hinten mit dem Trockner, ohne weitere Zeichen.

Mein Trocknerdevice ist so definiert:
define Trockner MQTT2_DEVICE DVES_B1D9CA

Passt also auch soweit. Attribut exclude nicht gesetzt, Attribut include sieht so aus:
attr InfluxDB readingInclude ENERGY_Power:

Eventmonitor enthält mehrfach folgenden Eintrag:
2021-01-27 21:34:32.415 MQTT2_DEVICE Trockner ENERGY_Power: 1

Da ist mein Latein echt am Ende, die Events der Devices funktionieren auch alle richtig, werden ja auch für Schaltungen etc. verwendet. Das Modul ist ja auch richtig definiert. Ich bau das jetzt von dir mit dem dummy 1:1 nach.
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices || mehrere Homematic-IP und Homematic-Devices

meier81

Also ich habe das exakt genauso wie du mit einem dummy mit dem gleichen reading durchgeführt, kein Erfolg. Ohne includ und exclude Definition geht alles, include definiert und nichts wird geloggt.

Jetzt kommt der Hammer: Habe einen reload des Moduls ausgeführt, jetzt geht alles. Ich schmeiß mich weg. Heute Morgen Update durchgeführt, anschließend FHEM neu gestartet. Das Modul mit reload geladen um zu sehen ob die Meldungen weg sind, auch alles okay. Was jetzt bei dem reload anderst war und warum es jetzt geht und vorher nie ging wissen die Götter.

Ich berichte auf jeden Fall weiter.

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

tomleitner

#134
Hallo,

Ich hab gestern von Influxdb 1.8.3 auf 2.0.3 upgegraded. Hat soweit geklappt ( hat etwas gedauert bis ich das Konzept mit dem Token verstanden habe und auch eine database auf ein bucket gemappt habe). 

Problem nun aber: readings die keine reinen Zahlen sind werden nun abgelehnt. Mit Influxdb 1.x hat das geklappt.  Im Anhang ein Screenshot wo man sieht das der String "state T" gedropped wird.

Kann sein das es sich immer um Strings handelt die ein Leerzeichen beinhalten? Vielleicht ist das quoting im Modul nicht richtig gemacht?

Hier noch meine Definition:


defmod InfluxDB InfluxDBLogger http://tominas.fritz.box:8086 fhem USV.*,Sensor_.*,Pool.*,Zisterne.*,\
Multisensor_.*,WohnzimmerTemperature,\
Airpurifier,WohnzimmerHelligkeit,DustSensor,Rasenmaeher,AussenSensor,\
GlashausHeizung,Glashaus_Temperature,TerrasseSued_Temperature,Entfeuchter_.*,\
Waschmaschine,SolarThermie,SolarPumpe,awattar,Alarmanlage
attr InfluxDB api v1
attr InfluxDB conversions true|on|yes=1,false|off|no=0
attr InfluxDB disable 0
attr InfluxDB readingExclude battdate|ip|IPAddress
attr InfluxDB room System
attr InfluxDB security token
attr InfluxDB username tom


Das war vorher nicht der Fall ... was ist zu tun?

Danke // Tom