Autor Thema: Neues Modul: 93_InfluxDBLog  (Gelesen 43786 mal)

Online kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1474
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #150 am: 09 Oktober 2020, 13:48:30 »
Ich würde vorschlagen in dem neuen Thread weiter zu schreiben.
Da habe ich keine Schreibrechte, kann also nicht antworten


Mit der Definition von devspec und Regex-Parameter komme ich nicht zurecht. Vielleicht auch weil ich DBLog schon kenne. Dir überlassen ... aber macht es vielleicht Sinn, das genau so zu übernehmen wie in DBLog? Die meisten werden entweder von DBLog kommen, oder es sogar parallel einsetzen.

Laut Developer Dokumentation ist es besser für die Performance beim Regisitieren auf Events NOTIFYDEV/notifyRegexpChanged zu nutzen. Ich persönlich find es auch einfacher erst auf Geräte und im zweiten Schritt auf Readings zu filten.
Ich schaue mir aber mal die anderen Logger als Inspiration an.
OK, andere Baustelle ... wie gesagt, dein Modul. Anders muss nicht schlecht sein.

Ich habe nun mal eine devspec angehängt ... es wird alles geloggt, devspec wird ignoriert
http://influxdb:8086 fhemtest InfluxDbLog=1

Ich sehe im Code aber auch keinen Aufruf von "devspec2array". Wo arbeitest du die devspec ab?

Edit:

ich habe mir mal quick'n'dirty devspec eingebaut ... mal schaun obs dann läuft
my $devName = $dev_hash->{NAME}; # Device that created the events
my $events = deviceEvents($dev_hash, 1);

my @list = devspec2array($own_hash->{REGEX});   #<<<<<<<<<<<<----------------------
return "" if not grep { $_ eq $devName } @list;     #<<<<<<<<<<<<<<<<<<-------------------

    return "" if($devName eq "global" && grep(m/^INITIALIZED|REREADCFG$/, @{$events}));
    return "" if($own_hash->{TYPE} eq $dev_hash->{TYPE}); # avoid endless loops from logger to logger
« Letzte Änderung: 09 Oktober 2020, 19:29:40 von kadettilac89 »

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #151 am: 10 Oktober 2020, 19:49:19 »
Ich habe mir das DbLog_Modul angesehen. Meine Meinung zu Thema befindet sich im Thread vom neuen Modul.
https://forum.fhem.de/index.php/topic,114860.0.html

Online kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1474
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #152 am: 11 Oktober 2020, 11:03:29 »
Ich habe mir das DbLog_Modul angesehen. Meine Meinung zu Thema befindet sich im Thread vom neuen Modul.
https://forum.fhem.de/index.php/topic,114860.0.html
Bitte schiebe den Post in ein forum in dem auch nicht-developer schreibrechte haben

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #153 am: 12 Oktober 2020, 19:30:31 »
Zitat
Bitte schiebe den Post in ein forum in dem auch nicht-developer schreibrechte haben

Hm, ich dachte man soll das so machen. Ich schieb ihn mal hierhin, bis ein Moderator sich anderweitig äussert.

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #154 am: 12 Oktober 2020, 19:34:08 »
Zitat
Ich sehe im Code aber auch keinen Aufruf von "devspec2array". Wo arbeitest du die devspec ab?

InternalTimer(0, sub(){  notifyRegexpChanged($hash, $hash->{REGEX}); }, $hash);
Passiert dann automatisch.
« Letzte Änderung: 12 Oktober 2020, 19:38:28 von timmib »

Online kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1474
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #155 am: 12 Oktober 2020, 20:53:37 »
InternalTimer(0, sub(){  notifyRegexpChanged($hash, $hash->{REGEX}); }, $hash);
Passiert dann automatisch.
Die Funktion löst keine devspec auf die du in der Doku verweist. Damit kannst du nur Regex auf devicenamen absetzen. Devspec ist viel mehr und würde, wenn eingebaut, auch Mehrwert bieten.

notifyRegexpChanged
Diese Funktion kann nur verwendet werden, wenn $event_regexp auf <Definitionsnamen> bzw. <Definitionsnamen>:<Event> matcht (Event Regexp-Syntax aus notify).

devspec löst du mit devspec2array auf.

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #156 am: 12 Oktober 2020, 21:17:50 »
Also bei mir funktioniert das wunderbar - dachte ich bis grade,

Wenn ich z.B. Harry als devspec am Ende vom define angebe habe ich automatisch ein NOTIFYDEV mit dem Wert Harry und bekommen auch nur noch Ereignisse von Harry gemeldet.

Ich sehe grad beim meinem a,b,c Beispiel setzt der das NOTIFYDEV nicht. Laut https://wiki.fhem.de/wiki/DevelopmentModuleAPI#notifyRegexpChanged
Zitat
Es kann durchaus vorkommen, dass kein Eintrag in NOTIFYDEV gesetzt wird, da nicht zweifelsfrei zwischen Definitionsnamen und Event unterschieden werden kann.
Womöglich ist das bei a,b,c der Fall - Schade.

Und nu? Soll ich jetzt selber filtern oder selber $event_regexp setzen.

BTW. Ich habe das andere Thema verschoben und ein paar neue Sache eingebaut. Inklusive konfigurierbarer Konvertierung.



« Letzte Änderung: 12 Oktober 2020, 21:21:35 von timmib »

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #157 am: 14 Oktober 2020, 22:38:33 »
Danke für eure schnellen Antworten!
Im konkreten schaut mein Fall so aus: ich habe ein Aquarium. Ein ESP32 misst mit onewire die Temperatur und schickt sie rein zur Darstellung in eine InfluxDB. Ich würde nun die Aq-Heizung gerne mit fhem steuern (eine weitere Variable: Leistung der PV-Anlage), brauche dafür aber primär die Temperatur im Aquarium. Für den ESP32 ging der Sourcecode verloren - wäre nicht so schlimm, wenn er nicht mit noch einer anderen wichtigen Aufgabe (Werte via 433MHz an eine proprietäre Funkuhr senden) beschäftigt wäre (und das mag ich mir nicht nochmals neu ausdenken müssen).
Also zusammenfassend: mir reicht der aktuelle Wert der Temperatur im Aquarium (aus der InfluxDB), der dann in regelmäßigen Abfragen in FHEM integriert werden könnte.

Btw. um die letzten Werte von InfluxDB nach FHEM zu bekommen nutze ich den Kapacitor. https://www.influxdata.com/time-series-platform/kapacitor/
Der gehört mit zum TICK-Stack und ist wirklich super, auch zum aggregieren und filtern usw. inkl. gleitende Fenster usw.
Der Kapacitor unterstützt auch Outputs wie z.B. MQTT. Und genau nutze ich um dann di Werte in ein MQTT-Device in FHEM zu bekommen.


Offline matzewob

  • Full Member
  • ***
  • Beiträge: 119
    • TREX-TEC
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #158 am: 23 Oktober 2020, 07:55:56 »
Moin,

ich setzte jetzt seit ein paar Tagen das Modul ein, läuft auch scheibar, etwas....

Meine Frage nun da ich mehrere Devices habe dessen Messerwerte nicht übertragen werden, wie z.b. dieses hier:

defmod Waschmaschine FBDECT Fritzbox:19 switch
attr Waschmaschine IODev Fritzbox
attr Waschmaschine devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off
attr Waschmaschine event-min-interval power:120
attr Waschmaschine room Keller
attr Waschmaschine stateFormat {"T: " . ReadingsNum($name,"temperature",0) . "°C / Verbrauch: "  . ReadingsNum($name,"energy",0)/1000 . "KW/h" }

setstate Waschmaschine T: 25.5°C / Verbrauch: 389.718KW/h
setstate Waschmaschine 2020-10-23 07:52:12 AIN 08761 0363051
setstate Waschmaschine 2020-10-23 07:52:12 FBNAME Waschmaschine
setstate Waschmaschine 2020-10-23 07:52:12 FBPROP microphone,powerMeter,tempSensor,switch
setstate Waschmaschine 2020-10-23 07:52:12 FBTYPE FRITZ!DECT 200
setstate Waschmaschine 2020-10-23 07:52:12 ID 19
setstate Waschmaschine 2020-10-23 07:52:12 devicelock no
setstate Waschmaschine 2020-10-23 07:52:12 energy 389718 Wh
setstate Waschmaschine 2020-10-23 07:52:12 fwversion 04.16
setstate Waschmaschine 2020-10-23 07:52:12 locked no
setstate Waschmaschine 2020-10-23 07:52:12 mode manuell
setstate Waschmaschine 2020-10-23 07:52:12 power 0.64 W
setstate Waschmaschine 2020-10-23 07:52:12 present yes
setstate Waschmaschine 2020-10-23 05:44:03 running off
setstate Waschmaschine 2020-10-23 07:52:12 state on
setstate Waschmaschine 2020-10-23 07:52:12 tempadjust 0.0 C
setstate Waschmaschine 2020-10-23 07:52:12 temperature 25.5 C (measured)
setstate Waschmaschine 2020-10-23 07:52:12 voltage 234.579 V


