[gelöst] Komisches Verhalten: Ich komm heim und das Licht geht aus

Begonnen von andi11, 02 November 2019, 14:12:08

Vorheriges Thema - Nächstes Thema

andi11

Unser Aussenlicht ist irgendwie so eine Endlosbaustelle.
Seit neuestem hat es die Angewohnheit wenn ich nach Hause komme, wenn es schon an ist einfach auszugehen. (War um ca 19Uhr, und es war dunkel aussen)
Nachdem ich heimgekommen bin, hat das doif cmd5 ausgeführt, und damit das Licht ausgeschalten. Zuvor war es vermutlich im cmd1
Einige Minuten danach ist es wieder angegangen (cmd1)
Das dürfte passiert sein, da erst beim nächsten Event von Umwelt_Aussen wieder die Bedingung1 überprüft wurde.

Meine letzte Änderung in diesem Bereich war das attr wait das sicherstellen sollte, das wenn wir abends weg waren, und noch kurz mit dem Hund rausgehen nicht im dunkeln heimkommen. Diese ist aber auch schon länger her, ich kann auch nicht sicher sagen ob es da einen Zusammenhang gibt

Wie kann ich das verändern, so dass das Licht in diesem Fall garnicht erst kurz ausgeht?

Edit: So soll es eigentlich funktionieren:
Es soll angehen wenn es dunkel geworden ist, und um 22:15 wieder ausgehen.
Früh soll es ab 5:55Uhr angehen, und anbleiben, bis es hell geworden ist.

Wenn aber nach 22:15 noch jemand "nicht zuhause" ist, dann soll es anbleiben. Wenn diese Bedingung nicht mehr zutrifft, soll das Licht erst nach einigen Minuten ausgehen.


([Umwelt_Aussen:helligkeit-get:d] < 30 and [15:00-([22:15]+int(rand(300)))] )
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [([05:55]+int(rand(300)))-11:00|AT])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [Bewohner:residentsAbsent]>0 and [22:15-08:00])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Bewohner:residentsAbsent]==0 and [22:15-08:00])
(set Licht_Aussen_Haustuer off)   
DOELSE
   (set Licht_Aussen_Haustuer off)


Mit attr wait 0:0:0:900:0


List vom DOIF ist nicht zum Fehlerzeitpunkt enstanden. Zum Fehlerzeitpunkt war die Helligkeit bei <10Lux und es war ca 19Uhr.

Internals:
   DEF        ([Umwelt_Aussen:helligkeit-get:d] < 30 and [15:00-([22:15]+int(rand(300)))] )
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [([05:55]+int(rand(300)))-11:00|AT])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [Bewohner:residentsAbsent]>0 and [22:15-08:00])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Bewohner:residentsAbsent]==0 and [22:15-08:00])
(set Licht_Aussen_Haustuer off)   
DOELSE
   (set Licht_Aussen_Haustuer off)
   FUUID      5ccd6a77-f33f-e34d-2699-3c9f1e334586e773
   MODEL      FHEM
   NAME       DOIF_Licht_Eingang
   NR         40
   NTFY_ORDER 50-DOIF_Licht_Eingang
   STATE      cmd_5
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   READINGS:
     2019-11-02 14:04:32   Device          Umwelt_Aussen
     2019-11-02 00:20:56   cmd             5
     2019-11-02 00:20:56   cmd_event       Umwelt_Aussen
     2019-11-02 00:20:56   cmd_nr          5
     2019-11-02 13:27:47   e_Bewohner_residentsAbsent 1
     2019-11-02 14:00:08   e_Umwelt_Aussen_helligkeit-get 999.68 lux
     2019-08-09 06:45:43   mode            enabled
     2019-11-02 00:20:56   state           cmd_5
     2019-11-01 22:15:17   timer_01_c01    02.11.2019 15:00:00
     2019-11-01 22:15:17   timer_02_c01    02.11.2019 22:19:59
     2019-11-02 11:00:00   timer_03_c02    03.11.2019 05:59:46|AT
     2019-11-02 11:00:00   timer_04_c02    03.11.2019 11:00:00|AT
     2019-11-02 08:00:00   timer_05_c03    02.11.2019 22:15:00
     2019-11-02 08:00:00   timer_06_c03    03.11.2019 08:00:00
     2019-11-02 08:00:00   timer_07_c04    02.11.2019 22:15:00
     2019-11-02 08:00:00   timer_08_c04    03.11.2019 08:00:00
     2019-11-02 00:20:56   wait_timer      no timer
   Regex:
     accu:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         0
       2:
         0
       3:
         900
       4:
         0
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'Umwelt_Aussen','helligkeit-get','','d') < 30 and ::DOIF_time($hash,0,1,$wday,$hms)
     1          ::ReadingValDoIf($hash,'Umwelt_Aussen','helligkeit-get','','d') < 10 and ::DOIF_time($hash,2,3,$wday,$hms,"AT")
     2          ::ReadingValDoIf($hash,'Umwelt_Aussen','helligkeit-get','','d') < 10 and ::ReadingValDoIf($hash,'Bewohner','residentsAbsent')>0 and ::DOIF_time($hash,4,5,$wday,$hms)
     3          ::ReadingValDoIf($hash,'Bewohner','residentsAbsent')==0 and ::DOIF_time($hash,6,7,$wday,$hms)
   days:
     2          AT
     3          AT
   devices:
     0           Umwelt_Aussen
     1           Umwelt_Aussen
     2           Umwelt_Aussen Bewohner
     3           Bewohner
     all         Umwelt_Aussen Bewohner
   do:
     0:
       0          set Licht_Aussen_Haustuer on
     1:
       0          set Licht_Aussen_Haustuer on
     2:
       0          set Licht_Aussen_Haustuer on
     3:
       0          set Licht_Aussen_Haustuer off
     4:
       0          set Licht_Aussen_Haustuer off
   helper:
     event      wind-get: 3.45 m/s,last-sender: 1/1/3,3.45 m/s
     globalinit 1
     last_timer 8
     sleepdevice Bewohner
     sleepsubtimer 0
     sleeptimer -1
     timerdev   Umwelt_Aussen
     timerevent helligkeit-get: 999.68 lux,last-sender: 1/1/3,999.68 lux
     triggerDev Umwelt_Aussen
     DOIF_eventas:
       cmd_nr: 5
       cmd: 5
       cmd_event: Umwelt_Aussen
       state: cmd_5
     timerevents:
       helligkeit-get: 999.68 lux
       last-sender: 1/1/3
       999.68 lux
     timereventsState:
       helligkeit-get: 999.68 lux
       last-sender: 1/1/3
       state: 999.68 lux
     triggerEvents:
       wind-get: 3.45 m/s
       last-sender: 1/1/3
       3.45 m/s
     triggerEventsState:
       wind-get: 3.45 m/s
       last-sender: 1/1/3
       state: 3.45 m/s
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1572703200
     1          1572729599
     2          1572757186
     3          1572775200
     4          1572729300
     5          1572764400
     6          1572729300
     7          1572764400
   perlblock:
   readings:
     0           Umwelt_Aussen:helligkeit-get
     1           Umwelt_Aussen:helligkeit-get
     2           Umwelt_Aussen:helligkeit-get Bewohner:residentsAbsent
     3           Bewohner:residentsAbsent
     all         Umwelt_Aussen:helligkeit-get Bewohner:residentsAbsent
   realtime:
     0          15:00:00
     1          22:19:59
     2          05:59:46
     3          11:00:00
     4          22:15:00
     5          08:00:00
     6          22:15:00
     7          08:00:00
   time:
     0          15:00:00
     1          ([22:15]+int(rand(300)))
     2          ([05:55]+int(rand(300)))
     3          11:00:00
     4          22:15:00
     5          08:00:00
     6          22:15:00
     7          08:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6  7
   trigger:
   triggertime:
     1572703200:
       localtime  1572703200
       hash:
     1572729300:
       localtime  1572729300
       hash:
     1572729599:
       localtime  1572729599
       hash:
     1572757186:
       localtime  1572757186
       hash:
     1572764400:
       localtime  1572764400
       hash:
     1572775200:
       localtime  1572775200
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   room       Aussen
   wait       0:0:0:900:0

Morgennebel

Deine Außenhelligkeit wird als 999 lux angezeigt, damit scheitern cmd1-cmd3, da die einen lux-Wert kleiner 30 erwarten.
cmd4 scheitert, weil Du da bist.

Bleibt cmd5.

Am einfachsten ist es, den Außenhelligkeitssensor in eine unbeleuchtete Lokation umzuziehen.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

andi11

#2
Danke für deine Antwort. Sie zeigt mir, ich hab zur eigentlich benötigten Funktion nix beschrieben. Sorry, vor lauter Fehlersuche hab ich das wichtigste übersehen.
Helligkeitssensor ist auf dem Dach montiert.

Es soll angehen wenn es dunkel geworden ist, und um 22:15 wieder ausgehen.
Früh soll es ab 5:55Uhr angehen, und anbleiben, bis es hell geworden ist.

Wenn aber nach 22:15 noch jemand "nicht zuhause" ist, dann soll es anbleiben. Wenn diese Bedingung nicht mehr zutrifft, soll das Licht erst nach einigen Minuten ausgehen.

Was ich auch übersehen habe, ist dazuzuschreiben "das List vom DOIF ist nicht zum Fehlerzeitpunkt enstanden. Zum Fehlerzeitpunkt war die Helligkeit bei <10Lux".

Habe ich gerade alles in meinem Ursprungsbeitrag ergänzt.

andi11

Hat jemand eine Idee was ich machen kann? Jedesmal wenn ich heimkomm und es ist schon dunkel geht das Licht aus, und ein paar Minuten danach wieder an.

amenomade

#4
Denkanstoß:
Zitat von: commandrefZu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.

Wenn Bewohner triggert, werden NUR die Bedingungen 3 und 4 geprüft, und wenn alle falsch geht er in DOELSE.

Vermutung: er ist in cmd_1
Du kommst nach Hause: Bedingung 3 wird falsch, Bedingung 4 ist wegen der Zeit auch falsch => DOELSE => aus
Später triggert die Helligkeit: Bedingung 1 wird wahr => cmd1 => an

Hinweis: https://fhem.de/commandref_DE.html#DOIF_checkall
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

Danke für die Antwort, interessanter Einwand.
Machts dann so mehr Sinn?([Umwelt_Aussen:helligkeit-get:d] < 30 and [15:00-([22:15]+int(rand(300)))] )
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([?Umwelt_Aussen:helligkeit-get:d] < 30 and [15:00-([22:15]+int(rand(300)))] and [Bewohner:residentsAbsent]==0)
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [([05:55]+int(rand(300)))-11:00|AT])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Umwelt_Aussen:helligkeit-get:d] < 10 and [Bewohner:residentsAbsent]>0 and [22:15-08:00])
   (set Licht_Aussen_Haustuer on)
DOELSEIF ([Bewohner:residentsAbsent]==0 and [22:15-08:00])
(set Licht_Aussen_Haustuer off)   
DOELSE
   (set Licht_Aussen_Haustuer off)

amenomade

Zumindest sollte der Fall, den Du beschrieben hast, nicht mehr passieren.

Allerdings stört mich noch was:
[15:00-([22:15]+int(rand(300)))] und [22:15-08:00] können sich überschreiten
[([05:55]+int(rand(300)))-11:00|AT]) und [22:15-08:00] auch.

Könnte zu ungewünschte Schalten führen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

danke für die Ergänzung, ich werde mich melden ob mir beim heimkommen wieder ein Licht aufgeht

andi11

bisher geht es tadellos, vielen Dank für die Hilfe.