Verständnissfrage logische Verknüpfung Bewegenungsmelder und Lichtschalter

Begonnen von sash.sc, 13 Januar 2023, 14:02:58

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Habe gerade ein Brett vorm Kopf.

Ich hqbe 2 Bewegungsmelder und 1 Shelly der das Licht im Bad einschalten soll.

Ein:
1. BWM motion oder 2. BWM motion oder Schalter auf ein dann Licht an.

Das bekommen ich hin

Aus:
1. BWM nomotion oder 2. BWM nomotion oder Schalter "aus" dann Licht aus.

Der Knackpunkt ist, wenn ich den Schalter auf aus schalte, soll das Licht aus bleiben, egal ob einer der BWm auf ein/motion steht.

Sprich der Schalter soll vorrangig behandelt werden !

Hoffe es war verständlich.

Jemand eine Idee wie die Ausbedingung verknüpft werden soll??

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

OdfFhem

Klingt nach: (("BWM1 ein" oder "BMW2 ein") und "Schalter nicht an")

Für die BMWs zählt das Event; für den Schalter nur der aktuelle Zustand.


Im Zweifel wäre die schon geschaffte Definition hilfreich ...

KernSani

Wenn es wirklich der Wunsch ist, dass der Schalter quasi die BWM auf aktiv setzt, dann stimme ich OdfFhem zu. Aber ist das wirklich dein Ziel? D.h. wenn abends jemand (versehentlich/aus Gewohnheit) den Schalter ausmacht, dann musst du wenn du nachts schlaftrunken ins Bad wackelst erst den Schalter finden? Ich frage nur, weil ich selbst so ein Szenario habe (Zigbee Birne hängt an "normalem" Lichtschalter) und ich immer kollosal genervt bin wenn das Licht nicht angeht, weil jemand versehentlich den Schalter gedrückt hat.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

sash.sc

#3



(([BWM_EG_Bad:state] eq "motion" or [BWM_sonoff:state] eq "motion" or [bad_licht:input0] == 1)) (set bad_licht on)
DOELSEIF (([BWM_EG_Bad:state] eq "nomotion") or ([BWM_sonoff:state] eq "nomotion"))  (set bad_licht off)


@KernSani
Wenn der Lichtschalter benutzt wurde um das Licht auszuschalten, dann sollte irgendwann auch die BWM´s wieder einschalten. Der Schalter sollte nur zum vorzeitigen ausschalten benutzt werden, oder wenn längere Auifenthalte im Bad notwendig sind, diese mit dem Schalter verlängert werden bzw die BWM´s "überschrieben" werden !

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

MadMax-FHEM

#4
Also ich habe etwas ähnliches nur irgendwie "andersrum"?

Aufbau:

EnOcean Taster (weil autark ohne Batterie :)  )

EnOcean Aktor (damit dann direkt verbunden werden kann per Funk, also Licht auch ohne fhem an/aus geht)

ZWave Bewegungsmelder (die Fibaro "Augen", weil hübsch und da hier KEINE direkt Verbindung sinnvoll ist war auch kein EnOcean nötig)

Taster ist auch in fhem "erkennbar", also dass dieser betätigt wurde -> wichtig ;)

Wenn ich nix mache, dann schaltet der BWM bei Bewegung ein und bei nomotion wieder aus, also fhem macht das (ich habe im Programm auch 2 aber mir reicht[e] dann doch einer ;)  )...

Schalte ich nun das Licht mit dem Taster ein, dann ist der Automatikmodus aus -> es wird ein Reading gesetzt, wenn über Taster, also sowas wie modus auto/manu

Wenn der BWM motion erkennt bzw. eher nomotion, dann wird nur ausgeschaltet, wenn das Reading modus auf auto steht, ansonsten nicht.
D.h. ich muss dann wieder per Taster ausschalten.
(ist wichtig, wenn mal Besuch kommt oder jemand was länger machen will, ohne, dass sich dauernd bewegt wird/werden muss/müsste)

Wenn ich per Taster ausschalte, dann wird das Reading modus wieder auf auto gestellt und der BWM ist nun wieder dran.
Zusätzlich habe ich eine "Totzeit", also nachdem wieder auf modus auto geschalten wurde ist der BWM erst nach so 10s wieder aktiv/führend (bis dahin werden Bewegungen "ignoriert"), damit ich nach/beim Ausschalten noch Gelegenheit habe ohne, dass das Licht automatisch angeht, ich den Raum verlassen kann...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KernSani

Ich denke, du musst Schalter Zustand und Event getrennt auswerten:
a) Wenn Bewegung (BWM1 OR BWM2) AND Schalter an --> Schalter nur auswerten ([?bad_licht:input0] == 1) --> Licht an
b) Wenn keine Bewegung mehr erkannt wird (BWM1 AND BWM2 = nomotion) --> Licht aus (unabhängig von Schalter)
c) Wenn Schalter an, dann Licht an
d) Wenn Schlater aus dann Licht aus (+wait um Schalter wieder einzuschalten)

ggf. bei b) noch die Bedingung, dass der Schalter (wieder nur auswerten) auf 0 stehen muss, dass die BWMs das Licht ausschalten dürfen.   

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

betateilchen

Ich hab sowas ähnliches für meine Flurbeleuchtung.

Da wird im Regelbetrieb das Licht über zwei Homematic Bewegungsmelder (in einer structure) eingeschaltet (on-for-timer, Bewegungsmelder können also nachtriggern) Zusätzlich gibt es noch zwei Installations-Taster, über den das Licht an/ausgeschaltet werden kann (Homematic Hutschienenaktor)

