Autor Thema: DBLog und Regex DEF  (Gelesen 258 mal)

Offline Jewe

  • Full Member
  • ***
  • Beiträge: 388
DBLog und Regex DEF
« am: 03 Oktober 2018, 13:31:39 »
Hallo,

also ich habe so meine schwierigkeiten mit den Regex und mache mache starte nochmal ein Thema dazu. Sorry.

Die DEF dazu muss ja dieses format haben: <devspec>:<Reading> bzw. (Device1|Device2):(Reading1|Reading2)

Seither habe ich die DEF so gemacht:
/opt/fhem/db.conf (.*:temperature.*|.*:measured-temp.*|.*:desired-temp.*|.*:actuator.*|.*:valveposition.*|.*:humidity.*|.*:pressure.*|WEB_Speedtest:.*|A2_I01_21_Zisterne_Fuellstand:.*|Regensensor:state.*|A2_OC3_Zirkulationspumpe:state.*|Zirkulationspumpe:state.*|Zirkulationspumpe:threshold_m.*|A2_OC8_Bypass_Oeffnen:state.*|A2_I06_26_Differenzdruck_DS01_Alarm:state.*|kwl_stufe:stata.*|RM_.*:state.*|Alarm_Rauchmelder:state.*)
Was irgendwie auch funktioniert. Wenn ich das nun in das eichtige format bringe, müsste es so aussehen:
/opt/fhem/db.conf (.*|.*|.*|.*|.*|.*|.*|WEB_Speedtest|A2_I01_21_Zisterne_Fuellstand|Regensensor|A2_OC3_Zirkulationspumpe|Zirkulationspumpe|Zirkulationspumpe|A2_OC8_Bypass_Oeffnen|A2_I06_26_Differenzdruck_DS01_Alarm|kwl_stufe|RM_.*|Alarm_Rauchmelder):
(temperature.*|measured-temp.*|desired-temp.*|actuator.*|valveposition.*|humidity.*|pressure.*|.*|.*|state|state|state|threshold_m|state|state|state|state|state).*

Habe ich das so richitg verstanden ? Das macht die lesbarkeit oder erweiterbatkeit nicht besser.

Wie macht Ihr das ?

Jens

Offline Jewe

  • Full Member
  • ***
  • Beiträge: 388
Antw:DBLog und Regex DEF
« Antwort #1 am: 04 Oktober 2018, 22:11:00 »
Heute habe ich es nun ao einmal probiert, aber nun logge ich so ziemlich alles in der einer DB. Werde erstmal wieder die alte DEF
verwenden und eine Datensicherung einspielen.
Ich habe 2 Datenbanken. Mit exlunde und include kann ich nicht arbeiten, da ich dann ja in beiden DB´s das selbe stehen habe.
ggf. müsste ich das Konzept nochmals überdenken.

Nochmal die Frage, wie macht Ihr das ?

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3136
Antw:DBLog und Regex DEF
« Antwort #2 am: 04 Oktober 2018, 23:03:17 »
Hallo Jens,

im Prinzip mache ich es bei mir so, dass ich bei jeder DB im DEF die Devices angebe die geloggt werden sollen. Readings werden alle im DEF eingeschlossen.
Damit nur die Readings in der DB landen die ich dort will, setze ich event-on-change(update)-reading in den Quelldevices entsprechend ein.

Also etwa so:

(SMA_Energymeter|STP_5000|Sonnenstrom_Relative|Sonnenstrom|MyWetter|Dum.Energy|Rep.Fhem.Size|eg.az.fridge_Pwr|eg.flur.server_Pwr|withings.*:(?!.*done).*

Du kannst auch das Attribut excludeDevs einsetzen um bei jeder DB die Devices global ausschließen die jeweils die andere DB loggen soll. In diesem Attribut kannst du mit devspec arbeiten, was es sehr übersichtlich und mächtig macht.
Z.B.:

global,Log.*,
TYPE=DbLog,
TYPE=SSCam

Grüße
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline Jewe

  • Full Member
  • ***
  • Beiträge: 388
Antw:DBLog und Regex DEF
« Antwort #3 am: 04 Oktober 2018, 23:16:55 »
Hallo Heiko,

Danke für Deine Antwort.
Was heisst den  (?!.*done).*   ??

Jens

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3136
Antw:DBLog und Regex DEF
« Antwort #4 am: 05 Oktober 2018, 08:03:17 »
Zitat
Was heisst den  (?!.*done).*   ??
Der Konstrukt "(?!.*done).*" bedeutet, dass alle Readings außer ".*done.*" berücksichtigt/geloggt werden.
Das benutze ich immer. Ich habe wie geschrieben im Prinzip überall event-on-change(update)-reading eingesetzt. Es gibt aber Fälle in denen ich dennoch
dieses Reading (in dem Fall "done") nicht loggen will obwohl ich den Event zu Steuerungszwecken benötige.
Wenn du im Netz nach "Positive and Negative Lookahead" suchst, findest du Infos zu diesem Regex.

LG
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

 

decade-submarginal