Neues Modul: 93_InfluxDBLog

Begonnen von d.schoen, 05 Mai 2017, 11:52:12

Vorheriges Thema - Nächstes Thema

plin

#120
Zitat von: MarkusN am 31 Januar 2019, 14:23:02
Funktioniert das so bei dir?
Hat es mal. Jetzt aber nicht mehr. Schaue ich mir am Wochenende an.

Update: Tja, knapp daneben ist auch daneben.

diff 93_InfluxDBLog.pm 93_InfluxDBLog.pm.orig
114,121c114
<   my $value = $arr[1];
<   $value = 1   if ( lc $value eq "on");               # state on
<   $value = 0   if ( lc $value eq "off");      # state off
<   $value = 1   if ( lc $value eq "open");     # contact open
<   $value = 0   if ( lc $value eq "closed");   # contact closed
<   return if ! ( $value =~ /^[0-9,.E]+$/ );
<
<   my $data = "$arr[0],site_name=$NAME value=$value";
---
>   my $data = "$arr[0],site_name=$NAME value=$arr[1]";

Die Numerisch-Prüfung sollte nicht vor der Substitution durchgeführt werden.

In Grafana sollte dann
    FROM default state WHERE site_name = <devicename>
mit
    SELECT field(value) distinct()
ausgewählt werden. Dann gibt's auch was zu sehen.

VG plin
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

ChrisW

