[verschoben in Sammelblog] : "neues Modul für Alarmanlage"

Begonnen von UweUwe, 23 Januar 2019, 09:40:58

Vorheriges Thema - Nächstes Thema

UweUwe

Hallo,
möchte mit einem Türkontakt HM-SEC-SCo einen Alarm auslösen. Dazu benötige ich die Änderung des state: closed|open.
Aktuell verwende ich T.HAUS:.*.
Ich bekomme aber Fehleralarme und vermute, dass ich damit jede Zustandsänderung des devices mitbekomme, nicht nur die von "state".
Ich habe den Eindruck, dass T.Haus.open zuverlässig funktioniert, aber es deckt eben nur einen Teilbereich ab.
Gibt es ein Tool oder einen Trick, wie man solche Fragen selbst beantworten kann?
Wie lautet denn mein RegExp für den aktuellen Fall, wenn ich Zustände abdecken möchte:
T.HAUS:state:.* ?
Anbei das List des Kontaktes, hab aber mit den anderen Kontakten auch das Thema. Fehleralame sind angesagt.
Ganz unten in dem List sieht man auch das von mir gewählte Regexp:
alarmSettings alarm0,alarm4,|T.HAUS:.*|HT geöffnet|on, das aber von dem Modul "Alarm" nach meiner Vorgabe T.HAUS:.* so umgesetzt wird.

Internals:
   DEF        69696D
   FUUID      5c481922-f33f-64ff-6ab1-140ca779dcd32887
   IODev      myHmUART
   LASTInputDev myHmUART
   MSGCNT     3
   NAME       T.HAUS
   NOTIFYDEV  global
   NR         85
   NTFY_ORDER 50-T.HAUS
   STATE      closed
   TYPE       CUL_HM
   lastMsg    No:12 - t:10 s:69696D d:070657 06010000
   myHmUART_MSGCNT 3
   myHmUART_RAWMSG 0501004A12A61069696D07065706010000
   myHmUART_RSSI -74
   myHmUART_TIME 2019-01-23 09:18:58
   protLastRcv 2019-01-23 09:18:58
   protRcv    3 last_at:2019-01-23 09:18:58
   protSnd    3 last_at:2019-01-23 09:18:58
   protState  CMDs_done
   rssi_at_myHmUART cnt:3 min:-78 max:-74 avg:-76.66 lst:-74
   READINGS:
     2019-01-23 08:35:00   Activity        alive
     2019-01-03 16:50:33   CommandAccepted no
     2019-01-03 16:50:13   D-firmware      1.0
     2019-01-03 16:50:13   D-serialNr      PEQ0583168
     2019-01-04 12:20:34   PairedTo        0x070657
     2019-01-03 16:50:14   R-cyclicInfoMsg on
     2019-01-03 16:50:14   R-eventDlyTime  0 s
     2019-01-03 16:50:14   R-pairCentral   0x070657
     2019-01-03 16:50:14   R-sabotageMsg   on
     2019-01-03 16:50:14   R-sign          on
     2019-01-04 12:20:34   RegL_00.        00:00 02:01 09:01 0A:07 0B:06 0C:57 10:01 14:06
     2019-01-04 12:20:35   RegL_01.        00:00 08:01 20:9C 21:00 30:06
     2019-01-03 16:49:43   aesCommToDev    ok
     2019-01-03 16:49:43   aesKeyNbr       00
     2019-01-23 09:18:58   alive           yes
     2019-01-23 09:18:58   battery         ok
     2019-01-23 09:18:58   contact         closed (to VCCU)
     2019-01-03 16:46:20   powerOn         2019-01-03 16:46:20
     2019-01-23 09:18:58   recentStateType info
     2019-01-23 09:18:58   sabotageError   off
     2019-01-23 09:18:58   state           closed
     2019-01-03 16:46:23   trigDst_broadcast noConfig
     2019-01-23 08:53:04   trigger_cnt     46
   helper:
     HM_CMDNR   18
     mId        00C7
     regLst     ,0,1,4p
     rxType     28
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +69696D,00,00,00
       nextSend   1548231538.83616
       rxt        2
       vccu       VCCU
       p:
         69696D
         00
         00
         00
       prefIO:
         myHmUART
     mRssi:
       mNo        12
       io:
         myHmUART:
           -72
           -72
     prt:
       bErr       0
       sProc      0
       sleeping   0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rpt:
       IO         myHmUART
       flg        A
       ts         1548231538.53984
       ack:
         HASH(0x417db40)
         12800207065769696D00
     rssi:
       at_myHmUART:
         avg        -76.6666666666667
         cnt        3
         lst        -74
         max        -74
         min        -78
     tmpl:
