Neues Modul InfluxDBLogger

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

Vorheriges Thema - Nächstes Thema

Tazz

Hallo

Ich benutze den sysmon, um von Raspberry u.a. die RAM Auslastung zu ermitteln.
Jetzt übertragt dieser aber die RAM Auslastung ungünstig per Reading als großen String:
Zitat2021-05-13 19:39:06 SYSMON sysmon ram: Total: 926.08 MB, Used: 368.40 MB, 39.78 %, Free: 144.43 MB

Ich möchte aber einzeln ram_total, ram_used und ram_free in die InfluxDB v2 schicken und dies für site_name = raspberry

Mit meiner Definiton wird gar nichts übertragen
Zitatdropped_writes_last_message sysmon ram Total
state Statistics: t=0 s=0 f=0 e=0
Die Verbindung zur InfluxDB2 funktioniert aber.

Was mache ich falsch?

defmod influxdb2_sysmon_ram_total InfluxDBLogger http://192.168.1.118:8086 fhem sysmon
attr influxdb2_sysmon_ram_total api v2
attr influxdb2_sysmon_ram_total measurement ram_total
attr influxdb2_sysmon_ram_total conversions Total:\s?([0-9]*[.]?[0-9]+)=$1
attr influxdb2_sysmon_ram_total readingInclude ram.*
attr influxdb2_sysmon_ram_total tags raspberry



choenig

Hi,

ich habe gerade angefangen, den InfluxDBLogger zu verwenden, und dann beim rename ein FHEM-Crash :(

Undefined subroutine &main::InfluxDBLogger_ReadPassword called at ./FHEM/93_InfluxDBLogger.pm line 557.

Ein rename scheint nicht so häufig vorzukommen ;)

LG
Christian

macfly

Zitat von: choenig am 24 Juni 2021, 13:39:22
Hi,

ich habe gerade angefangen, den InfluxDBLogger zu verwenden, und dann beim rename ein FHEM-Crash :(

Undefined subroutine &main::InfluxDBLogger_ReadPassword called at ./FHEM/93_InfluxDBLogger.pm line 557.

Ein rename scheint nicht so häufig vorzukommen ;)

LG
Christian

Lustig, ist mir genau heute auch passiert. Ich habe dann einfach fhem gestoppt und in der fhem.cfg und fhem.save das Device umbenannt ;-)


tamash

Hallo!

Ich habe eine grundlegende Frage zur Benutzung des Moduls!
Definiert ihr in der Regel ein InfluxDBLogger-Device für jedes Device das ihr logen wollt oder ein InfluxDBLogger-Device für alle Devices?

Meine Frage ergibt sich aus folgender Problematik die vielleicht einem Verständnisproblem meinerseits zu Grunde liegt.
2 Devices:
  - Lichtschalter01
  - Lichtdimmer01

Ich will vom Device 'Lichtschalter01' nur das Reading 'state' logen und vom Device 'Lichtdimmer01' nur das Reading 'pct' loggen.
Sofern ich das richtig versteh lässt sich das mit nur einem InfluxDBLogger-Device nicht realisieren, oder?

LG
Tom

meier81

Hallo Tom,

bezüglich deiner Frage fürchte ich wirst du wohl 2 Influx-Devices benötigen, falls du nicht damit leben kannst dann z.B. vom Lichtdimmer01 auch den "state" mitzuloggen.

Also ich habe bei mir 5 Influx-Devices am laufen, damit kann man halt auch in influx die Daten etwas "sortiert" ablegen.

Ich habe z.B. eine für meine Raumsensoren, eine für die Heizung, eine für Energiezähler, eine für das Wetter und eine allgemeine. Um die Größe der Datenbank brauchst du dir auch erstmal keine großen Gedanken zu machen, ich habe glaube ich von knapp über 3 Jahren Daten drin und bin aktuell bei einer Größe von ca. 75 MB.

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

tamash

Hi!

Vielen Dank für deine ausführliche Antwort.
Hab ich also doch nicht irgendwas falsch verstanden.
Dann werde ich das wohl so umbauen bei mir.

Danke nochmals.
LG
Tom

rob

Hallo.

Kurze Info zur commandref vom Modul: Unter hier/here scheint sich im Link ein "fhem/docs/" zuviel eingeschlichen zu haben.
ZitatFor details about devspec see here. If you use a wildcard devspec, the device will be disabled on default in order to let you specify a readings-regex to reduce the log-amount.

Aus https://fhem.de/fhem/docs/commandref.html#devspec müsste ein https://fhem.de/commandref.html#devspec werden
bzw. lokal aus http://localhost:8083/fhem/docs/fhem/docs/commandref_DE.html#devspec ein http://localhost:8083/fhem/docs/commandref_DE.html#devspec

Nix wildes/ eiliges. Wollt es nur rückmelden :)

Viele Grüße
rob

rob

Hallo Leute.

Jetzt muss ich leider doch mit Fragen nerven. Ich habe gestern den Tag rumprobiert und kam vom Hölzchen aufs Stöckchen.
Habe Influx 1.8.10 via Docker gestartet, bekam in Fhem aber keinen Zugriff. egal, ob mit oder ohne auth.

2021.10.13 11:35:31 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found

Also bin ich auf V2 gewechselt. Das Mappen der Buckets wie laut Link (https://forum.fhem.de/index.php/topic,114860.msg1108143.html#msg1108143) angegeben klappte aber nicht, weil man im Cli-Command auch org angeben muss. Und das klappte wieder nicht, weil man zuvor eine aktive Config setzen muss usw. etc. pp.

Naja, habe es letztlich geschafft. Fhem hatte dann Zugriff und schrieb fleißig Werte. Also wollte ich mit Grafana testweise einen Graphen erstellen. Hatte dann mit Grafana zunächst keinen Zugriff auf die V2 (V1 war easy). Erst mit Custom HEAD klappte das.

Die von Fhem geschriebenen Werte konnte ich nur leider nicht finden. Manuell via Curl geschriebene Werte konnte ich sehen, aber nix von Fhem. Dann habe ich es gestern Abend ersteinmal aufgegeben.
Offensichtl. habe ich Fehler begangen und/ oder mir fehlten noch Schritte  :o




jetzt versuche ich es noch einmal von vorn:
- Docker Testinstanz InfluxDB 1.8.2

docker run -d \
   --rm \
   --name=influxdb \
   --net=testnet \
   --network-alias myinfluxdb \
   -p 8086:8086 \
   -v ~/docker/influxdb:/var/lib/influxdb \
   -v /etc/localtime:/etc/localtime:ro \
   -v /etc/timezone:/etc/timezone:ro \
   -e INFLUXDB_DB=hupe \
   -e INFLUXDB_ADMIN_USER=admin \
   -e INFLUXDB_ADMIN_PASSWORD=hupe \
   -e INFLUXDB_USER=hupe \
   -e INFLUXDB_USER_PASSWORD=hupe \
   influxdb:1.8.2


- Defintion in Fhem (list -r)

define myTestInflux InfluxDBLogger http://192.168.1.160:8086/ hupe DS18B20.*,WH1080
attr myTestInflux api v1
attr myTestInflux conversions open=1,closed=0,tilted=2,true|on|yes|ok=1,false|off|no|low=0
attr myTestInflux org hupe
attr myTestInflux readingExclude state
attr myTestInflux room 66_Experimente
attr myTestInflux security basic_auth
attr myTestInflux username hupe

setstate myTestInflux Statistics: t=6 s=0 f=6 e=37
setstate myTestInflux 2021-10-14 08:10:06 dropped_writes 8
setstate myTestInflux 2021-10-14 08:10:06 dropped_writes_last_message WH1080 battery ok
setstate myTestInflux 2021-10-14 08:10:52 failed_writes 6
setstate myTestInflux 2021-10-14 08:10:52 failed_writes_last_error 404 Not Found
setstate myTestInflux 2021-10-14 08:10:52 state Statistics: t=6 s=0 f=6 e=37
setstate myTestInflux 2021-10-14 08:09:15 succeeded_writes 0
setstate myTestInflux 2021-10-14 08:10:52 total_events 37
setstate myTestInflux 2021-10-14 08:10:52 total_writes 6


- Log sagt:

2021.10.14 08:09:11 3: InfluxDBLogger: [myTestInflux] defined with server http://192.168.1.160:8086/ database hupe notifydev DS18B20.*,WH1080
2021.10.14 08:09:17 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found
2021.10.14 08:09:52 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found
2021.10.14 08:10:06 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found
2021.10.14 08:10:06 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found
2021.10.14 08:10:16 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found
2021.10.14 08:10:52 1: InfluxDBLogger: [myTestInflux] Error = 404 Not Found


- Schreiben via curl klappt:

curl -i -XPOST 'http://192.168.1.160:8086/write?db=hupe' --data-binary 'waffel value=123'
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 1635fb13-2cb4-11ec-8001-0242ac120002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.2
X-Request-Id: 1635fb13-2cb4-11ec-8001-0242ac120002
Date: Thu, 14 Oct 2021 06:00:52 GMT

- mit Grafana kann ich zugreifen und diesen Wert auch sehen

Hat jmd. eine Idee, wo mein Lapsus liegt? Muss ich an Influx noch irgendwas vorbereiten/ einstellen? Soll ich ggf. doch wieder mit V2 weiter machen?

Vielen Dank und beste Grüße
rob


netpirat

Hallo,

ich versuche gerade meine Temperaturwerte die über das Modul KNX kommen in die Datenbank zu speisen. Ich bekomme immer

unable to parse 'TMP_BU_Temperatur,site_name=TMP_BU_Temperatur getG1=20.00,last-sender=1.1.2,state=20.00': invalid number

Ich befürchte es liegt am 1.1.2. Jemand ne Idee wie man das wegbekommt? ICh bein Neuling, das installieren hat gut geklappt aber hier komme ich nicht weiter.


Readings
dropped_writes

8560

2021-11-02 19:52:16
dropped_writes_last_message

TMP_GA_Temperatur state 13.10 °C

2021-11-02 19:52:16
failed_writes

2779

2021-11-02 19:52:17
failed_writes_last_error

unable to parse 'TMP_BU_Temperatur,site_name=TMP_BU_Temperatur getG1=20.00,last-sender=1.1.2,state=20.00': invalid number

2021-11-02 19:52:17
state

Statistics: t=2779 s=0 f=2779 e=2843

2021-11-02 19:52:17
succeeded_writes

0

2021-11-01 21:53:36
total_events

2843

2021-11-02 19:52:17
total_writes

2779

2021-11-02 19:52:17

kadettilac89

Zitat von: netpirat am 02 November 2021, 19:54:38
Hallo,

ich versuche gerade meine Temperaturwerte die über das Modul KNX kommen in die Datenbank zu speisen. Ich bekomme immer

unable to parse 'TMP_BU_Temperatur,site_name=TMP_BU_Temperatur getG1=20.00,last-sender=1.1.2,state=20.00': invalid number

Ich befürchte es liegt am 1.1.2. Jemand ne Idee wie man das wegbekommt? ICh bein Neuling, das installieren hat gut geklappt aber hier komme ich nicht weiter.


Readings
dropped_writes

8560

2021-11-02 19:52:16
dropped_writes_last_message

TMP_GA_Temperatur state 13.10 °C

2021-11-02 19:52:16
failed_writes

2779

2021-11-02 19:52:17
failed_writes_last_error

unable to parse 'TMP_BU_Temperatur,site_name=TMP_BU_Temperatur getG1=20.00,last-sender=1.1.2,state=20.00': invalid number

2021-11-02 19:52:17
state

Statistics: t=2779 s=0 f=2779 e=2843

2021-11-02 19:52:17
succeeded_writes

0

2021-11-01 21:53:36
total_events

2843

2021-11-02 19:52:17
total_writes

2779

2021-11-02 19:52:17


Zeig mal ein List von der InfluxDB definition und vom Device das du loggen willst. Ist "last-sender=1.1.2" ein Reading? Gehen andere Devices, oder wird überhaupt nichts geloggt?

netpirat

Hallo kadettilac89,

erstmal danke für deine Hillfe.

Hier mein InfluxDBLogger


Internals
DATABASE

TEMPERATUREN
DEF
http://192.168.254.25:8086 TEMPERATUREN TMP.*
FUUID

61804aaa-f33f-3e4f-1fd1-5f50c0e48f5848ff
NAME

INF_TEMPERATUREN
NOTIFYDEV

TMP.*
NR

460
NTFY_ORDER

50-INF_TEMPERATUREN
STATE

Statistics: t=3008 s=0 f=3008 e=3158
TYPE

InfluxDBLogger
URL

http://192.168.254.25:8086




Attributes
disable

0


room

901 Logging



Readings
dropped_writes

24970

2021-11-03 16:36:42
dropped_writes_last_message

TMP_AU_Temperatur last-sender fhem

2021-11-03 16:36:42
failed_writes

5457

2021-11-03 16:36:42
failed_writes_last_error

unable to parse 'last-sender,site_name=TMP_KI_Temperatur value=1.1.54': invalid number

2021-11-03 16:36:42
state

Statistics: t=5457 s=0 f=5457 e=5607

2021-11-03 16:36:42
succeeded_writes

0

2021-11-01 21:53:36
total_events

5607

2021-11-03 16:36:42
total_writes

5457

2021-11-03 16:36:42


Und nun  das Device

DeviceOverview
Temperatur Buero

19.70
TMP_BU_Temperatur
TMP_BU_Temperatur
Internals
DEF
6/0/6:dpt9
DEVNAME

TMP_BU_Temperatur
FIRSTGADNAME

g1
FUUID

603dedcb-f33f-887b-9171-1cab7829111fe2d5
GETSTRING

g1:noArg
IODev

KNX
KNX_MSGCNT

235
KNX_RAWMSG

C01138w0600607b2
KNX_TIME

2021-11-03 15:46:39
LASTInputDev

KNX
MSGCNT

235
NAME

TMP_BU_Temperatur
NR

295
SETSTRING

g1:slider,-274,6710,670760
STATE

19.70 °C
TYPE

KNX
model

dpt9
Readings
IODev

KNX

2021-11-02 20:44:35
getG1

19.70

2021-11-03 16:42:36
last-sender

1.1.56

2021-11-03 16:42:36
state

19.70

2021-11-03 16:42:36
TMP_BU_Temperatur
Attributes
IODev

KNX

deleteattr
alias

Temperatur Buero

deleteattr
group

Temperatur

deleteattr
room

007 Buero,805 Temperatur

deleteattr


Das last sender ist gleich die Physikalische Adresse des senders des Telegramms vom KNX Bus.

Ich habe mal eine Abfrage über alles gemacht. Einstellungen sind passend. Readings und Noifys gehen teilweise durch aber nicht direkt vom Device also eine Abfrage direkt von der Hardware, zum Beispiel einem Glastaster.



Internals
DATABASE

DBSYSTA
DEF
http://192.168.254.25:8086 DBSYSTA .*
FUUID

618048c3-f33f-3e4f-fb7b-b562dd8cf1461583
NAME

DB_Log
NOTIFYDEV

.*
NR

459
NTFY_ORDER

50-DB_Log
STATE

Statistics: t=47657 s=43853 f=3804 e=47693
TYPE

InfluxDBLogger
URL

http://192.168.254.25:8086


Am Ende tippe ich darauf, dass die Zeile die in die Datenbank geschrieben wird entsprechend "aufbereitet" werden muss. Mir ist aber noch nicht ganz klar mit welchen tools ich das machen kann.

kadettilac89

Zitat von: netpirat am 03 November 2021, 16:55:19
Hallo kadettilac89,

erstmal danke für deine Hillfe.

Hier mein InfluxDBLogger

Das last sender ist gleich die Physikalische Adresse des senders des Telegramms vom KNX Bus.

Ich habe mal eine Abfrage über alles gemacht. Einstellungen sind passend. Readings und Noifys gehen teilweise durch aber nicht direkt vom Device also eine Abfrage direkt von der Hardware, zum Beispiel einem Glastaster.


Am Ende tippe ich darauf, dass die Zeile die in die Datenbank geschrieben wird entsprechend "aufbereitet" werden muss. Mir ist aber noch nicht ganz klar mit welchen tools ich das machen kann.

Ich gehe davon aus, dass du nur die Temperatur loggen willst. Du flutest aktuell die Datenbank mit allen Readings, egal ob die Sinn machen oder nicht.

Du hast 2 Möglichkeiten. Entweder du gibts bei der Definition des Loggingdevices (Die InfluxDB) den Filter an oder du machst das per "event-on-change reading". Dann werden nur die entsprechenden Readings, in dem FAll die Temperatur geschickt und geloggt.

Deine Def., hier schränkst du auf alles ein, was mit TMP beginnt.

http://192.168.254.25:8086 TEMPERATUREN TMP.*


Hier mal meine Def. mit etlichen Readings. Ich logge per Readingnamen. z. B. XHR, actuator. Egal wie das Device heißt.

   DEF        influxdb 8086 fhem <<<password>>>  .*:(XHR|actuator|desired-temp|measured-temp|download|upload|ping|presence|pressure|brightness|temperature|humidity|wind_speed|wind_direction|batVoltage|DbFileSize|location_real|light|twilight|twilight_weather|countHistory|door|Super_E5|Diesel|active_zone|box_rateDown_kbit|box_rateUp_kbit|todayR|todayS).*
   FH


Generell würde ich auch die Events filtern. Im Beispiel unten wird nur ein Event geschickt wenn der Wert geändert wird. Beispiel eines meiner Temperatursensoren mit mehreren Readings

attr HMTempSensor4 event-on-change-reading humidity,temperature,battery,batVoltage,brightness


Für event-on-change-reading - Fhem Doku, da sind genügend Beispiele. Definition der InfluxDB-Def ist auch in der Doku was drin.

netpirat

Hallo,

das genau war die Lösung. Ich habe das event-on-change-reading auf state gesetzt. Dann habe ich unter KNX nur noch den Wert bekommen. Dieser ist dann so durchgeflutscht. Ohne einen einzigen Fehler seit gestern Abend. Zudem habe ich noch die Tags Room=XXX,Art=XXX,Bezeichnung=XXXX angelegt. Nun kann ich das in Grafana einfacher zuordnen.

Ich habe mal in der Commandref geschaut. SOweit ich das Beurteilen kann, kann man leider nicht für das Reading den "Room" mitnehmen. So muss man wohl für jeden Raum eine Abfrage separat machen.

Oder kennt da jemand eine eleganterer Lösung?

Vielen Dank an kadettilac89.  Als Laie ist man oft unsicher ob man den richtigen weg geht. Wenn man weiß wo man ansetzen muss ist es dann ganz leicht. Als nächstes Versuche ich mal Modbus zu protokollieren. Meine Erfahrungen mit KNX werde ich versuchen im Winter mal in eine Art Doku zu verfassen, damit möglichst viele hier im Forum daran teilhaben können.

Und last but not least, Danke an Tim für dieses coole Modul! Er war lange nicht Online aber ich hoffe er kommt uns bald wieder besuchen. Wir brauchen so kluge Köpfe! Danke Euch!

kadettilac89

Zitat von: netpirat am 04 November 2021, 19:03:47
Ich habe mal in der Commandref geschaut. SOweit ich das Beurteilen kann, kann man leider nicht für das Reading den "Room" mitnehmen. So muss man wohl für jeden Raum eine Abfrage separat machen.


was willst du erreichen? Ein Reading mit dem Attribut "Room"? Vertauscht du die Begriffe ... Fhem Attribut, Internal, Reading .. Influxdb Tag, Measurement ...? Wie soll das Reading aussehen. Zauberwort vermutlich userreadings.

rob

OK, habe meine Probleme gelöst bekommen und bin nun auf Influx V1 unterwegs. Werte kommen an.

Frage in die Runde: Was habt Ihr sinnvollerweise für RP's und CQ's auf den Datenbanken eingerichtet. Oder macht Ihr ggf. gar kein Downsampling?

Vielen Dank und beste Grüße
rob