also das mit dem Modul SQL in Influxdb will einfach nicht so recht. Es funktioniert zwar aber irgendwie viel zu langsam ..
Habe nun schon einestellt check letzte 15 Minuten und lasse es alle 10 Minuten von Fhem ausführen.
Gerade geguckt seit gestern abend habe ich aktuell 6 offene Prozesse mit dem script :(

Ich kann mir nur vorstellen das das Filtern der nicht "zahlen" werte so lange dauert da ich in die sql relativ viel anderes noch speicher ??!!
Raspberry PI3 mit allem möglichen.

kadettilac89

Zitat von: ChrisW am 08 Februar 2019, 08:16:13
also das mit dem Modul SQL in Influxdb will einfach nicht so recht. Es funktioniert zwar aber irgendwie viel zu langsam ..
Habe nun schon einestellt check letzte 15 Minuten und lasse es alle 10 Minuten von Fhem ausführen.
Gerade geguckt seit gestern abend habe ich aktuell 6 offene Prozesse mit dem script :(

Ich kann mir nur vorstellen das das Filtern der nicht "zahlen" werte so lange dauert da ich in die sql relativ viel anderes noch speicher ??!!
Kann ich nicht sagen. Ich habe reine zahlenwerte und es hängt nichts. Dann musst du wohl oder übel dein Setup auf influx optimieren.

ChrisW

ja ich will das mit dem 2. Fhem vermeiden.

Schade das man im Device nicht sowas wie incinflux excinflux setzen kann
Raspberry PI3 mit allem möglichen.

kadettilac89

Global kannst du das setzen was du loggen willst.

ChrisW

#125
ja aber da muss ich das alles Manuell exakt angeben :( Würde es gerne per Device steuern. Quasi wie beim dblog

Und wie kann ich da bei influx etwas Optimieren ? Das script zum sql zu influx ist einfach zu langsam :( sehe das im Prozess das es teilweise 6-7 mal immer gleichzeitig offen ist. In Grafana hab ich dadurch oft auch ausfälle das einiges nicht mit kommt. Aktuell musste ich fhem ganz neu starten weil zu viel offen war. Grafana hing schon 3 Stunden zurück.
Raspberry PI3 mit allem möglichen.

kadettilac89



Zitat von: ChrisW am 15 Februar 2019, 13:13:22
Und wie kann ich da bei influx etwas Optimieren ? Das script zum sql zu influx ist einfach zu langsam

Das mag für dein setup so sein. Über welche Datenmenge reden wir hier?wie viele Sätze willst du übertragen? Laufzeit war bei mir für 10 Minuten Delta im unteren einstelligen sekundenbereich.


Andreasgs

Hallo Zusammen,

Habe grade mit erschrecken festgestellt, dass es by design nicht möglich ist, dass das InfluxDBLog Modul stings in die Datenbank schreibt. Den fehler hab ich jetzt seit 2 Monaten gesucht.

So wie ich den Thread verstehe, wirds wohl dahingehend keine Besserung geben, und wenn ich in Grafana Strings anzeigen lassen will, (z.B. "Regen?" - "Ja"/"Nein") komme ich an einer zweiten Datenbank wie SQL nicht rum. Ist der Status mittlerweile anders?

>:( Die hatte ich schon in Nutzung, und habs dann zugunsten der InfluxDB totgelegt.

Grüße,
Andreas

plin

Hallo Andreas,

sieh Dir meinen Post weiter oben vom 31 Januar 2019, 14:23:02an.

Ich habe durch Anpassung des Modules aus den üblichen Strings wie on/off, open/closed jeweils Zahlen gemacht. Die Zahlen lassen sich in Grafana dann wieder als Text ausgeben.

VG plin
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

volschin

Zitat von: Andreasgs am 18 August 2019, 00:19:58
Habe grade mit erschrecken festgestellt, dass es by design nicht möglich ist, dass das InfluxDBLog Modul stings in die Datenbank schreibt.
Das ist weniger Problem des Moduls, als Design der InfluxDB als Timeseries Datenbank für Messwerte.
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)

plin

#130
Hi,

ich war so frei und habe das Modul 93_InfluxDBLog.pm um zwei weitere Attribute ergänzt:

regexp_0: regular expression für strings die auf '0' zu setzen sind, z.B. '(off|closed|battery low)'
regexp_1: regular expression für strings die auf '1' zu setzen sind, z.B. '(on|open|battery ok)'

Alle nicht-numerischen Werte werden übersprungen, erzeugen also keinen Datenbankfehler beim Schreiben.

VG plin
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

W_Esch

Das Schreiben von negativen Werten funktioniert, wenn man in der Zeile vor dem log "Writing data" -->  return if ! ( $value =~ /^[0-9,.E]+$/ ); nach dem E noch ein Minuszeichen setzt. Habe ich heute getestet, nachdem die ersten Minustemperaturen nicht in die InfluxDB geschrieben wurden.
FHEM, Viessmann 300, SMA inverter, Zaehler über OBIS, DeltaSol über VBUS, Bayrol SaltRelax über httpmod, MQTT, Firmata, Homematic, MAX, FS20, Gardena smart Bewässerung, OneWire, SONOS, InfluxDB, GRAFANA, alles integriert und alles auf Docker

kadettilac89

Zitat von: W_Esch am 05 Dezember 2019, 16:03:37
Das Schreiben von negativen Werten funktioniert, wenn man in der Zeile vor dem log "Writing data" -->  return if ! ( $value =~ /^[0-9,.E]+$/ ); nach dem E noch ein Minuszeichen setzt. Habe ich heute getestet, nachdem die ersten Minustemperaturen nicht in die InfluxDB geschrieben wurden.

Negative Werte werden beim mir seit Beginn korrekt geschrieben. Das Problem hatte hier schon mal jemand nachdem er das Modul um Status 0/1 oder ähnlich erweitert hatte.

pitre

Es wurde ja schon ein paar Mal gefragt, aber Antwort konnte ich keine finden.
Ist es möglich Daten aus Influxdb nach FHEM zu laden? Hintergrund: ich habe Daten, die nur in influxdb liegen und die ich über andere Wege auch nicht erhalten kann (kleiner Arduino schickt direkt an influx (und macht einiges anderes) und der Sourcecode ist weg). In FHEM bräuchte ich jetzt genau diese Daten für eine Steuerung.

kadettilac89

Zitat von: pitre am 21 Dezember 2019, 15:11:11
Es wurde ja schon ein paar Mal gefragt, aber Antwort konnte ich keine finden.
Ist es möglich Daten aus Influxdb nach FHEM zu laden? Hintergrund: ich habe Daten, die nur in influxdb liegen und die ich über andere Wege auch nicht erhalten kann (kleiner Arduino schickt direkt an influx (und macht einiges anderes) und der Sourcecode ist weg). In FHEM bräuchte ich jetzt genau diese Daten für eine Steuerung.

Mehr Informationen wenn du mehr Input lieferst. Was bedeutet "nach FHEM laden?". Willst du in MySQL laden und in Fhem DBLog nutzen? Wenn ja ... was Fertiges wirst du hier nicht finden da die DB-Strukturen zu unterschiedlich sind.

Möglicher Weg wenn du ein bischen IT-Background hast
1) lade dir einen INfluxdb Editor / Client runter. z. B. InfluxDB Studio und exportiere die Werte in CSV
2) Bearbeite die Daten in Excel o. ä.
3) Lade die CSV in PhpMyadmin oder Console in MySQL

Vorgehen abhängig von Datenstruktur und Menge vielleicht nicht anwendbar bzw. in Paketen.

Ich habe hier mal die umgekehrte Richtung befüllt .... wenn du Perl kannst könntest du dir auch sowas basteln.
https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940