Attributes:
   DbLogExclude .*
   DbLogInclude state battery
   IODev      myHmUART
   IOgrp      VCCU:myHmUART
   actCycle   002:50
   actStatus  alive
   alarmDevice Sensor
   alarmSettings alarm0,alarm4,|T.HAUS:.*|HT geöffnet|on
   autoReadReg 4_reqStatus
   expert     2_raw
   firmware   1.0
   genericDeviceType window
   model      HM-SEC-SCo
   peerIDs    00000000,
   room       CUL_HM,DIELE,Homekit
   serialNr   PEQ0583168
   subType    threeStateSensor



Otto123

#1
Hi,,
;)

ZitatGibt es ein Tool oder einen Trick, wie man solche Fragen selbst beantworten kann?
Aus meiner Sicht der Eventmonitor und dort auch das Feature ein notify (oder anderes Gerät) anlegen lassen.
Es gibt noch den https://regex101.com/ aber da muss man auch erstmal wissen was man will.

Wegen dem state musst du noch stateEvent beachten, such mal in der Doku nach addStateEvent.
Ganz allegmein:
Leerzeichen durch Punkte ersetzen,
Fälle konkret durch oder trennen -> FallA|FallB
Teilbereiche klammern -> GemeinsamerTeil(FallA|FallB)
Oder was verallgemeinern, z.B. nur Aktor1 und Aktor2 -> Aktor[1,2]

Deine Frage oben, auf open und close triggern:
T.HAUS:close|openfalls die Events wirklich so kommen:
T.HAUS:close
T.HAUS:open

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

nils_

wäre dann nicht eher
ZitatT.HAUS:(close|open)
richtig?

viele Wege in FHEM es gibt!

Otto123

#3
Da das Gerät mit : vom restlichen Event sowieso getrennt wird (devicename:event), funktioniert es auch ohne Klammer  8)
Ich habe es mal "durch Zufall probiert"

Könnt ihr gerne testen. Aber es ist sicher generell besser immer zu klammern.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Benni

Zitat von: Otto123 am 23 Januar 2019, 10:01:13
Es gibt noch den https://regex101.com/ aber da muss man auch erstmal wissen was man will.

Kannte ich noch gar nicht, danke!  8)

Ich verwende ansonsten https://regexr.com

Gruß Benni.

nils_

#5
Zitat von: Otto123 am 23 Januar 2019, 11:55:17
Da das Gerät mit : vom restlichen Event sowieso getrennt wird (devicename:event), funktioniert es auch ohne Klammer  8)
Ich habe es mal "durch Zufall probiert"

Könnt ihr gerne testen. Aber es ist sicher generell besser immer zu klammern.

hab ich getestet auf regex101.com , und es matcht nur das open dann und nicht der Teil davor.
oder ich bediene es falsch :)
die erklärung rechts auf der seite beschreibt das eigentlich auch so...

oder liegt das an den flags? weil damit hab ich jetzt nicht rumgespielt...


//edit:
auch was bennis seite macht er das so?  ::)

http://regexr.com/46utv
viele Wege in FHEM es gibt!

frank

das ist ja auch keine "echte" regex im notify.
regex-testern darfst du sowas gar nicht anbieten.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

UweUwe

Hi, hab mal getestet:
T.HAUS:(close|open)
Das Ergebnis ist:
Settings alarm0,alarm4,|T.HAUS:(close|open)|HT geöffnet|on incomplete for alarmSensor T.HAUS
Hab mal den Eventmonitor bemüht:
2019-01-23 13:03:38 CUL_HM T.HAUS sabotageError: off
2019-01-23 13:03:38 CUL_HM T.HAUS closed
2019-01-23 13:03:40 CUL_HM T.HAUS battery: ok
2019-01-23 13:03:40 CUL_HM T.HAUS contact: open (to VCCU)
2019-01-23 13:03:40 CUL_HM T.HAUS open


Sorry, dass ich hier frage, aber im Blog über das Modul "alarm" gibt es kein feedback.

Ändere ich jetzt den Regexp auf T.HAUS:open, dann ist alles im Lot. Kein Fehler mehr:



nils_

Zitat von: frank am 23 Januar 2019, 13:08:44
das ist ja auch keine "echte" regex im notify.
regex-testern darfst du sowas gar nicht anbieten.  ;)

genau deswegen hab ich das mit den flags erwähnt :)

mir war nämlich auch, das ich sowas mal gelesen hatte, irgendwo irgendwann....  ;)
viele Wege in FHEM es gibt!

UweUwe

Hallo,
jetzt werde ich etwas unruhig. Deshalb auch der Fehler im letzten Beitrag mit
Zitat"close  closed"
Entschuldigung, dass ich hier frage, aber im Blog für "Alarm" ist die Supportfunktion eingeschränkt.

die Namen im state meiner Türe lauten "open" und "closed".
Die habe ich auch so im RegExp eingefügt:
T.HAUS:(closed\|open)
Der \| kommt auf Hinweis des Satzes des "Alarm" Entwicklers pah:
Achtung, bei den notify-Devices gilt nur ein eingeschränkter Satz von Regeln für reguläre Ausdrücke. Ich habe mir deshalb erlaubt, die |-Zeichen als Trenner in dem Attribut zu verwenden. Wenn man sie also in einem regulären Ausdruck einsetzen will: \| sollte gehen.
Leider gibt es nicht mehr Hinweise auf:
Zitatein eingeschränkter Satz von Regeln für reguläre Ausdrücke

Das Ergebnis dieses neuen Regexp ist leider auch nicht befriedigend:
Settings alarm0,alarm4,|T.HAUS:(closed\|open)|HT geöffnet|on incomplete for alarmSensor T.HAUS
Gerade bei den Türen ist es mir wichtig auf beide state zu reagiern. open und closed.
Wie gesagt:
T.HAUS:open
bringt keinen Fehler.

Gibt es noch Ideen?

nils_

nur mal so ne frage:
wo gibst du das genau ein??
ich verwende das alarm-modul nicht....

Zitatein eingeschränkter Satz von Regeln für reguläre Ausdrücke
meint im grunde das selbe wie
Zitat von: frank am 23 Januar 2019, 13:08:44
das ist ja auch keine "echte" regex im notify.

was genau die einschränkungen sind kann ich dir jetzt auch nicht sagen....
viele Wege in FHEM es gibt!

Beta-User

Der Hinweis, dass du im "dortigen Blog" keinen support bekommst, dürfte irreführend sein. Ist das nicht sogar im Wiki beschrieben?!?

Wenn "pah" der Entwickler ist, liest er auch hier mit, kommt aber vermutlich in diesem Forenbereich unter der Überschrift nicht auf den Gedanken, dass es da um sein Modul geht.

Aber grundsätzlich dürften beide Events nicht zum selben Ergebnis führen, oder? Wenn nein: Was spricht dagegen, die einfach beide in toto aufzuführen? Also in der Art:
T.HAUS:closed|T.HAUS:open
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

Hallo für die Rückinfo:
deine Frage, wo ich den Ausdruck einsetzte:
es gibt in der "Alarm" Übersicht einen Bereich "Auslösung durch RegExp"
https://wiki.fhem.de/w/images/8/80/Alarm_sensors.png

Anstelle "notify durch Regexp" ist die Überschrift heute Auslösung durch RegExp definiert den Ausdruck, der dann aufgrund des readings für den jeweiligen Sensor der Alarm auslöst:
Beispiele, die bei mir funktionieren sind:BEWEGUNG_KELLER:motion:.*
SCHALTER_SCHLAF_Btn_05:Short.*
T.HAUS:open
WASSER_GARAGE:water_detect:.on


Ich suche jetzt meine Ausdruck für meine Türe, den als state open und closed hat und T.Haus heisst.
Aber auch die anderen Türen, vom Typ FHTTK haben ein ähnliches Thema. Die state heissen dort Closed und Open.



UweUwe

Das RegExp
T.HAUS:closed|T.HAUS:open hatte ich schon im Auge. Das Ergebnis ist:T.HAUS:closed|T.HAUS:open[Alarm 4] Settings alarm0,alarm4,|T.HAUS:closed\|T.HAUS:open|HT geöffnet|on incomplete for alarmSensor T.HAUS

incomplete alarmSensor
Aus dem | habe ich ein \| gemacht. So die Vorgabe.




Beta-User

#14
Es war eigentlich ohne Maskierung gedacht...

Aber irgendwie scheint mir das in dem Modul anders gedacht zu sein: Du gibts eigenlich nur einen Sensor an. Im Modul selbst erfolgt dann die Auswertung, wobei ein Aktivierungs-Event und ein Deaktivierungs-Event _dieses Devices_ genannt werden muß, oder lese ich das wiki da falsch (der Verweis auf ein Bild ist nett, bringt einen aber btw. nicht weiter...).
MaW: ich denke, du versuchst die Unterscheidung an der falschen Stelle unterzubringen...

Und nochmal: Umbenennen und verschieben wäre m.E. angesagt. Das ist weder ein Regex-Thema noch hat es speziell was mit HM zu tun, oder?

(Typos korrigiert)
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