Mein Influx:

defmod INFLUXLOG InfluxDBLog 127.0.0.1 8086 fhem fhem hochgeheim .*

setstate INFLUXLOG active
setstate INFLUXLOG 2020-10-23 07:52:10 filecount 0


Wie kann ich den überzeugen das er die Readings mit aufnimmt?

Vor allem interessiert mich:

setstate Waschmaschine 2020-10-23 07:52:12 power 0.64 W
setstate Waschmaschine 2020-10-23 07:52:12 temperature 25.5 C (measured)

Danke, und grüße

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 161
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #159 am: 23 Oktober 2020, 08:28:49 »
Das neue Modul wird in einem anderen Thread behandelt und hat einen anderen Namen und Syntax.

https://forum.fhem.de/index.php/topic,114860.0.html

Usage: define devname InfluxDBLogger [http|https]://IP_or_Hostname:port dbname devspec

Offline arran

  • New Member
  • *
  • Beiträge: 25
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #160 am: 07 Januar 2021, 15:52:39 »
Ein gutes Neues allerseits.

Hab jetzt das Modul auch am laufen und bin fleißig am testen - danke an die Entwickler des Moduls.

In der Testumgebung versuche ich die Spritpreise von 5 Tankstellen in die Influx Datenbank zu übertragen. Dort habe ich User, Organisation und InitialBucketName erstellt. In der Device Definition ist der Name der "Organisation"=fhemdb angegeben:

Internals:
   DATABASE   fhemdb
   DEF        http://influxdb:8086 fhemdb ALGTH81377,Esso80639,JET80687,JET80639,Shell80639
   FUUID      5ff6ec75-f33f-bc43-2b04-aa5b7976662b93e9
   FVERSION   93_InfluxDBLogger.pm:0.233660/2020-12-16
   NAME       iflxlog
   NOTIFYDEV  ALGTH81377,Esso80639,JET80687,JET80639,Shell80639
   NR         132
   NTFY_ORDER 50-iflxlog
   STATE      Statistics: t=10 s=0 f=10 e=210
   TYPE       InfluxDBLogger
   URL        http://influxdb:8086
   token      saved
   READINGS:
     2021-01-07 15:08:59   dropped_writes  0
     2021-01-07 15:08:59   dropped_writes_last_message <none>
     2021-01-07 15:26:50   failed_writes   10
     2021-01-07 15:26:50   failed_writes_last_error 404 Not Found
     2021-01-07 15:26:50   state           Statistics: t=10 s=0 f=10 e=210
     2021-01-07 15:08:59   succeeded_writes 0
     2021-01-07 15:26:50   total_events    210
     2021-01-07 15:26:50   total_writes    10
Attributes:
   readingExclude address:\s.+
   room       Database
   security   token
   verbose    5

Ich bekomme den Fehler "404 Not Found" - hiermit ein Ausschnitt aus der Log:

2021.01.07 15:11:51.987 4: InfluxDBLogger: [iflxlog] notified from device Esso80639
2021.01.07 15:11:51.987 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about Diesel: 1.179
2021.01.07 15:11:51.987 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about SuperE10: 1.259
2021.01.07 15:11:51.987 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about SuperE5: 1.309
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10DayMin: 1.259
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10DayAvg: 1.288
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10DayMax: 1.369
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10MonthMin: 1.209
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10MonthAvg: 1.312
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE10MonthMax: 1.419
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5DayMin: 1.309
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5DayAvg: 1.338
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5DayMax: 1.419
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5MonthMin: 1.259
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5MonthAvg: 1.362
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statSuperE5MonthMax: 1.469
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselDayMin: 1.179
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselDayAvg: 1.218
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselDayMax: 1.289
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselMonthMin: 1.179
2021.01.07 15:11:51.988 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselMonthAvg: 1.241
2021.01.07 15:11:51.989 4: InfluxDBLogger: [iflxlog] notified from device Esso80639 about statDieselMonthMax: 1.349
2021.01.07 15:11:51.990 5: InfluxDBLogger: [iflxlog] set ?
2021.01.07 15:11:51.990 5: InfluxDBLogger: [iflxlog] set ?
2021.01.07 15:11:51.990 4: InfluxDBLogger [iflxlog] - Read token from file
2021.01.07 15:11:51.991 4: InfluxDBLogger: [iflxlog] Sending data SuperE10,site_name=Esso80639 value=1.259
statSuperE5DayMax,site_name=Esso80639 value=1.419
Diesel,site_name=Esso80639 value=1.179
statSuperE10MonthMax,site_name=Esso80639 value=1.419
statDieselMonthMin,site_name=Esso80639 value=1.179
statDieselDayMin,site_name=Esso80639 value=1.179
statDieselDayMax,site_name=Esso80639 value=1.289
SuperE5,site_name=Esso80639 value=1.309
statSuperE5DayMin,site_name=Esso80639 value=1.309
statSuperE5DayAvg,site_name=Esso80639 value=1.338
statSuperE10MonthAvg,site_name=Esso80639 value=1.312
statSuperE5MonthMax,site_name=Esso80639 value=1.469
statSuperE10DayMin,site_name=Esso80639 value=1.259
statSuperE10MonthMin,site_name=Esso80639 value=1.209
statSuperE10DayMax,site_name=Esso80639 value=1.369
statDieselMonthMax,site_name=Esso80639 value=1.349
statSuperE5MonthAvg,site_name=Esso80639 value=1.362
statDieselMonthAvg,site_name=Esso80639 value=1.241
statSuperE10DayAvg,site_name=Esso80639 value=1.288
statDieselDayAvg,site_name=Esso80639 value=1.218
statSuperE5MonthMin,site_name=Esso80639 value=1.259
 to http://influxdb:8086/write?db=fhemdb
2021.01.07 15:11:51.993 1: InfluxDBLogger: [iflxlog] Error = 404 Not Found
2021.01.07 15:11:51.994 5: InfluxDBLogger: [iflxlog] set ?

Kann mir jemand einen Hinweis geben woran die Befüllung der Datenbank scheitert?
Irgendwie komme ich als totaler Anfänger nicht dahinter vermute aber, dass es mit der Datenbank Anbindung zusammenhängt.

Vielen Dank
Cubietruck
HM_LAN_CFG, HM_CC_RT_DN, HM_SEC_RHS, nanoCUL 433, GT-WT-02, Revolt NC-5461, m-FS300

Offline fischit

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #161 am: 07 Januar 2021, 16:17:55 »
Ich kann dir zwar nicht sonderlich viel helfen, aber folgendes kann ich dir sagen.

1. Das ist der falsch Thread -> https://forum.fhem.de/index.php/topic,114860.0.html
2. du hast ein Leerzeichen nach deinem ersten Device
3. Wenn du Anfänger bist und du die Influxdb ganz rudimentär aufgesetzt hast, behaupte ich, dass das Attribut "Security" unnötig ist. 

Ansonsten gehe ich davon aus, dass dein System auch wirklich über http://influxdb:8086 erreichbar ist und das deine DB wirklich fhemdb heißt.
Hiermit kannste mal testen was da zurück kommt: curl -G http://influxdb:8086/query --data-urlencode "db=fhemdb" --data-urlencode "q=SHOW SERIES" --data-urlencode "pretty=true"
« Letzte Änderung: 07 Januar 2021, 16:23:07 von fischit »

Offline arran

  • New Member
  • *
  • Beiträge: 25
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #162 am: 08 Januar 2021, 00:33:19 »
@fischit:

  • Danke für die Rückmeldung und dem Link zu dem richtigen Thread.
  • Nach dem ersten Device ist kein Leerzeichen - das passt so
  • Ich verwende InfluxDB V2. Da ist die Verwendung vom Token ziemlich einfach...

Sowohl die InfluxDB V2 als auch FEHEM laufen unter DOCKER im gleichen Netzwerk - das passt auch.

Was gefehlt hat waren die Attribute für InfluxDB API und der Name (meiner) der Organisation:

attr iflxlog api v2
attr iflxlog org fhemdb

Jetzt klappt es :-)

« Letzte Änderung: 08 Januar 2021, 00:42:05 von arran »
Cubietruck
HM_LAN_CFG, HM_CC_RT_DN, HM_SEC_RHS, nanoCUL 433, GT-WT-02, Revolt NC-5461, m-FS300

 

decade-submarginal