Neues Modul: 93_InfluxDBLog

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

Vorheriges Thema - Nächstes Thema

wuast94

gibt es eine möglichkeit werte in die datenbank zu schreiben die nicht nur zahlen sind? meine strom messung zb hat das reading "1.37 kWh" oder "   
24.5 W" allerding nimmt er die ja nicht weil es nicht nur zahlen sind.
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

kadettilac89

Zitat von: wuast94 am 22 September 2018, 19:28:44
gibt es eine möglichkeit werte in die datenbank zu schreiben die nicht nur zahlen sind? meine strom messung zb hat das reading "1.37 kWh" oder "   
24.5 W" allerding nimmt er die ja nicht weil es nicht nur zahlen sind.
Möglich, ich habe mir userReadings angelegt und diese dann geloggt. Dann sind es reine zahlen und gut ist ...

beispiel

attr sysmon userReadings wlan0_diff_RX:wlan0_diff.* { my @a = split ' ',ReadingsVal($name,'wlan0_diff',0);;$a[1] },\
wlan0_diff_TX:wlan0_diff.* { my @a = split ' ',ReadingsVal($name,'wlan0_diff',0);;$a[4] }

kadettilac89

#77
Vielleicht kanns jemand gebrauchen

habe mir ein Perl-Script geschrieben um Daten von DbLog nach Influxdb zu migrieren

- MySQL Konfiguration wird aus FHEM genommen
- InfluxDB host, port, user, pw müssen im Script eingetragen (geändert) werden
- InfluxDB, user und pw muss bereits existieren ... wenn das Modul bereits installiert ist - DB, user + pw von der Definition übernehmen
- Log der nicht geschriebenen Sätze wird im Fhem-Logverzeichnis erstellt

Läuft bei mir mit 500.000 Sätzen ca. 1 Stunde. Kann mehrfach ausgeführt werden. Sätze die schon existieren werden von InfluxDB ignoriert

Wenn man die anzahl der verarbeiteten Sätze sehen will Zeile 84 wieder einkommentieren, "      #print "$cnt\n";"   dann sieht man  bei welchem Satz (Nummer) gerade gearbeitet wird.

Läuft mit einem DB-Cursor somit läuft Memory nicht über. Dafür läufts länger.

Wenn man den Select einschränkt kann man auch paketweise arbeiten. Ich lade mir aktuell alle 5 Minuten die Sätze in InfluxDB. Beispielselect ist im Script als Kommentar enthalten.

Nicht-numerische Sätze landen im Fehlerlog, werden nicht migriert

Ansonsten ... läuft, jedoch etwas DB-Wissen vorausgesetzt. Und sichern ... ich bin nicht für Datenverluste verantwortlich :)

Aufruf auf der Console

perl mysql2influx__db_fhem.pm

wuast94

wäre geil wenn das script oder das modul selbst von alleine nicht nummerische werte in nummerische werte umwandeln würde .. dann hat man den stress mit userreadings etc nicht
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

kadettilac89

Zitat von: wuast94 am 25 September 2018, 00:09:24
wäre geil wenn das script oder das modul selbst von alleine nicht nummerische werte in nummerische werte umwandeln würde .. dann hat man den stress mit userreadings etc nicht

die Readings müssen in Fhem behandelt werden, entweder im erzeugenden Modul oder im InfluxDB-Modul. Aber hier auch die Frage ... wie soll das Modul wissen wie du das Reading haben möchtest.

Das Script ist für eine initiale Befüllung gedacht. Mapping ist leicht einzubauen ...


my ($timestamp, $unixts, $device, $reading, $value) = @row;  
#print $timestamp,$device,$reading,$value,"\n";

----> your code here

my $data = "$reading,site_name=$device value=$value $unixts";
#print "data: $data\n";


Wenn du ein Mapping oder Konvertierung willst kannst das an der markierten Stelle machen. in $value ist der Readingwert, kannst du dir an der Stelle entsprechend erweitern.

wuast94

naja in dem moment wo ich ein gerät habe das als reading zb "254 W" hat muss ich dann ja n user reading anlegen das dann n reading mit "254" anlegt und dann ist es quasi doppelt. Also wäre es da sinnvoll wenn das influxdb modul einfach aus "254 W" "254" in die db schreibt. So wie es momentan ist wird es einfach gar nicht geloggt.
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

kadettilac89

Zitat von: wuast94 am 25 September 2018, 11:45:28
naja in dem moment wo ich ein gerät habe das als reading zb "254 W" hat muss ich dann ja n user reading anlegen das dann n reading mit "254" anlegt und dann ist es quasi doppelt. Also wäre es da sinnvoll wenn das influxdb modul einfach aus "254 W" "254" in die db schreibt. So wie es momentan ist wird es einfach gar nicht geloggt.

Steht im Reading oder in state das "254 W"? Hast du DBLog im Einsatz, steht da im Feld "Value" wirklich 254 W? DBLog sollte
Value    254
unit       W
loggen. Wenn nicht ist das ein Thema für das ursprüngliche Modul, nicht für InfluxDB-Modul.

wuast94

im dblog modul ist das getrennt meine ich ja. aber das script würde ich zum einmaligen übertragen nutzen und den rest dann mit influxdb loggen. anstatt beides pöaralell laufen zu lassen und mit dem script immer alles neue übertragen.

deswegen meine ich wäre es sinnvoll wenn das influxdb modul das von sich aus machen würde .. dann könnte ich einfach komplett umsteigen. so muss beides laufen was iwie öde ist
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

kadettilac89

Zitat von: wuast94 am 25 September 2018, 17:43:09
im dblog modul ist das getrennt meine ich ja. aber das script würde ich zum einmaligen übertragen nutzen und den rest dann mit influxdb loggen. anstatt beides pöaralell laufen zu lassen und mit dem script immer alles neue übertragen.

deswegen meine ich wäre es sinnvoll wenn das influxdb modul das von sich aus machen würde .. dann könnte ich einfach komplett umsteigen. so muss beides laufen was iwie öde ist
ich verstehe das problem nicht. wenn es in dblog sauber geloggt wird ist das reading ja numerisch, wieso soll das dann hier nicht funktionieren? hast du es getestet und die werte fehlen?

wuast94

kann es sein das das modul ohne dblogging nicht funktioniert ? hatte alles eingerichtet und funktionerte auch alles und seid dem ich dblog gelöscht habe wird nichts mehr in die influx db geschrieben.

state ist activ.
verbose auf 5 und im log geguckt aber da steht nur:
2018.10.03 22:38:17 4 : Influxdblog: Log
2018.10.03 22:38:17 4 : Influxdblog: 73
2018.10.03 22:38:17 4 : Influxdblog: Log End
Zigbee  Temp+Luftdruck+Humi Bewegungsmeldern Tür Kontakte, Klingel, TV, Denon, Schaltbare Steckdosen mit leistungsmessung, und weiteres

Homeassistant mit Nodered

Patrick85

Hallo wuast94,
bei mir funktioniert das Modul auch ohne dblog. Ich habe alle dblog Einstellungen nach der Umstellung auf influxdb komplett aus der Konfiguration entfernt.

Dave90

#86
Hallo,
zunächst vielen Dank für das Modul. :)
Habe Grafana und die Influxdb aufgesetzt und fhem schreibt auch direkt fleißig Werte, welche ich mit Grafana auslesen kann.
Leider habe ich aber trotzdem ein Problem:
Fhem schreibt jedes reading als ein measurement. Das bedeutet bspw. bei mehreren Temperatursensoren habe ich nur einmal das measurement "temperature" auf das alle Sensoren schreiben. Wie habt ihr das gelöst? ;)

Edit: Ok kann über das site_name im query gelöst werden. Hat sich erledigt ;)

Danke und viele Grüße
David
Hardware:  FHEM-& LMS-Server + NAS: Banana Pi; Hyperion Ambilight Server + anderer Kleinkram: RPI Model B; Lampen: Philips Hue + Milight; Homematic Heizungssteuerung; Entertainment: Harmony Hub
sonstiges: Funksteckdosen

highball

Hallo zusammen,

erstmal vielen Dank für das influxdb Modul  :), ich habe jetzt soweit alles zusammen mit Grafana am laufen... Aber jetzt zu meiner Frage: Ich würde nun gerne meine FritzBox einbinden, dabei aber nur wenige definierte readings in die influxdb schreiben: box_powerRate, box_rateDown, box_rateUp box_wlanCount

Beim "normalen" DbLog würde ich nun: "attr FritzBox DbLogInclude  box_powerRate,box_rateDown,box_rateUp,box_wlanCount"

Funktioniert das dann auch mit "InfluxDbLog", also "attr FritzBox InfluxDbLogInclude  box_powerRate,box_rateDown,box_rateUp,box_wlanCount" oder muss ich hier dann DbLogInclude nutzen? Irgendwie bekomme ich das nicht so hin wie ich gerne würde  ;)

Vielen Dank und viele Grüße
Jens

plin

Hi,

ich habe das Modul seit einigen Monaten im Einsatz. Ich habe beobachtet, dass sich die FHEM-GUI aufhängt wenn die Influx-DB nicht zu erreichen ist. Hat jemand anders auch schon die Erfahrung gemacht?

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

kadettilac89

Zitat von: plin am 21 Januar 2019, 18:18:08
Hi,

ich habe das Modul seit einigen Monaten im Einsatz. Ich habe beobachtet, dass sich die FHEM-GUI aufhängt wenn die Influx-DB nicht zu erreichen ist. Hat jemand anders auch schon die Erfahrung gemacht?

VG plin

https://forum.fhem.de/index.php/topic,71551.msg837607.html#msg837607

Zitat von: kadettilac89 am 19 September 2018, 09:22:44


Im DBLog ist das von DS_Starter gut gelöst, da wird asynchron geschrieben - per Attribut aktivierbar. Wenn die DB kurzzeitig nicht erreichbar ist läuft FHEM seelenruhig weiter.

bekannt aber ist halt nicht asynchron.