Bewegungsmelder, notify, DOIF...oder was

Begonnen von trs, 13 Juli 2018, 16:41:11

Vorheriges Thema - Nächstes Thema

Razor

Hallo, ich habe diese Lösung nun auch erfolgreich implementiert :)
define di_WCLicht DOIF ([Motion4Sensor:"motion.*"] and ([Lichtwetter:twilight_weather] <83)) (set WCLicht on)(set WCLicht off)
setuuid di_WCLicht 5c80129c-f33f-6e90-1f2b-ec4c4bc8100564a8
attr di_WCLicht comment https://forum.fhem.de/index.php/topic,89362.0/topicseen.html#ratethis
attr di_WCLicht devStateIcon cmd_1:10px-kreis-gruen cmd_1_1:10px-kreis-gelb disabled:10px-kreis-rot
attr di_WCLicht do resetwait
attr di_WCLicht group 05_Licht_04_WC
attr di_WCLicht icon icoUhr
attr di_WCLicht room 04_WC
attr di_WCLicht wait 0,122


Nun eine Frage: Wenn ich den Lichtschalter manuell betätige, ist der Timer ja nicht aktiv und das Licht bleibt an, was ein Future oder ein Bug sein kann, je nach Sicht der Dinge.
Wie kriege ich das manuelle anschalten da mit rein, so dass auch dann das Licht wieder ausgeht?

Otto123

nicht probiert!
Bedingung ergänzen um den Lichtschalter und das DOIF damit zus. triggern:
(([Motion4Sensor:"motion.*"] or [WCLicht:"on"]) and ([Lichtwetter:twilight_weather] <83))
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

Razor

Wow das geht ja fix, lieben Dank, probiere ich aus  :)

Razor

Test:
Lichtschalter ON per Fhem, nomotion
-->Licht geht aus nach 121s
Lichtschalter ON am Schalter, nomotion
-->Licht geht aus nach 121s
Lichtschalter on per motion
-->Licht geht nach letzten Triggermotion nach 12s wieder aus.

Vielen lieben Dank :D :D :D

leachim200

Hallo
Ich weiß das thema ist schon älter ich hab die Lösung von Otto umgesetzt bekommen funktioniert sehr gut.
Jetzt habe ich noch eine zusätzliche Idee die mir im Kopf schwirrt. Wenn ich beispielsweise im Wohnzimmer vor dem Fernseher sitze und mich nicht bewege würde der Bewegungsmelder ja irgendwann sagen ok da ist keiner also licht aus.
Gibt es eine möglichkeit zu sagen Wenn Bewegung=erkannt und TV=ON dann starte keinen Timer sondern warte bis TV=OFF?

Das kann man sicher mit einem DOIF lösen ich komme nur gerade nicht darauf wie :/

Pfriemler

Das letzte hier erwähnte DOIF trigger auf Bewegung (!) und schaltet das Licht ein und verzögert wieder aus. Tritt in der Verzögerungszeit eine erneute Bewegung auf, wird der Timer zurückgesetzt.
Es gibt also keinen Trigger auf Nichtbewegung.
a) Du könntest TV=ON als zusätzliche Bedingung in den Triggerzweig aufnehmen. Dann musst Du das Licht aber beim Fernsehen nach Ablauf des DOIF-Verzögerung und erfolgtem Auschalten noch einmal manuell eingeschaltet haben, weil das Retriggern entfällt, sobald TV=ON ist.
b) Du könntest das "set ... off" noch einmal an die Bedingung TV=OFF koppeln. Dann wird das DOIF weiterhin regelmäßig getriggert, sobald eine Bewegung stattgefunden hat, aber es erfolgt keine Ausschaltung. Nach dem Ausschalten des Fernsehers würde die erste erkannte Bewegung wiederum das DOIF triggern und das Licht dann ausgehen. Solange sich nach dem Ausschalten des TV keiner im Zimmer regt, bliebe das Licht jedoch an...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

Schräge Idee: den TV eq "ON" mit in die Bedingung, und dafür sorgen das der TV regelmäßig einen Event sendet (120 sec) also mal ausnahmsweise nicht eocr .*

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

Damian

Man könnte ausprobieren:
DOIF ([BM:"motion"] and [?TV:state] eq "off") (set lampe on)(set lampe off)
DOELSEIF ([BM:"motion"] and [?TV:state] eq "on" and $cmd != 2) (set lampe on)
DOELSEIF ([TV:"on"]) (set lampe on)
DOELSEIF ([TV:"off"]) (set lampe off)

attr do resetwait
attr wait 0,300:0:0:10


Helligkeit wurde hier nicht berücksichtigt, ließe sich aber mit and verknüpfen (ggf. über DOIF_Readings)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

leachim200

#23
Hallo und Vielen dank für eure Inputts
Im laufe des Tüftelns bin ich dahinter gekommen, dass ich eine Einstellung etwas anders haben möchte als die Bei Otto

Folgende Punkte habe ich versucht zu berücksichtigen für den Wintergarten (Flur):
1) BW= Motion set Lampe on
2) BW = Motion Lampe bleibt an.
3) BW = Nomotion starte Timer für 60 sek dann set Lampe off

Folgende Punkte habe ich versucht zu berücksichtigen für das Wohnzimmer. Hier ist noch eine gedankliche Änderung zu berücksichtigen da hier der Fernseher steht und wir wenn es zu dunkel ist gerne das Licht brennen haben:
1) BW= Motion set Lampe on
2) BW = Motion Lampe bleibt an.
3) BW = Nomotion und TV off starte Timer für 60 sek dann set Lampe off
4) BW = Nomotion und TV on mache nichts

Ich habe dies nun mit folgendem Code gelöst
DOIF ([WetterLicht:state] eq "motion" and [?WetterLicht:light] < 50 ) (set TestLampe on)
DOELSEIF ([WetterLicht:state] eq "nomotion" and ([DummyTV:state] eq "on" )) ({Log 3, "Wintergartenlicht gesperrt"})
DOELSEIF ([WetterLicht:state] eq "nomotion" and ([DummyTV:state] eq "off")) (set TestLampe off)

attr do resetwait
attr wait 0:0:120


Ich würde mich über Feedback freuen ob man noch etwas verbessern oder schöner machen kann (Die Devices sind Test Devices daher auch die komischen Namen)
lg michi

Dreggwatz

Hallo zusammen,
eigentlich funktioniert Ottos code bei mir, lediglich die technische Umsetzung stört den Prozess.
Es kommt vor, dass der Befehl "on" bei meinen Aktoren nicht ankommt (WLAN Störungen). Dann steht das DOIF trotzdem im cmd1_1 für die vorgegeben 180s aber das Licht geht nicht ein. Auch wenn motion neu getriggert wird, verlängert sich die Zeit durch wait und das Licht bleibt trotzdem aus.
Ich bräuchte jetzt eine Funktion die überprüft ob die Aktoren auch wirklich ein sind und wenn nicht das DOIF wieder resettet damit erneutes triggern das Licht einschaltet.

Danke für Eure Ideen.


(([BM.EG_Flur] eq "motion" or [TK.EG_Eingang] eq "open") and [myTL:twilight_weather] <70)(set SY1.EG_Eingang on, set SY1.EG_Flur on)

Attributes:
   alias      di_BM.EG_Eingang
   devStateIcon cmd_1_1:clock cmd_1:control_standby@green disabled:general_aus@red
   do         resetwait
   icon       clock
   room       Licht
   wait       0,180

amenomade

Was mich in deinem DOIF stört: twilight_weather triggert auch das DOIF und damit auch das resetwait. Wie oft meldet sich myTL?

Wegen deiner Frage: wenn schon ein erneuertes "motion" das Licht immer noch nicht anmacht, hast Du wirklich ein Funk-Problem und ich würde die Ursache davon erstmal versuchen zu beseitigen.

Wenn es unbedingt nur sofwaremässig sein soll, dann machst Du ein 2. DOIF ([di_BM.EG_Eingang:state] eq "cmd1_1") (set EG_Eingang on) DOELSE mit Attribut repeatcmd zur beliebigen Wiederholung des Befehls.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

Hallo Dreggwatz,

den Code versteh ich gar nicht. Da schaltet doch keiner aus? Du schaltest ein und wartest 180s - das ist doch völlig sinnfrei?

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

Dreggwatz

@Otto, Bedienerfehler - hatte nicht alles kopiert...


(([BM.EG_Flur] eq "motion" or [TK.EG_Eingang] eq "open") and [myTL:twilight_weather] <70)(set SY1.EG_Eingang on, set SY1.EG_Flur on)
(set SY1.EG_Eingang off, set SY1.EG_Flur off)



@amenomade danke. werde wohl mit der Softwarelösung zurecht kommen müssen. Die aktoren sind wifi und der bewegungsmelder HM. Und ich sehe das Verbindungsprobleme auftauchen. Mit myTL muss ich mir ansehen, aber das cmd1_1 kommt eigentlich ja <70

Brad Majors

Hat jemand eine Idee warum der doif in Verwendung mit dem Sunset nicht funktioniert

([{sunset("HORIZON=2.0")}]-[23:59:00] and [HUESensor1:dark] eq "1" and [HUESensor4:state] eq "motion")
  (set Hue_Lightscene_1 scene Mitte_Oben_99)
  DOELSE
  (set Hue_Lightscene_1 scene Mitte_Oben_25)


Der gleiche mit einer einfachen Zeitangabe funktioniert.

([17:00-23:59] and [HUESensor1:dark] eq "1" and [HUESensor4:state] eq "motion")
  (set Hue_Lightscene_1 scene Mitte_Oben_99)
  DOELSE
  (set Hue_Lightscene_1 scene Mitte_Oben_25)


Ich hätte aber gerne das der erst dann die Lampen über den Bewegungsmelder schaltet wenn es auch dunkel ist :).
Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

Otto123

Hi,

das hier ist Unfug: [{sunset("HORIZON=2.0")}]-[23:59:00]

Sollte so aussehen [{sunset("HORIZON=2.0")} - 23:59:00]

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