Zwei Handsender HM-RC-Sec4-3 mit regex die gleiche Funktion ausführen lassen

Begonnen von eta1st, 03 Dezember 2016, 07:42:15

Vorheriges Thema - Nächstes Thema

eta1st

Hallo,
ich habe 2 Handsender gekauft.
Die beiden ersten Zeilen funktionieren prima. Mit der ersten kann ich auch alle Lampen im Wohnzimmer anschalten.
Mit der dritten Zeile würde ich gerne die Lampe anmachen, egal ob ich oder meine Freundin die Taste drückt.
Könnt ihr mir bitte mit der regex helfen?
Oder mir einen Tip geben, wie es besser geht?
Lieben Dank.


define Mob_Key4_Er_ZuHaus_Short DOIF ([Mob_Key4_Er_Lampe] =~"Short") (set Erd_Wohn_Licht_.* on-for-timer 30)

define Mob_Key4_Sie_Lampe_Short DOIF ([Mob_Key4_Sie_Lampe] =~"Short") (set Erd_Wohn_Licht_Fenster on-for-timer 30)

define Mob_Key4_Beide_Lampe_Short DOIF ([Mob_Key4_.*._Lampe] =~"Short") (set Erd_Wohn_Licht_Fenster on-for-timer 30)


Ellert

Die Syntax sieht richtig aus. Welches DOIF zuschlägt ist nicht vohersehbar. Das 3. DOIF kannst Du weglassen.

Mir ist keine Lösung bekannt bei der FHEM erraten kann in welchem Fall "Er" statt der 300s nur 30 wünscht.

chris1284

für das was du willst reicht ein doif/ notify. wenn du ein regexp auf alle hast braucht du keinen weiteren für jeden einzelnen.
define Mob_Key4_Beide_Lampe_Short DOIF ([Mob_Key4_.*] =~"Short") (set Erd_Wohn_Licht_.* on-for-timer 30)

eta1st

Danke für Eure Hilfe.
Mit diesem regex    ([Mob_Key4_.*] =~"Short")   würde er aber doch reagieren, egal welcher Knopf gedrückt wurde.
Hätte aber gern nur auf den Knopf mit Lampe reagiert im Sinne  ([Mob_Key4_.*._Lampe] =~"Short")

Die 300 waren ein typo. macht sinn, daß fhem nicht raten kann. korrigiert. danke.

chris1284

Zitat von: eta1st am 03 Dezember 2016, 09:37:04
Mit diesem regex    ([Mob_Key4_.*] =~"Short")   würde er aber doch reagieren, egal welcher Knopf gedrückt wurde.
ja. das stimmt. da mehrere tasten vorhandne sind hatt eich nicht bedacht. ggf etwas an den namen ändern zb er_mob_key4_lampe. dann würde .*._mob_key4_lampe greifen für beide

eta1st

Danke für die Hilfe. Sorry, aber es wird offensichtlich, daß meine Namenskonvention nicht grade erleichtert meine Frage klar zu machen. Ich versuchs noch mal etwas anders.

Nach dem Anlernen heißt der 4. Knopf zum Beispiel...

define HM_4xxx94_disarm CUL_HM 4xxx9404
attr HM_4xxx94_disarm model HM-RC-Sec4-3


Jeweils einzelf funktioniert...

([Handsender_Er_Key4] =~"Short")
([Handsender_Sie_Key4] =~"Short")


was ich gerne hätte wäre...

([Handsender_.*._Key4] =~"Short")


Vielen lieben Dank und einen friedvollen 2. Advent.

Ellert

Wie ich sehe, möchtest Du Events auswerten, die Syntax ist in der Doku unter Auswerten von Events beschrieben.

Ereignisse passieren, sie sind entweder vorhanden oder nicht, daher ist ein Vergleich, z,B. =~ "short" nicht sinnvoll, du müsstest "short" dann in die Regex mit einbauen.
Im aktuellen Modul gibt es allerdings eine erweiterte Syntax, die aus dem Event einen Ausgabewert ermittelt und diesen zum Vergleich anbietet.

eta1st

Hallo Ellert,
danke für den Rat. Hatte die Erklärung zwar gelesen, aber nicht genug nachgedacht.


define Mob_Handsender_Er CUL_HM 4Axxx6
attr Mob_Handsender_Er IODev CUL1
...
define Mob_Handsender_Er_armInt CUL_HM 4Axxx3
attr Mob_Handsender_Er_armInt model HM-RC-Sec4-3
attr Mob_Handsender_Er_armInt room Mob


Das gleiche gibt es für Sie als

define Mob_Handsender_Sie CUL_HM 4Ayyy6



define Mob_Handsender_Alle_armInt_Short DOIF (["Mob_Handsender_.*_armInt:Short"]) (set Erd_Wohn_Licht_Fenster on-for-timer 300, set Erd_Wohn_RolladenTuerRechts on)
attr Mob_Handsender_Alle_armInt_Short do always
define Mob_Handsender_Alle_armInt_Long DOIF (["Mob_Handsender_.*_armInt:Long"]) (set Erd_Wohn_RolladenTuerRechts off, set .*_Licht_.* off, set .*Climate desired-temp 18.0)
attr Mob_Handsender_Alle_armInt_Long do always


So machen beide Handsender das gleiche. Gleicher Knopf.
Kurz -> Beim Kommen den Rolladen hoch und Licht im Wohnzimmer an.
Lang -> Beim Gehen den Rolladen runter, alle Lichter aus und die Heizung runter.

Viele Grüße und noch einen frohen 2. Weihnachtsfeiertag.