Zwei Bewegungsmelder sollen eine Lampe schalten - Wie löst man das?

Begonnen von LastOne, 26 September 2020, 17:05:33

Vorheriges Thema - Nächstes Thema

LastOne

Hallo zusammen,

ich bin immer noch ganz am Anfang mit FHEM. Geräte einbinden schaffe ich langsam. Bedienen kann man sie auch. Nun habe ich folgendes vor:

-Zwei Bewegungsmelder (Aqara via ConBee2)
-ein Shelly 1

Wenn einer der beiden nun Bewegung entdeckt, soll der Schalter eingeschaltet werden (hängt ne Lampe dran)
Wenn beide über X Minuten keine Bewegung entdecken, Shelly aus

Geräte sind im FHEM angelegt. Würde den Shelly auch noch via Lichtschalter / HomeKit bedienen können ohne das FHEM dann zwischen grätscht wenn Licht mit Absicht an.

Was nutzt man nun dafür? Notify? DoIf? Und wie würde so etwas in etwa aussehen? Hab schon ins Wiki geschaut. Bisher sehe ich aber nur Bäume, keinen Wald.

Freue mich über alle Tips und Hilfen

rischbiter123

Moin,
ich habe es z.B. so gelöst:
Je ein notify auf die Bewegungsmelder

defmod Flurbewegung_1 notify BewegungFlur:occupancy:.* {Flurbeleuchtung ($hour);;}
defmod Flurbewegung_2 notify BewegungVorflur:occupancy:.* {Flurbeleuchtung ($hour);;}

und dann die Lichtsteuerung in 99_myUtils

sub Flurbeleuchtung ($) {
my ($hour) = @_;
my $A1 = ReadingsVal("BewegungFlur","occupancy",0);
my $A2 = ReadingsNum("BewegungFlur","illuminance",0);
my $B1 = ReadingsVal("BewegungVorflur","occupancy",0);
my $B2 = ReadingsNum("BewegungVorflur","illuminance",0);
my $C1 = ReadingsVal("Flurlampe","state",0);
my $D1 = ReadingsVal("Bright","state",5);

if ($hour >= 8 and $hour < 17)
{
if ($A1 eq "false" and $C1 eq "ON")
{
fhem( "set Flurlampe off" );
}
}
else
{
if ($A1 eq "true" and $A2 < 10 and $C1 eq "OFF")
{
fhem( "set Flurlampe brightness $D1" );
}
elsif ($B1 eq "true" and $A2 < 10 and $C1 eq "OFF")
{
fhem( "set Flurlampe brightness $D1" );
}
elsif ($B1 eq "false" and $A1 eq "false" and $C1 eq "ON")
{
fhem( "set Flurlampe off" );
}
};

}

Ist jetzt wahrscheinlich etwas oversized für deinen Anwendungsfall, da ich das Leuchtmittel direkt und in Abhängigkeit der Tageszeit schalte, aber vielleicht hilft es als Anregung.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

MadMax-FHEM

#2
@rischbiter123:
Da würde auch ein notify gehen ;)


defmod Flurbewegung notify Bewegung.*lur:occupancy:.* {Flurbeleuchtung ($hour);;}


@LastOne:

Aber ja im Prinzip so bzw. einfacher (sofern Shelly on-for-timer kennt):


defmod nLicht notify BewegungsMelder.*:motion set Licht on-for-timer 60


Sollten die Bewegungsmelder z.B. BewegungsMelder1 und BewegungsMelder2 heißen und bei Bewegung ein "motion" Event "feuern" und du eine max. Zeit nach Bewegung von 60s haben willst (alles nur Beispiel!!).

Aber das löst nicht das "Problem" der manuellen Betätigung!

D.h. dafür musst du sehen, ob das erkennbar ist...

EDIT: ich habe EnOcean Taster, da kann ich "nachsehen", ob diese (kürzlich) ausgelöst wurden, das Licht also manuell geschalten wurde und falls ja, wird der Bewegungsmelder "ignoriert"...

Anlegen von notify geht am besten mit dem Eventmonitor: https://wiki.fhem.de/wiki/Event_monitor

Und wie du siehst: bei guter Namenswahl kann man notify "einsparen" und auch sonst "generisch" "programmieren"...

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)

Otto123

Hi,

das geht auch mit einem notify :)
define Flurbewegung notify BewegungFlur:occupancy:.*|BewegungVorflur:occupancy:.* {Flurbeleuchtung ($hour)}

Den Shelly (wie ist der eingebunden) kannst Du mit on-for-timer für eine Zeit steuern.
Du kannst den Shelly vorher abfragen ob schon on, dann schickst Du keinen on-for-timer, damit bleibt er wie er ist. Geht mit if oder auch mit einem FILTER (set Lampe:FILTER=state=off on-for-timer 300).