Und dann gibt es noch einen Taster (freier Tastkanal eines der beiden Bewegungsmelder) mit dem ich die ganze Logik außer Betrieb setzen kann.

  • Taster lang drücken: das notify, das die Beweungsmelder auswertet wird auf "disable" gesetzt, das Flurlicht geht auf Dauer-AN
  • Taster kurz drücken: das notify wird wieder aktiviert, das Flurlicht wird ausgeschaltet

Das Ganze habe ich damals gebaut, um die "Lichtorgel" zu verhindern, die ansonsten stattfände, wenn beispielsweise die Putzfrau im Dienst ist und durch den Flur hin und her läuft. Das Ganze funktioniert seit über 5 Jahren völlig problemlos.

Achso, nochwas: Das notify für die Bewegungsmelder wird von 23:00 - 05:00 Uhr per "disabledForIntervals" deaktiviert. Wenn man mitten in der Nacht ins Bad muss (glücklicherweise direkt die Tür nebenan) trifft es einen wie ein Faustschlag, wenn in dem Moment die flutlichtähnliche Beleuchtung im Flur angeht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sash.sc



(([BWM_EG_Bad:state] eq "motion" or [BWM_sonoff:state] eq "motion" or [bad_licht:input0] == 1)) (set bad_licht on)
DOELSEIF (([bad_licht:input0] == 1)) (set bad_licht on)
DOELSEIF (([BWM_EG_Bad:state] eq "nomotion") or ([BWM_sonoff:state] eq "nomotion")) (set bad_licht off)
DOELSEIF (([bad_licht:input0] == 0)) (set bad_licht off)


Habe es jetzt mal so gemacht und werde testen !
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

OdfFhem

#8
Zitat von: KernSani am 13 Januar 2023, 15:46:38
Wenn es wirklich der Wunsch ist, dass der Schalter quasi die BWM auf aktiv setzt, dann stimme ich OdfFhem zu.
Begriff "ein" stammt aus "ein/motion" aus Hauptbeitrag ... bedeutet also eher "motion" ... leider falsche Kurzform gewählt ... im Endeffekt ist es nahe an a) von KernSani ...

@sash.sc
Auf die gewählte Art gilt:
- das erste DOELSEIF wird nie zur Ausführung kommen
- die Bewegungsmelder schalten komplett unabhängig vom Schalter das Licht an

sash.sc

Habe schon gemerkt das es so nicht passt.

habe da noch was geändert! Sieht im Moment so aus.




(([bad_licht:input0] == 0)) (set bad_licht off)
DOELSEIF (([bad_licht:input0] == 1)) (set bad_licht on)
DOELSEIF ([BWM_EG_Bad:state] eq "motion" or [BWM_sonoff:state] eq "motion" or [bad_licht:input0] == 1) (set bad_licht on)
DOELSEIF (([BWM_EG_Bad:state] eq "nomotion") or ([BWM_sonoff:state] eq "nomotion")) (set bad_licht off)


habe noch das attr wait 0:0:0:180 und do resetwait gesetzt

Scheint bis jetzt zu funktionieren. Mal schauen was der Rest der Familie sagt ! ;-)

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Per

Den 2. Fall kannst du weglassen, der ist im dritten schon drin.
Dein Problem ist, wenn der Taster Vorrang hat, brauchst du keine BWM, weil er immer irgendeine Stellung hat.
Ich hatte das damals so gelöst (schematisch):
DOIF ([Taster] == on) (set Licht on) () (set Licht off)
DOELSEIF ([Taster] == off) (set Licht off) ()
DOELSEIF ([BWM] == on and [?$SELF.cmd_seqnr] > 1) (set Licht on)()
DOELSEIF ([BWM] == off and  [?$SELF.cmd_seqnr] > 1) (set Licht off)()
wait 0,3600,7200:0,3600:0,0:0,0

Nach einer Stunde verlor der Schalter seinen Vorrang, nach zwei weiteren wurde ausgeschaltet. Zeiten sind natürlich beliebig anzupassen.
Dazu muss ich aber sagen, dass es bei mir ein Türkontakt war, der natürlich nur beim Umschalten einen Event auslöste.

sash.sc

So. Es hatte teilweise nicht so funktioniert wie es sollte. habe mir dann nochmal eure Antworten durchgelesen.
Habe es jetzt so gelöst, wenn der Schalter manuell betätigt wird, wird der BWM im bad auf inaktiv gesetzt (disable 1). Wenn Lichtschalter aus, dann Licht aus und der BWM wieder auf aktiv gesetzt (disable 0).
Es ist auch noch ein Lichtsensor eingebaut, dass wirklich nur wenn es zu dunkel wird, das Licht über BWM eingeschaltet wird. Selbst Wenn tagsüber eine Bewegung erkannt wird und es zu hell ist, bleibt das Licht aus.



Mal schauen.....

([bad_licht:input0] == 0) (set bad_licht off) (attr BWM_EG_Bad disable 0)
DOELSEIF ([bad_licht:input0] == 1) (set bad_licht on) (attr BWM_EG_Bad disable 1)
DOELSEIF (([BWM_EG_Bad:occupancy] eq "true" or [bad_licht:input0] == 1) and [ls.Bad_EG:illuminance] < 8000 ) (set bad_licht on)
DOELSEIF ([BWM_EG_Bad:occupancy] eq "false") (set bad_licht off)

 
attr wait 0,10:0,0:0:180

Gruß und danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb