Verständisproblem "Regulärer Ausdruck"

Begonnen von UweUwe, 11 Januar 2019, 12:42:12

Vorheriges Thema - Nächstes Thema

UweUwe

Hallo,

für das Auslösen des Modules "Alarm" der FHEM Alarmanlage benötigt man "einen regulären Ausdruck, bei dessen Erkennung die Auslösung erfolgt.

Bei Türkontakten und Bewegungsmelder fand ich die Lösung:

Türkontakte:

ZitatRegulärer Ausdruck war : WOHN_TUERE:Open

Events davon waren:
2019-01-10 18:31:10 CUL_FHTTK WOHN_TUERE Open
2019-01-10 18:32:14 CUL_FHTTK WOHN_TUERE Window: Closed
2019-01-10 18:32:14 CUL_FHTTK WOHN_TUERE Reliability: ok
2019-01-10 18:32:14 CUL_FHTTK WOHN_TUERE batteryState: ok
2019-01-10 18:32:14 CUL_FHTTK WOHN_TUERE Closed


Jetzt habe ich einen Wasserdetector, über den ich "Wassereinbruch" abprüfen möchte.

seine Events sind:

2019-01-11 12:35:44 HMS WASSER_GARAGE battery: ok
2019-01-11 12:35:44 HMS WASSER_GARAGE batteryState: ok
2019-01-11 12:35:44 HMS WASSER_GARAGE type: HMS100WD
2019-01-11 12:35:44 HMS WASSER_GARAGE Water Detect: on

und 019-01-11 12:36:19 HMS WASSER_GARAGE water_detect: off
2019-01-11 12:36:19 HMS WASSER_GARAGE battery: ok
2019-01-11 12:36:19 HMS WASSER_GARAGE batteryState: ok
2019-01-11 12:36:19 HMS WASSER_GARAGE type: HMS100WD
2019-01-11 12:36:19 HMS WASSER_GARAGE Water Detect: off


Sein List ist:

Internals:
   CODE       2bc7
   CUL_0_MSGCNT 76
   CUL_0_RAWMSG 810e04xx0212a0012bc7000000000000
   CUL_0_RSSI -51
   CUL_0_TIME 2019-01-11 12:36:53
   DEF        2bc7
   IODev      CUL_0
   LASTInputDev CUL_0
   MSGCNT     76
   NAME       WASSER_GARAGE
   NR         38
   STATE      Water Detect: off
   TYPE       HMS
   READINGS:
     2019-01-11 12:36:53   battery         ok
     2019-01-11 12:36:53   batteryState    ok
     2019-01-11 12:36:53   state           Water Detect: off
     2019-01-11 12:36:53   type            HMS100WD
     2019-01-11 12:36:53   water_detect    off
Attributes:
   DbLogExclude .*
   IODev      CUL_0
   alarmDevice Sensor
   alarmSettings alarm5,|WASSER_GARAGE Water Detect: on|Sensor direkt |on
   genericDeviceType switch
   icon       scene_swimming
   room       GARAGE,HMS,Homekit


Aktuell ist
ZitatWasser_GARAGE Water Detect: on
als "Regulärer Ausdruck" von mir definiert. Der tuts auch nicht, wie alle, die ich vorhers chon getestet habe.  Habt ihr mir einen Tip ?

Beta-User

http://regex101.com/

Generell: bestimmte Sonderzeichen (insbesondere: Leerzeichen) durch einen "." ersetzen und dann mal Grundlagendoku lesen, z.B. hier: https://fhem.de/commandref_DE.html#intro -Abschnitt Geräte-Spezifikation (devspec)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

nils_

mal aus dem wiki:
https://wiki.fhem.de/wiki/Regul%C3%A4rer_Ausdruck

oder für notify (geht es darum??)
https://wiki.fhem.de/wiki/Notify#Suchmuster


ansonsten hat Beta-User, denke ich, den entscheidenden Hinweis schon gegeben --> Leerzeichen
viele Wege in FHEM es gibt!

UweUwe

Hallo,

danke für die schnellen Antworten. Ich werde gleich lesen.
ich habe ja 2 events zur Auswahl:
Zitat
2019-01-11 13:02:17 HMS WASSER_GARAGE Water Detect: on
2019-01-11 13:02:34 HMS WASSER_GARAGE water_detect: on
Kann ich beide verwenden? Die Regulären Ausdrucke sind komplett unterschiedlich.
Warum habe ich 2 events mit derselben Information: Wassereinbruch?









Beta-User

Was soll "kann ich beide verwenden" heißen? Soll also eine Regex nur auf einen von beiden triggern oder auf beide?

=> Denke über die Verwendung des "." nach ;)

Ansonsten: die von mir verlinkte Seite kann gut für Tests verwendet werden. Für die Erstellung/Änderung von notify etc. bietet es sich an, den Event-Monitor (oder die Detailseite des notify) zu nutzen, siehe entspr. Wiki-Beitrag. Der macht m.E. auch gleich an der richtigen Stelle einen "." ;D .

Und jetzt lies erst mal und teste das eine oder andere, dann werden die Dinge klarer, als wenn du hier ständig Dinge fragst, die bereits beantwortet sind.
[gelöst]?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

nils_

einmal ist das dein "state" und einmal "water_detect".

Zitat
Internals:
   CODE       2bc7
   CUL_0_MSGCNT 76
   CUL_0_RAWMSG 810e04xx0212a0012bc7000000000000
   CUL_0_RSSI -51
   CUL_0_TIME 2019-01-11 12:36:53
   DEF        2bc7
   IODev      CUL_0
   LASTInputDev CUL_0
   MSGCNT     76
   NAME       WASSER_GARAGE
   NR         38
   STATE      Water Detect: off
   TYPE       HMS
   READINGS:
     2019-01-11 12:36:53   battery         ok
     2019-01-11 12:36:53   batteryState    ok
     2019-01-11 12:36:53   state           Water Detect: off
     2019-01-11 12:36:53   type            HMS100WD
     2019-01-11 12:36:53   water_detect    off
Attributes:
   DbLogExclude .*
   IODev      CUL_0
   alarmDevice Sensor
   alarmSettings alarm5,|WASSER_GARAGE Water Detect: on|Sensor direkt |on
   genericDeviceType switch
   icon       scene_swimming
   room       GARAGE,HMS,Homekit
viele Wege in FHEM es gibt!

JoWiemann

Zitat von: nils_ am 11 Januar 2019, 13:15:30
einmal ist das dein "state" und einmal "water_detect".

STATE, da es ja auch ein state in Devices gibt. Und STATE kann z.B. durch stateFormat individualisiert werden. Allerdings sollte meines Wissens die Individualisierung von STATE kein Event auslösen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Beta-User

ähm,

state löst nur dann ein notify aus, wenn man dort ein Attribut setzt, oder?
Aber STATE wird eigentlich doch immer als Event mit ausgelöst, wenn man eine passende Reading-Aktialisierung hat, die wiederum (vereinfacht gesagt) vom Modulautor als triggernd gekennzeichnet wurde?

@UweUwe:
Mußt du nicht verstehen, halte dich für's erste an das, was der Event-Monitor liefert; in der Regel ist es das, was ein notify berücksichtigt. (Für andere Eventhandler kann ich es im Moment nicht sagen).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoWiemann

Off Topic

Zitat von: Beta-User am 11 Januar 2019, 13:46:35
Aber STATE wird eigentlich doch immer als Event mit ausgelöst, wenn man eine passende Reading-Aktialisierung hat, die wiederum (vereinfacht gesagt) vom Modulautor als triggernd gekennzeichnet wurde?

Schau mal hier: https://wiki.fhem.de/wiki/DevelopmentState

STATE gehört dem User und kann Initial initialisiert werden. Es gab hierzu mal eine Diskussion im Forum. stateFormat löst selber kein Event aus.

Allerdings scheint das Attribut alarmSettings STATE zu befüllen und ein Event mit dem Attributwert auszulösen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

justme1968

state löst immer ein event aus (wenn nicht unterdrückt) über das attribut wird nur das format eingestellt. mit state: im event oder ohne.

STATE löst nie ein event aus. zumindest keines auf das man mit notify reagieren kann. über longpoll kommt etwas um das icon im frontend zu aktualisieren. aber das ist etwas ganz anderes.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Beta-User

Zitat von: justme1968 am 11 Januar 2019, 13:58:38
state löst immer ein event aus (wenn nicht unterdrückt) über das attribut wird nur das format eingestellt. mit state: im event oder ohne.

STATE löst nie ein event aus. zumindest keines auf das man mit notify reagieren kann. über longpoll kommt etwas um das icon im frontend zu aktualisieren. aber das ist etwas ganz anderes.

Danke für die Klarstellung, war nur durch den Hinweis in #7 irgendwie "falsch herum" gepolt, die Kette state => stateFormat => STATE ist schon soweit klar und auch die Frage was wann warum (im Prinzip) Events liefert...
alarmSettings war mir allerdings neu (brauchte ich bisher auch nicht).

Ansonsten sollte man sich - wie bereits geschrieben - m.E. als User einfach an den Event-Monitor halten, auch wenn der die Reading-Angabe im Fall von state "unterschlägt".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

UweUwe

Hi,
Merci!!
ich habe den Hinweis mit dem notify insoweit benutzt, als ich mir mir hilfsweise ein Notify gebastelt hab, das dieselbe Wirkung hat:

define GWASSER.WARN_NT Notify  WASSER_GARAGE:water_detect:.* set AKTOR01_GARTEN_Sw_01 on

Über diesen Weg bin ich dann zu meinem regulären Ausdruck gekommen:

WASSER_GARAGE:water_detect:.on
Möchte die Teile nochmals nachfragen:
ZitatWASSER_GARAGE   verstehe ich
:                              im Anschluss an den device Name steht ein : (DOPPELPUNKT) muss man wissen.
water_detect          ist das reading  verstehe ich
:.                         8) haut mich um
on                           verstehe ich.

Wenn ich jetzt auf einen Wechsel von water_detect prüfen wollte wäre der Ausdruck:
WASSER_GARAGE:water_detect:.*
Weiter habe ich gelernt, dass ich "state" nicht in notify verwenden soll und damit auch nicht in Regulären Ausdrucken.




UweUwe

Hi,
noch ein kleiner Hinweis zu dem State  // STATE:

in dem Abschnitt INTERNALS des devices steht:
ZitatSTATE: Water Detect: on
in dem Abschnitt Reading steht
state Water Detect: on

Der "einfache User  :o :o kommt hier Gewissenskonflikte.. Aber ich hab ja verstanden: state/STATE nicht in regulären Ausdrucken. Nochmals vielen Dank.
Ich muss an das Thema Notify und den von euch gebotenen Hilfmittel nochmals ran..


Beta-User

Zitat von: UweUwe am 11 Januar 2019, 13:09:54
2019-01-11 13:02:17 HMS WASSER_GARAGE Water Detect: on
2019-01-11 13:02:34 HMS WASSER_GARAGE water_detect: on
Natürlich kannst du auch das Water Detect verwenden, es wird ja auch im Event-Monitor angezeigt:
define GWASSER.WARN_NT Notify  WASSER_GARAGE.Water.Detect:.* set AKTOR01_GARTEN_Sw_01 on(Ergänzender Hinweis, auch wenn andere das nicht so eng sehen: ich vermeide Punkte in den Gerätenamen; warum, dürfte jetzt klarer sein).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

UweUwe

Hi,
danke, danke. Ist doch korrekt:
ZitatWASSER_GARAGE:water_detect:.* prüft auf einen Wechsel: entweder on nach off oder von off nach on.
WASSER_GARAGE:water_detect:.on löst nur aus, wenn es von off nach on geht.
Merci