Einfache Lichtsteuerung mit Bewegungsmeldung

Begonnen von Petrocelli63, 27 November 2018, 07:05:26

Vorheriges Thema - Nächstes Thema

Petrocelli63

Ich habe folgendes Problem:
Ich möchte bei einer Bewegungserkennung mein Licht für einen gewissen Zeitraum einschalten, aber nur, wenn das Licht nicht bereits manuell eingeschaltet wurde. Der Hintergrund ist, wenn ich ruhig sitze, geht das Licht sonst nach meiner vordefinierten Zeit aus. Daher möchte ich es auch manuell einschalten können. Wie kann ich sowas einfach regeln? Desweiteren kann ich mir nicht erklären, warum ReadingsVal funktioniert aber Value("Kueche") nicht.

Mein Code bisher:
Bewegungsmelder4:on {
  if (Value("Tageslicht") eq "dunkel") {
     if (ReadingsVal("Kueche","Relay","") eq "off") { fhem ("set Kueche on-for-timer 180");}
  }
}

darkness

Guten Morgen,

ich weiß nicht, ob man hier evtl. mit Filter arbeiten könnte. So im Sinne von

set Kueche:FILTER=STATE=off on-for-timer 180 nicht getestet.

wie sieht denn dass device kueche aus? evtl. mal ein list davon. Mit Value kannst du das Reading state abfragen.

Gruß

MadMax-FHEM

#2
Äh, nur für's Verständnis: dein Problem ist aber doch nicht das Einschalten, oder?

Sondern das automatische Ausschalten?
(das wird dadurch aber vermutlich nicht verhindert oder? Bzw. hast du vermutlich nur die halbe Logik gepostet!?)

Aber egal: Value geht soweit ich weiß auf "state" bei deinem Gerät Kueche "interessiert" dich aber nicht "state" sondern eben das Reading "Relay" das geht dann halt nicht mit Value sondern nur mit ReadingsVal.

Du kannst auch, wenn du nicht drüber nachdenken oder "mischen" willst einfach immer ReadingsVal (bzw. ReadingsNum wenn du nur einen Zahlenwert willst [auch wenn andere Zeichen z.B. Einheiten mit drin stehen]) nehmen.

Value("Gerät") entspricht ReadingsVal("Gerät", "state", "ErsatzWert")

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)

darkness

#3
Ich dachte es ging um das Problem Licht ist bereits angeschaltet und wenn dann der Bewegungsmelder eine Bewegung erkennt wird das Licht nochmals geschaltet und geht dann aus. Dann sitzt man im dunkeln  :D

MadMax-FHEM

Zitat von: darkness am 27 November 2018, 11:05:03
Ich dachte es ging um das Problem Licht ist bereits angeschaltet und wenn dann der Bewegungsmelder eine Bewegung erkennt wird das Licht nochmals geschaltet und geht dann aus. Dann sitzt man im dunkeln  :D

Ah ja, er nutzt on-for-timer...
...hatte ich "übersehen" ;)

Damit schaltet nat. die Lampe selber nach 180s aus...

Eieieieiei ;)

Zum Glück habe ich ja meine Erläuterung bzgl. Value noch, also nicht ganz planlos ;)

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)

MadMax-FHEM

#5
Allerdings glaube ich wird die Logik mit Abfrage auch nicht funktionieren (zumindest wie ich Bewegungsmelder kenne):

Bewegungsmelder meldet Bewegung: Licht ist aus (Küche-Relay aus) -> Licht geht für 180s an -> ok

Bewegungsmelder meldet Bewegung: Licht ist an, manuell geschaltet (Küche-Relay an) -> Licht bleibt an -> ok

Bewegungsmelder meldet Bewegung: Licht ist an, wurde durch Bewegungsmelder geschaltet (Küche-Relay an) -> Licht geht trotzdem nach 180s aus ABER: 180s nach dem ersten Mal Bewegung!

(ist das so gewollt, dass das Licht, wenn durch Bewegung eingeschaltet wurde IMMER nach 180s aus geht, selbst wenn weiterhin Bewegung da ist und gemeldet wird/würde?)

EDIT: weiterer Fall: Licht durch Bewegung eingeschaltet. 180s später geht das Licht aus. Kurz drauf wird wieder Bewegung gemeldet -> Licht geht wieder für 180s an usw. Also an - aus - an - aus - an solange sich jemand im Raum aufhält und das Licht NICHT als ERSTES manuell eingeschaltet wurde. Und dann nat. mauell wieder ausgeschaltet werden muss ;)

EDIT3: und dabei MUSS es geschafft sein, dass der manuelle Einschaltvorgang passiert ist BEVOR der Bewegungsmelder eine Chance hatte. Sonst: aus (nach 180s / weil das vermutlich der Aktor dann selbst einfach tut) und vielleicht wieder an (durch Bewegungsmelder) und wieder aus usw. ;)

EDIT2: so einfach ist die Lichtschaltung mit: Automatik (Bewegungsmelder) und Manuell nämlich gar nicht ;)  Da zeugen einige Threads zu dem Thema davon ;) Anders ausgerdückt: nur auf den Aktor zu schauen, ob er schon an ist ist vermutlich zu wenig. Es muss sich wahrscheinlich irgendwo gemerkt werden wodurch der Aktor geschalten wurde... Aber: das ist nur meine Vermutung...

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)

r00t2

Weitere Fälle, die es zu berücksichtigen gilt wären ggf:

Bewegungsmelder meldet Bewegung: Licht ist aus (Küche-Relay aus) -> Licht geht (für 180s) an -> Während der 180s wird manuell das Licht angeschaltet und soll dann an bleiben
Bewegungsmelder meldet Bewegung: Licht ist aus (Küche-Relay aus) -> Licht geht (für 180s) an -> Während der 180s wird manuell das Licht ausgeschaltet -> Soll dann schon vor Ablauf der 180s ein erneutes Anschalten durch den Bewegungsmelder erfolgen können?

Ich denke auch, dass man nicht um die Betrachtung von Relaiszustand, Event des Bewegungsmelder und Vorhandensein des "temporären" Device (vom "on-for-timer") rum kommt, um alle Möglichkeiten sauber abzufangen.
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

Petrocelli63

#7
Hallo,
danke für die vielen Tipps.
Das Problem ist tatsächlich folgendes:
Der Bewegungsmelder meldet ein Signal und dann ist das Licht eben nach 180sec aus und ich sitze im Dunkeln, wenn ich mich nicht bewege. Wenn ich das Licht manuell einschalte, sollte der Bewegungsmelder keine neue Zeitschleife starten. Daher habe ich die Abfrage im Code, ob das Relais schon an ist. Ich muss natürlich immer schneller mit dem manuellen schalten sein, als der Bewegungsmelder. Aber es funktioniert einfach nicht. Wenn ich das Licht manuell schalte und danach das Signal vom BM kommt, kommt er immer in die Zeitschleife. Ich verstehe das nicht. Vom Code her sollte das doch funktionieren, oder?
Gruß
Peter

Device Kueche:

Save config
Smarthome
Alarm
Befehle
CUL_IR
CUL_TCM97001
CUL_TX
ESPEasy
Ereignisse
Heizung
Hideki
IT
Logs
Plots
SIS_PMS
Temperatur
Unsorted
Weristda
alexa
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor

Internals:
   DEF        192.168.0.201 80 espBridge Sonoff_2_KUECHE
   ESP_BUILD  147
   ESP_SLEEP  0
   ESP_UNIT   1
   ESP_VERSION 9
   HOST       192.168.0.201
   IDENT      Sonoff_2_KUECHE
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     36
   NAME       Kueche
   NOTIFYDEV  global
   NR         74
   NTFY_ORDER 50-Kueche
   PORT       80
   STATE      on
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.01
   espBridge_MSGCNT 36
   espBridge_TIME 2018-11-27 19:22:12
   READINGS:
     2018-06-14 22:35:34   Key             off
     2018-11-27 19:22:12   Relay           on
     2018-11-27 19:25:52   presence        present
     2018-11-27 06:44:06   state           Initialized
   helper:
     fpc        1543297455
     pm:
       Encode     1
       JSON       1
     received:
       Relay      1543342932
   sec:
     admpwd     
Attributes:
   IODev      espBridge
   Interval   300
   alexaName  Flur
   devStateIcon on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off
   eventMap   /longpulse 12 on:on-for-timer/gpio 12 on:on/gpio 12 off:off/
   genericDeviceType switch
   group      ESPEasy Device,Licht
   icon       hue_filled_outlet
   presenceCheck 1
   readingSwitchText 1
   room       alexa,ESPEasy
   setState   0
   stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Relay","")}


CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Petrocelli63


CoolTux


Bewegungsmelder4:on {
  if (Value("Tageslicht") eq "dunkel") {
     if (ReadingsVal("Kueche","Relay","") eq "off") {
          fhem ("set Kueche on-for-timer 180");
          Log(1,'Relai war aus und wird geschalten');
     }
  }
}

Damit bekommst Du einen Eintrag ins FHEM Log wenn die Bedingung erfüllt ist. So kannst du prüfen ob es wirklich der Code ist.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MadMax-FHEM

#11
Trotz des Codes (also selbst wenn er funktioniert) gibt es (beliebig viele) Varianten wo man trotzdem nach 180s im Dunkeln sitzt...
...oder das Licht "an - aus - an - aus - ..." macht...

Davon bin ich überzeugt ohne es getestet zu haben ;)

Aber normalerweise mache ich auch mindestens Logausgaben solange ich noch "teste"...
...da sieht man zumindest was/wie der Code läuft...
...evtl sogar weitere Ausgaben für die anderen Bedingungen die nicht erfüllt sind...
...um zu sehen "wo" der Code evtl. "rausgefallen" ist...

EDIT: und wenn es mehr als eine if-Schachtel ist verlagere ich das gleich in eine Sub/myUtils... ;)

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)

Petrocelli63

#12
Guten Morgen,
ich glaube ich komme dem Problem auf die Schliche.
Manchmal ist das Sonoff Modul in einem Zustand, der farblich blau hinterlegt ist. Also kein klares off, sondern absent. Vermutlich geht das Modul dann in einen Stromsparmodus, oder so.
Vermutlich sollte ich einen Dummy auf ON setzen, wenn das Licht manuell von mir angeschaltet wird. Dieser bleibt dann ON, auch wenn das Sonoff Modul absent ist. Erst beim manuellen Ausschalten setzte ich den Dummy wieder auf OFF und dann kann der Bewegungsmelder wieder arbeiten. Ich weiß nur nicht, wie ich das differenzieren kann. Woran merkt Fhem, dass ich manuell das Licht eingeschaltet habe. Hat jemand eine Idee. Ich habe 1 Jahr nichts mit Fhem gemacht und muss mich wieder komplett einlesen :-(
Ich werde weiter berichten

MadMax-FHEM

#13
Das manuelle Schalten geht doch bestimmt über einen Wandschalter/-Taster!?
Ist der in fhem integriert, also bekommt (oder kann) fhem das Schalten mit!?

Dann darauf ein Notify was den Dummy setzt.

Eventmonitor öffnen (evtl. Filter auf den Schalter setzen), Schalter/Taster betätigen, passenden Event aussuchen und markieren -> modify/create...

https://wiki.fhem.de/wiki/Event_monitor

https://wiki.fhem.de/wiki/Notify

Beim Bewegungsmelder nicht den Aktor (Küche Relay) abfragen, sondern eben den Dummy...

Wenn Dummy "off" dann Bewegungsmelder...

Evtl. kein on-for-timer, sondern ein temporäres "at" und da dann noch mal prüfen, ob nicht mittlerweile manuell eingeschaltet wurde und nur wenn nicht auch bei/nach keine Bewegung mehr ausschalten...

Hängt aber davon ab wie das Verhalten sein soll und wie die Gegebenheiten sind, also wo der Schalter ist und wann der Bewegungsmelder erkennt, also ob man überhaupt die Möglichkeit hat den Schslter zu betätigen BEVOR der Bewegungsmelder anschlägt...

Daher wie immet: erst genau den gewünschten Ablauf skizzieren, die tatsächlichen Möglichkeiten bedenken (z.B. ist die Schalterbetätigung überhaupt möglich, ohne dass der Bewegungsmelder anschlägt etc.) und erst dann die Umsetzung festlegen...

Ansonsten wird es (meiner Meinung nach) viel "Gebastel" und "Anpassung" und "Korrektur" und am Ende eine "Logik" die kaum noch zu durchblicken ist...
...und (nur) mit Glück funktioniert...

Und man darf selbst eine so simpel geglaubte Steuerung nicht unterschätzen... ;)

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)

Neuhier

Ich wollte Ähnliches im Bad so realisieren:
Bewegungsmelder schaltet ein, Türkontakt ( Tür ist ja geschlossen, wenn jemand absehbar länger im Bad ist ) übernimmt.
Wenn der Kontakt "zu" meldet, ist der Bewegungsmelder außen vor.
Wird der Kontakt wieder geöffnet, übernimmt der Bewegungsmelder wieder.
Geht jemand in den Raum, ohne die Tür zu schließen, geht nach eingestellter Zeit das Licht eben aus.

Ist bisher nur theoretisch, noch nicht ausgeführt.