Mehrere Lampen mit mehren HM-LC-Sw1PBU-FM über Structure schalten

Begonnen von Raspi-lars, 07 Oktober 2018, 17:48:31

Vorheriges Thema - Nächstes Thema

Raspi-lars

Hallo Zusammen,
ich habe 2 Terrassenlampen, die jeweils über einen Schalter vom Hausinneren angeschaltet werden. Nun habe ich 1 zusätzliche Lampe im Aussenbereich angebracht, deren Leitung aus der Garage kommt. Damit ich alle Lampen zusammen schalten kann, habe ich die inneren Schalter gegen HM-LC-Sw1PBU-FM Aktoren ausgetauscht und in der Garage einen HM-LC-Sw4-DR-2 Schaltaktor verbaut.
Nun möchte ich, wenn ein Innenschalter betätigt wird, das alle Lampen im Aussenbereich angehen. Also habe ich eine Structure mit den zu schaltenden Geräten erzeugt.
Anschließend habe ich je eine Notify erstellt, die die Aktion des jeweiligen Schalters registriert und die Structure schaltet.
Leider ist es aber so, das ich dadurch wohl eine Schleife erzeugt habe und somit erst die Lampe, dessen Schalter ich betätige angeht und Zeitversetzt die anderen Lampen.
Dann wird die der Aktor, den ich betätigt habe wieder ausgeschaltet und kurze Zeit später der Rest u.s.w. u.s.w.

Hier kurz ein Auszug meiner Notifys:
define n_WZ_Licht_Hinten notify HM_62DCC0 set str_Licht_Terasse_Hi $EVENT
define n_WZ_Licht_Vorne notify HM_62DC7B set str_Licht_Terasse_Vo $EVENT
Und hier die Structure:
define str_Licht_Terasse_Hi structure Licht_TR_HI HM_62DC7B HM_5FF6FD_Sw_01
define str_Licht_Terasse_Vo structure Licht_TR_HI HM_62DCC0 HM_5FF6FD_Sw_01

So richtig ist mir das nicht klar :o

Raspi-lars

Hallo in die Runde,

ich muss das Thema noch einmal aufgreifen.
Da ich 2018 keine Antwort bekommen habe, hatte ich die Sache mit weiteren doifs gelöst. Nun möchte ich aber zusätzlich noch einen Bewegungsmelder mit einbringen. Diesen hatte ich auch mit doif eingebunden.
Nun ist es so, das nach einer Bewegung am Sensor die Lichter erst nach 20-30 Sekunden angehen. Nachdem ich in die Logs geschaut habe, ist mir aufgefallen, das diese durch eine Fehlermeldung aus meinem Notify zugespammt werden, und das ganze sich gegenseitig blockt.
2020.10.16 18:15:39.916 3: n_WZ_Licht_Vorne return value: Unknown argument level:, choose one of peerSmart:HM_4E252B,HM_5065F1_Btn_01,HM_5065F1_Btn_02,HM_50D34F,HM_5640C8,HM_5E0865,HM_5E0DFA,HM_5E0E0F,HM_62652E,HM_650702,HM_654866,HM_65487A,HM_654893,HM_662482_SenF,HM_662482_SenI,HM_662482_SenPwr,HM_662482_SenU,HM_67E7D6,HM_717FEC,VCCU_Btn1 regSet press peerIODev getConfig:noArg regBulk clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all toggle:noArg on-for-timer getRegRaw sign:off,noArg,on on-till on:noArg peerBulk inhibit:off,noArg,on statusRequest:noArg off:noArg
Unknown argument level:, choose one of off:noArg inhibit:off,noArg,on getVersion:noArg getDevInfo:noArg assignHmKey:noArg fwUpdate regBulk getConfig:noArg clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all peerIODev on:noArg toggle:noArg getRegRaw regSet deviceRename statusRequest:noArg peerBulk raw pair:noArg on-till on-for-timer sign:off,noArg,on unpair:noArg peerSmart:HM_4E252B,HM_5065F1_Btn_01,HM_5065F1_Btn_02,HM_50D34F,HM_5640C8,HM_5E0865,HM_5E0DFA,HM_5E0E0F,HM_62652E,HM_650702,HM_654866,HM_65487A,HM_654893,HM_662482_SenF,HM_662482_SenI,HM_662482_SenPwr,HM_662482_SenU,HM_67E7D6,HM_717FEC,VCCU_Btn1 press reset:noArg


Mittlerweile habe ich den Eindruck, das das eine sehr unsaubere Lösung war.

Daher meine Frage, ob es eine bessere Lösung gibt, um mehrere Schalter und mehrere Lichter zusammen zu schalten?

betateilchen

Du musst in Deinem notify die regexp genauer spezifizieren, denn Homematic Geräte liefern jede Menge events, mit denen man überhaupt nichts sinnvolles anfangen kann, wenn man sie in $EVENT übergibt.

Also spezifiziere GENAU, worauf Du triggern willst (z.B. on|off) und alles wird gut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Raspi-lars

Hallo betateilchen,

danke für die Hilfe.
Du hast recht. Ich habe vom Bewegungsmelder ein on-for-timer gesendet. Da kommt die structure wohl nicht mit klar (Oder die Schalter, die dahinter hängen).

Nach etwas Überlegung werde ich wohl doch komplett auf DOIF umsteigen und für jede Lampe das $EVENT weitergeben, das von den Schaltern kommt.

Gruß
Lars

betateilchen

#4
Im vorliegenden Fehlerfall hast Du aber kein "on-for-timer" geschickt, sondern ein "level" (auch ein Event, der bei Homematic Geräten auftritt)

2020.10.16 18:15:39.916 3: n_WZ_Licht_Vorne return value: Unknown argument level:,

Das Schalten von structures funktioniert problemlos, wenn man das notify korrekt anlegt - auch mit Homematic Geräten, ich habe das hier selbst mehrfach im Einsatz.

Zitat von: Raspi-lars am 17 Oktober 2020, 12:29:37
Nach etwas Überlegung werde ich wohl doch komplett auf DOIF umsteigen und für jede Lampe das $EVENT weitergeben, das von den Schaltern kommt.

Wo soll da der Vorteil sein? Das kannst Du genau so auch mit Deinem notify machen.

define n_WZ_Licht_Hinten notify HM_62DCC0:(on|on-for-timer|off).* set str_Licht_Terasse_Hi $EVENT
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#5
Bei mir schaltet ein watchdog über eine structure mit 3 Bewegungsmeldern (alle Homematic) eine structure von 5 Lampen (4 Homematic, 1 Tasmota).

Wenn 30 Minuten lang im Wohnzimmer keine Bewegung registriert wird, wird das Licht über die structure ausgeschaltet. Dabei merkt sich die structure, welche Lampen zu diesem Zeitpunkt angeschaltet waren. Kommt innerhalb der nächsten 60 Minuten wieder jemand ins Wohnzimmer, gehen genau diese "gemerkten" Lampen wieder an, ansonsten wird nach 60 Minuten der Speicher verworfen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Raspi-lars

Zitat von: betateilchen am 17 Oktober 2020, 12:58:07
Bei mir schaltet ein watchdog über eine structure mit 3 Bewegungsmeldern (alle Homematic) eine structure von 5 Lampen (4 Homematic, 1 Tasmota).


Zitat von: betateilchen am 17 Oktober 2020, 12:49:13

Wo soll da der Vorteil sein? Das kannst Du genau so auch mit Deinem notify machen.

define n_WZ_Licht_Hinten notify HM_62DCC0:(on|on-for-timer|off).* set str_Licht_Terasse_Hi $EVENT


Ah, OK. Das werde ich ausprobieren. Ich hatte bislang mein Notify anders aufgebaut. Mir war nicht klar, das man das so benutzen kann. ::)
Danke.

betateilchen

Zitat von: Raspi-lars am 17 Oktober 2020, 18:07:19
Mir war nicht klar, das man das so benutzen kann. ::)

Hast Du überhaupt schonmal die commandref zu notify gelesen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Raspi-lars