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
Hi,,
;)
ZitatGibt es ein Tool oder einen Trick, wie man solche Fragen selbst beantworten kann?
Aus meiner Sicht der Eventmonitor (https://wiki.fhem.de/wiki/Event_monitor)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|open
falls die Events wirklich so kommen:
T.HAUS:close
T.HAUS:open
Gruß Otto
wäre dann nicht eher
ZitatT.HAUS:(close|open)
richtig?
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.
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.
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
das ist ja auch keine "echte" regex im notify.
regex-testern darfst du sowas gar nicht anbieten. ;)
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:
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.... ;)
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?
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....
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
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.
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.
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)
Hallo Beta-User,
ihr seid der Chef. Verschieben für mich ok. Dort liegen Fragen.
Bin nicht Chef, sondern .*User, wie du auch ;) .
Und verschieben kannst du selber (Knopf links unter dem ersten Beitrag), genauso den Titel ändern (im ersten Beitrag). Steht in einem der im Anfängerbereich angepinnten Threads, btw ;) .
EDIT: Was soll "Dort liegen Fragen" bedeuten?
(Hinweis auf Doppelposts? Dann bitte die Querverweise kenntlich machen).
Hm, jetzt habe ich deine vielen Beiträge in dem alarm-Anlagen-Modul-Thread gesehen...
Aber zum einen ist da die hier gestellte Frage nicht klar formuliert (wie nutze ich einen HM-Fensterkontakt im Alarm-Modul?), zum anderen verstehe ich pah, wenn seine "einfache" Auskunft schlicht ignoriert wird, man möge statt doppelter Anführungszeichen " doch besser einfache verwenden.
Hast du das übersehen, oder was ist der Grund, warum du da einfach drüber weg geganen bist?
Sorry, war arbeiten, deshalb jetzt erst die Rückmeldung:
es gibt keinen Grund,warum ich über etwas hinweg gehe ::).
Einen Zusammenhang mit den " und meinem
T.HAUS:open
sehe ich jetzt nicht. Auch habe ich den Hinweis
Zitatwenn seine "einfache" Auskunft schlicht ignoriert wird, man möge statt doppelter Anführungszeichen " doch besser einfache verwenden.
nicht im Wiki gefunden. Auch bei dem nochmaligen Durchlesen (gerade) fand ich den Hinweis nicht.
Aber die Aussage muss sich auch nicht auf das WIKI beziehen, die Aussage ist allgemein gehalten. Spielt aber keine Rolle. Hab den Hinweis wohl gelesen aber nicht korrekt umgesetzt. Sorry. Erinnere mich noch daran.
Hab es gerade nochmals getestet:
Statt : {ReadingsVal("Bewohner","state","Falsch") ne "home"}
jetzt: {ReadingsVal('Bewohner' 'state','Falsch') ne 'home'}
und der Ausdruck ist nach dem Abspeichern stehen geblieben. 8) 8) Ich werde es morgen live testen. Asche auf mein Haupt. Ich meinte es auch getestet zu haben, war aber wohl nicht so. Asche auf mein Haupt. Werde berichten. Danke für die Unterstützung.
Hallo,
das Thema
Statt : {ReadingsVal("Bewohner","state","Falsch") ne "home"}
jetzt: {ReadingsVal('Bewohner', 'state','Falsch') ne 'home'}
funktioniert auch im Livebetrieb. Hab schon einige Test heute gemacht.
Jetzt stehen nur noch die Türen aus:
T.HAUS:open
Da findet sich sicherlich auch noch eine Lösung.
Ansonsten habe ich das Modul "Alarm" jetzt bei mir scharf geschaltet. Bisher alles ok. Vielen Dank für das Modul. Ist ne dicke Erweiterung des SmartHome.
Auch wenn es mich freut, dass das jetzt läuft zwei Anmerkungen:
1. Die Rückmeldung zu dem Hochkomma-Thema wäre eigentlich in dem anderen Thread besser aufgehoben (oder hat das was mit dem Fensterkontakt zu tun?)
2. Wenn noch Fragen zum Fensterkontakt offen sind, komme ich zurück auf:
Zitat von: Beta-User am 23 Januar 2019, 14:20:12
Und nochmal: Umbenennen [...] wäre m.E. angesagt. Das ist weder ein Regex-Thema noch hat es speziell was mit HM zu tun, oder?
Zitat von: Beta-User am 23 Januar 2019, 15:02:17
Aber zum einen ist da die hier gestellte Frage nicht klar formuliert (wie nutze ich einen HM-Fensterkontakt im Alarm-Modul?), [...]
Wenn dein Problem also noch nicht mit [gelöst] zu editieren ist, wäre es immer noch angesagt, einen aussagefähigen Titel zu wählen.
So, jetzt habe ich aber alles zum Thema gesagt, was ich beitragen kann und bin hier raus, ganz egal, worauf das wiederholte Ignorieren _dieses_ Hinweises bisher beruht hat...
Der Titel ist geändert, im Sammelblock für das Modul "Alarm" habe ich die Lösung für das Bedingungsfeld für den Alarmlevel eingetragen und als gelöst definiert.
Die Thema mit den Türen : Wie sieht der Ausdruck für Sensorauslösung (Auslösung durchRegexp) für z.B. eine Türe aus, wenn man auf beide Zustände reagieren möchte open -> closed und closed -> open.
Ich hatte T.HAUS:(closed\|open)
eingetragen, das wird nicht in dem Feld akzeptiert:
Die Fehlermeldung lautet: Settings alarm0,alarm4,|T.HAUS:(closed\|open)|HT geöffnet|on incomplete for alarmSensor T.HAUS
Zur Vervollständigung noch ein list von T.HAUS
Internals:
DEF 69696D
FUUID 5c481922-f33f-64ff-6ab1-140ca779dcd32887
IODev myHmUART
LASTInputDev myHmUART
MSGCNT 11
NAME T.HAUS
NOTIFYDEV global
NR 85
NTFY_ORDER 50-T.HAUS
STATE closed
TYPE CUL_HM
lastMsg No:49 - t:10 s:69696D d:070657 06010000
myHmUART_MSGCNT 11
myHmUART_RAWMSG 0501004A49A61069696D07065706010000
myHmUART_RSSI -74
myHmUART_TIME 2019-01-24 13:14:02
protLastRcv 2019-01-24 13:14:02
protRcv 11 last_at:2019-01-24 13:14:02
protSnd 11 last_at:2019-01-24 13:14:02
protState CMDs_done
rssi_at_myHmUART cnt:11 min:-75 max:-72 avg:-73.54 lst:-74
READINGS:
2019-01-24 07:30:13 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-24 13:14:02 alive yes
2019-01-24 13:14:02 battery ok
2019-01-24 13:14:02 contact closed (to VCCU)
2019-01-03 16:46:20 powerOn 2019-01-03 16:46:20
2019-01-24 13:14:02 recentStateType info
2019-01-24 13:14:02 sabotageError off
2019-01-24 13:14:02 state closed
2019-01-03 16:46:23 trigDst_broadcast noConfig
2019-01-24 12:38:39 trigger_cnt 62
helper:
HM_CMDNR 73
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 1548332042.66369
rxt 2
vccu VCCU
p:
69696D
00
00
00
prefIO:
myHmUART
mRssi:
mNo 49
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 1548332042.3701
ack:
HASH(0x3650e20)
49800207065769696D00
rssi:
at_myHmUART:
avg -73.5454545454545
cnt 11
lst -74
max -72
min -75
tmpl:
Attributes:
DbLogExclude .*
DbLogInclude state battery
IODev myHmUART
IOgrp VCCU:myHmUART
actCycle 002:50
actStatus alive
alarmDevice Sensor
alarmSettings alarm0,alarm4,|T.HAUS:(closed\|open)|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