Hallo zusammen,
nach meinem Umzug habe ich größtenteils auf Homematic Komponenten gesetzt.
In jedem Zimmer ist nun mindestens eine HM-PB-6-WM55.
Ebenfalls habe ich jedem Zimmer
1x Squeezee Player
1x Hue Structure
1x Rolladen Structure.
1x HM Aktor für Licht.
Nun habe ich angefangen für einen Raum die Notifys für meine 6 fach Taster zu schreiben. Dies gelingt mir auch wie geplant. (Grundfunktion von Notifys ist verstanden :o )
Wenn ich nun hochrechne, müsste ich 12 Notifys für jeden Raum schreiben. Ich habe 6 HM Taster, heißt ich müsste in Summe 72 Notifies schreiben, was ich sehr unübersichtlich und chaotisch finde.
Meine Idee/ Wunsch wäre ein Notify das wie folgt aussieht.
"wenn 6Fachtaster_{RAUMX} short dann set aktor_{RAUMX} on"
Das würde voraussetzen, dass jeder Device, z.b. ein Homematic Aktor für Licht: HM_Light_RAUMX heißt. Ich würde aber statt 72 Notifies nur noch 12 haben.
Bevor ich mir die Mühe mache und mir eine generische Namengebung ausdenke, würde ich gerne eure Erfahrung/ Tipps hierfür erfragen.
Gibt es hier Member, die eine ähnliche Umsetzung haben und mir Schlagwörter nennen können, mit denen ich mich bei der Planung auseinander setzen sollte?
Vielen Dank allen zusammen.
Grüße b0bic
ich habe mehrere Schalter die das gleiche schalten. da habe ich das notify so gelöst:
Internals:
DEF .*_Schalter_Btn_01:Short.* set Schuppenlicht on; attr Frostaus disable 1
FUUID 5c42d7cb-f33f-7531-435f-050e13b5199b75d6
NAME Schuppen_on
NR 243
NTFY_ORDER 50-Schuppen_on
REGEXP .*_Schalter_Btn_01:Short.*
STATE active
TYPE notify
READINGS:
2019-01-28 13:36:53 state active
Attributes:
Die Schalter heißen Wohnzimmer_Schalter, Keller_Schalter
Hi,
zunächst würde ich die wichtigen Hm Aktoren mit den entsprechenden Tasten peeren. Dann geht Licht auch falls FHEM tot. :D
Wenn Du das so sehr generalisieren möchtest, dann helfen:
- zum Einen Namen: Licht01 Licht02 Licht12 usw -> set Licht.* off (mach alle Lichter aus)
Bestimmte Namenswahl macht das regExp einfacher. - zum Anderen könntest Du ein notify mit entsprechendem regExp für alle Taster machen und dann in einer Sub (in der 99_myUtils.pm) die Fallunterscheidung machen: welche Taste schaltet was.
Gruß Otto
Es gibt immer eine Ladung Möglichkeiten, sowas umzusetzen...
Auf die Schnelle noch neben der Namenskonvention/regex (kann man z.B. auch wie hier (https://forum.fhem.de/index.php/topic,89136.msg895247.html#msg895247) auswerten) zwei weitere Varianten:
- anders aus dem $NAME ableiten (z.B. AttrVal+room) nutzen oder
- das Zieldevice mit einem Filter ableiten:
Bei mir gibt's sowas z.B. bei der Anwesenheitserkennung; Beispielcode:
define rr_xn_MAC_Check notify Fritzbox:mac_.*:.* {if ($EVTPART1 eq "inactive") {\
fhem("set TYPE=dummy:FILTER=smartphone_MAC=$EVTPART0 smartphone absent");;\
}\
else {\
fhem("set TYPE=dummy:FILTER=smartphone_MAC=$EVTPART0 smartphone present");;\
}\
}
Dabei wird an den diversen "Anwesenheitsdummys", die mehrere Readings in einer ReadingsList definiert haben, eben das Reading "smartphone" auf an- bzw. abwesend gesetzt, aber eben nur, wenn der Readinginhalt mit dem Event (-teil) paßt. Es laufen also alle alle entsprechenden Infos aus der Fritzbox über dasselbe notify, das dann weiterverteilt und ggf. "in Kette" weitere notify auslöst.
Zitatwenn 6Fachtaster_{RAUMX} short dann set aktor_{RAUMX} on
6Fachtaster_{RAUMX} wäre die Variable $NAME.
Daraus läßt sich sicher {RAUMX} herauslösen und in den Befehlsstring einsetzen. Das Prinzip habe ich bei einigen notify.
define noti_wildcard notify hm_pb_[1-6]:.*(long|short) {
# some perl funcions
# $EVENT and $NAME is your playpartner
}
sollte eigentlich funktionieren, wenn die Schalter hm_pb_1 bis 6 genannt wurden