Edit: da war ich langsamer als Joachim ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rischbiter123

[OT]
hatte ich auch ursprünglich, gab aber irgendwie Probleme beim Schalten, wenn man zu schnell die Erfassungsbereiche durchschritten hatte. Läuft aber seit einem Jahr, weiß also nicht mehr genau, was das genaue Problem war.
[OT Ende]
LG
Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Prof. Dr. Peter Henning

In den SmartHome Hacks habe ich verschiedene einfache Zustandsautomaten beschrieben, das ist der beste Weg, so etwas umzusetzen. Die entsprechenden Seiten stehen auch irgendwor hier im Forum als PDF herum.

LG

pah


MadMax-FHEM

@Otto: mal gewinnt man und mal verliert der Andere... ;)

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)

LastOne

Wow, erst mal Danke für die vielen Antworten. Das is echt toll  :)

Ich versuche noch immer den Code zu verstehen, ich hab durch den Hinweis auf den Event-Monitor nun gemerkt das ich zwar die Geräte angelegt habe. Aber scheinbar nicht korrekt / vollständig da die Bewegung nicht in Fhem ankommt. Also das sind meine drei Geräte.

Kellertreppe:
Internals:
   CFGFN     
   DEF        sensor 7  IODev=deCONZ
   FUUID      5f704083-f33f-ac26-b1ae-adae33bea764295d
   FVERSION   31_HUEDevice.pm:0.218370/2020-05-02
   ID         S7
   INTERVAL   
   IODev      deCONZ
   NAME       Bewegungsmelder_Kellertreppe
   NR         54
   STATE      nomotion
   TYPE       HUEDevice
   lastupdated 2020-09-27 06:59:28
   lastupdated_local 2020-09-27 08:59:28
   manufacturername LUMI
   modelid    lumi.sensor_motion.aq2
   name       Bewegungsmelder_Kellertreppe
   on         1
   reachable  1
   swversion  20170627
   type       ZHAPresence
   uniqueid   00:15:8d:00:04:4d:35:f9-01-0406
   READINGS:
     2020-09-27 08:59:28   battery         100
     2020-09-27 08:59:28   batteryPercent  100
     2020-09-27 08:59:28   reachable       1
     2020-09-27 08:59:28   state           nomotion
     2020-09-27 08:59:28   temperature     21
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     json:
       ep         1
       etag       f5bef13762102c787866fb04c5d0f088
       lastseen   2020-09-27T06:59:28.739
       manufacturername LUMI
       modelid    lumi.sensor_motion.aq2
       name       Bewegungsmelder_Kellertreppe
       swversion  20170627
       type       ZHAPresence
       uniqueid   00:15:8d:00:04:4d:35:f9-01-0406
       config:
         battery    100
         duration   90
         temperature 2100
       state:
         lastupdated 2020-09-27T06:59:28.239
     setList:
Attributes:
   IODev      deCONZ
   model      lumi.sensor_motion.aq2
   room       Keller


Kellerflur
Internals:
   CFGFN     
   DEF        sensor 6  IODev=deCONZ
   FUUID      5f70413f-f33f-ac26-8fbe-a46a1489aeee85e3
   FVERSION   31_HUEDevice.pm:0.218370/2020-05-02
   ID         S6
   INTERVAL   
   IODev      deCONZ
   NAME       Bewegungsmelder_Kellerflur
   NR         60
   STATE      nomotion
   TYPE       HUEDevice
   lastupdated 2020-09-27 07:17:45
   lastupdated_local 2020-09-27 09:17:45
   manufacturername LUMI
   modelid    lumi.sensor_motion.aq2
   name       Bewegungsmelder_Kellerflur
   on         1
   reachable  1
   swversion  20170627
   type       ZHAPresence
   uniqueid   00:15:8d:00:05:3f:9d:76-01-0406
   READINGS:
     2020-09-27 09:17:45   battery         100
     2020-09-27 09:17:45   batteryPercent  100
     2020-09-27 09:17:45   reachable       1
     2020-09-27 09:17:45   state           nomotion
     2020-09-27 09:17:45   temperature     24
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     json:
       ep         1
       etag       fcd06016e790bf9b1ddab356aaa01471
       lastseen   2020-09-27T07:17:46.441
       manufacturername LUMI
       modelid    lumi.sensor_motion.aq2
       name       Bewegungsmelder_Kellerflur
       swversion  20170627
       type       ZHAPresence
       uniqueid   00:15:8d:00:05:3f:9d:76-01-0406
       config:
         battery    100
         duration   90
         temperature 2400
       state:
         lastupdated 2020-09-27T07:17:45.942
     setList:
Attributes:
   IODev      deCONZ
   model      lumi.sensor_motion.aq2
   room       Keller


Schalter
Internals:
   DEF        192.168.1.70
   DURATION   0
   FUUID      5f6f1980-f33f-ac26-f520-9764282e1c4a4b1c
   INTERVAL   60
   NAME       Schalter_Kellertreppe
   NR         30
   STATE      off
   TCPIP      192.168.1.70
   TYPE       Shelly
   READINGS:
     2020-09-26 12:35:44   cloud           disabled
     2020-09-26 12:35:44   firmware        v1.8.3
     2020-09-27 03:14:10   network         <html>connected to <a href="http://192.168.1.70">192.168.1.70</a></html>
     2020-09-27 09:46:09   relay           off
     2020-09-27 09:46:09   state           off
Attributes:
   model      shelly1
   room       Keller


Passen die erst mal soweit? Irgendwo muss ja noch ein Fehler sein.

Otto123

Was meinst Du jetzt damit? Du bekommst keine Events bei Bewegung?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

LastOne

Na ja. Müsste der Event Monitor nicht etwas anzeigen, sobald der Sensor Bewegung erkennt? Der Event Monitor ist einfach leer

Otto123

#10
Er zeigt überhaupt keine Events an? Von keinem Gerät? Da ist was "kaputt".
Such mal hier im Forum, da gab es immer mal was. Browser, Virenscanner kommt da als Ursache in Frage.
https://wiki.fhem.de/wiki/Event_monitor#Bekannte_Probleme

Falls das Problem nicht trivial ist, kannst Du auch mal ein notify mit Log Ausgabe zur Kontrolle anlegen.
https://wiki.fhem.de/wiki/Notify
define Kellerbewegung notify Bewegungsmelder_Kellertreppe:.*|Bewegungsmelder_Kellerflur:.* {Log 1, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT"}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

LastOne

Ich versuche immer noch, den Code sauber zu verstehen:

defmod nLicht notify BewegungsMelder.*:motion set Licht on-for-timer 60

Der part würde für mich reichen?

nLicht = Name des Notify?
BewegungsMelder = name des bewegungsmelder / device?
motion = ? ist das immer motion als ergebnis oder was anderes?
Licht = Shelly name?

MadMax-FHEM

Zitat von: LastOne am 29 September 2020, 10:50:15
Ich versuche immer noch, den Code sauber zu verstehen:

defmod nLicht notify BewegungsMelder.*:motion set Licht on-for-timer 60

Der part würde für mich reichen?

nLicht = Name des Notify?
BewegungsMelder = name des bewegungsmelder / device?
motion = ? ist das immer motion als ergebnis oder was anderes?
Licht = Shelly name?

Fast. ;)

motion ist der Event(inhalt) vom Device Bewegungsmelder.

D.h. das notify (namens nLicht ;)  ) "reagiert" wenn das Device Bewegungsmelder einen Event mit "Inhalt" motion "verschickt"...

EDIT: einfach mal den Eventmonitor öffnen (optional: Filter auf den Bewegungsmelder setzen) und dann eben "Bewegung auslösen" und schauen was dort kommt... ;)

Und dann wird der "Befehl": set Licht on-for-timer 60 "ausgeführt"...

Licht: name des Devices was "geschalten" werden soll

on-for-timer 60: es soll für (weitere) 60 Sekunden angehen(bleiben)

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)

betateilchen

Ich habe mehrere Bewegungsmelder zu einer structure zusammengefaßt und reagiere mit EINEM notify auf den jeweiligen Zustand der structure. Sobald irgendein Bewegungsmelder eine Aktivität registriert, gibt es auch events in der structure.

die structure aus zwei Bewegungsmeldern (Homematic):


defmod st_fl_PIR_Motion structure fl_PIR1_Motion fl_PIR1_Motion fl_PIR2_Motion
attr st_fl_PIR_Motion clientstate_behavior absolute


das zugehörige notify, das eine Funktion in meiner 99_myUtils.pm aufruft:


defmod n_st_fl_PIR notify st_fl_PIR_Motion:(undefined|motion|noMotion) {myRemote($NAME,$EVTPART0)}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Zitat von: LastOne am 29 September 2020, 10:50:15
Ich versuche immer noch, den Code sauber zu verstehen:
Es ist ungeheuer hilfreich dies im Eventmonitor zu sehen. Funktioniert der denn nun? Ist aus meiner Sicht grundlegend wichtig!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz