FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: RitterSport am 21 Februar 2016, 10:56:37

Titel: Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 21 Februar 2016, 10:56:37
Ein eigentlich recht simples DOIF welches bei Eintreten von dem Event "set Anwesenheitsstatus Home" und dem Zeitrahmen 9:30 und sunset auslösen sollte.
Aber er löst immer um 9:30 aus, obwohl das Event nicht eintritt, warum?

([Anwesenheitsstatus:?Home] and [09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @****** @****** Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)

attr do always


Readings
Device                                           Anwesenheitsstatus            2016-02-19 19:26:34
cmd_event                                          timer_1                     2016-02-21 09:30:00
cmd_nr                                             1                           2016-02-21 09:30:00
e_Anwesenheitsstatus_events                        Home                        2016-02-19 19:26:34
state                                              cmd_1                       2016-02-21 09:30:00
timer_1_c1                                      22.02.2016 09:30:00               2016-02-21 09:30:00
timer_2_c1                                      21.02.2016 19:09:48               2016-02-20 19:09:48
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Bartimaus am 21 Februar 2016, 11:15:29
Probier mal:

([Anwesenheitsstatus:?Home] and [?09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @****** @****** Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)

attr do always


Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Puschel74 am 21 Februar 2016, 11:15:58
Wenn ich mir die deutsche commandref zu DOIF anschaue sollte mMn das DOIF immer zwischen 09:30-sunset_abs(.........) triggern wenn
dein Anwesenheitsstatus Home ist - und das wird er vermutlich sein wenn du zuhause bist  ;)
Das ? vor Home sagt doch das der Status nur abgefragt wird aber nicht triggert - also bleibt nur die Uhrzeit zum triggern.
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 12:33:14
Zitat von: Puschel74 am 21 Februar 2016, 11:15:58
Wenn ich mir die deutsche commandref zu DOIF anschaue sollte mMn das DOIF immer zwischen 09:30-sunset_abs(.........) triggern wenn
dein Anwesenheitsstatus Home ist - und das wird er vermutlich sein wenn du zuhause bist  ;)
Das ? vor Home sagt doch das der Status nur abgefragt wird aber nicht triggert - also bleibt nur die Uhrzeit zum triggern.

Das Fragezeichen vor Home bedeutete Event-Trigger, diese Syntax gilt zwar immer noch, war allerdings verwirrend (wie man an deiner Antwort merkt) und wurde durch die neue mit Anführungszeichen ersetzt: hier wäre es dann [Anwesenheitsstatus:"Home"]. Nicht triggern bedeutet ein Fragezeichen unmittelbar hinter der Klammer, daher ist der Vorschlag von Bartimaus eher richtig. Allerdings ist [Anwesenheitsstatus:?Home] ein Event-Trigger, der nur zum Zeitpunkt des Triggerns wahr ist und sonst nicht, daher kann die ganze Bedingung nur um 9:30 Uhr wahr sein, wenn auch um diese Zeit Anwesenheitsstatus triggert.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Puschel74 am 21 Februar 2016, 12:52:50
Dann hab ich das
ZitatAnwendungsbeispiel: Licht soll zwischen 06:00 und 10:00 angehen, getriggert wird nur durch den Taster nicht um 06:00 bzw. 10:00 Uhr

define di_motion DOIF ([?06:00-10:00] and [button])(set lamp on-for-timer 600)
aus der commandref falsch verstanden.
triggern soll button aber NICHT die Uhrzeit daher das ? vor der Uhrzeit.

Würde hier ja bedeuten das Home nicht triggert weil ein ? davor also bleibt als trigger nur die Uhrzeit.

Sorry aber mit DOIF werde ich wohl nicht so schnell warm werden  8)
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 14:31:42
Zitat von: Puschel74 am 21 Februar 2016, 12:52:50
Dann hab ich dasaus der commandref falsch verstanden.
triggern soll button aber NICHT die Uhrzeit daher das ? vor der Uhrzeit.

Würde hier ja bedeuten das Home nicht triggert weil ein ? davor also bleibt als trigger nur die Uhrzeit.

Sorry aber mit DOIF werde ich wohl nicht so schnell warm werden  8)

Deswegen ist das Komma für EVENT-Regexp deprecated und soll dafür nicht mehr benutzt werden. Dann kann man grundsätzlich sagen: ? = Abfrage ohne Trigger.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 21 Februar 2016, 18:06:33
Verwirrt mich jetzt....
Es funktionierte bisher wie es angedacht war.

Es soll in dem Zeitrahmen 9:30 bis sunset (aber maximal 19:30) ausgelöst werden , wenn das Ereignis"set Anwesenheitsstatus Home" erfolgt.
Muss ich dafür nun "Home" statt ?Home schreiben?
Gerade getestet, das es so geht. Nur eben auch das er jetzt 2 mal ausgelöst hat um 9:30 obwohl nicht das Event Home getriggert werden konnte.

Grüße
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 18:12:19
Zitat von: RitterSport am 21 Februar 2016, 18:06:33
Verwirrt mich jetzt....
Es funktionierte bisher wie es angedacht war.

Es soll in dem Zeitrahmen 9:30 bis sunset (aber maximal 19:30) ausgelöst werden , wenn das Ereignis"set Anwesenheitsstatus Home" erfolgt.
Muss ich dafür nun "Home" statt ?Home schreiben?

Grüße

Es sollte alles funktionieren wie bisher. Zukünftig solltest du aber statt [Anwesenheitsstatus:?Home] [Anwesenheitsstatus:"Home"] angeben.

[Anwesenheitsstatus:Home] wäre nicht das, was du möchtest, denn dann wird das Reading abgefragt und das wird mit Sicherheit um 9:30 wahr sein, wenn es nicht leer ist.
Gruß
Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 21 Februar 2016, 18:14:53
Zitat von: Damian am 21 Februar 2016, 18:12:19
Es sollte alles funktionieren wie bisher. Zukünftig solltest du aber statt [Anwesenheitsstatus:?Home] [Anwesenheitsstatus:"Home"] angeben.

[Anwesenheitsstatus:Home] wäre nicht das, was du möchtest, denn dann wird das Reading abgefragt und das wird mit Sicherheit um 9:30 wahr sein, wenn es nicht leer ist.
Gruß
Damian

Nicht ganz, er löst ja auch einfach um 9:30 aus obwohl das Event Home nicht erfolgt ist
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 18:17:27
Zitat von: RitterSport am 21 Februar 2016, 18:14:53
Nicht ganz, er löst ja auch einfach um 9:30 aus obwohl das Event Home nicht erfolgt ist
Bei mir nicht, ich habe es vorhin nachgestellt.
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 21 Februar 2016, 18:25:23
Device

Anwesenheitsstatus   2016-02-21 17:55:28   
cmd_event   Anwesenheitsstatus  2016-02-21 17:55:28
cmd_nr  1   2016-02-21 17:55:28
e_Anwesenheitsstatus_events  Home  2016-02-21 17:55:28
timer_1_c1     22.02.2016       09:30:00    2016-02-21 09:30:00
timer_2_c1     21.02.2016      19:09:48    2016-02-20 19:09:48


Wenn es in dem genannten Zeitrahmen ist und das Event erfolgt, dann sehen die Readings wie in diesem Post aus. Es funktioniert.

Warum löst er um 9.30 aus wie im ersten Post , dort war es das cmd_event timer , jetzt ist es das cmd_event Anwesenheitsstatus
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 19:03:40
Zitat von: RitterSport am 21 Februar 2016, 18:25:23
Device

Anwesenheitsstatus   2016-02-21 17:55:28   
cmd_event   Anwesenheitsstatus  2016-02-21 17:55:28
cmd_nr  1   2016-02-21 17:55:28
e_Anwesenheitsstatus_events  Home  2016-02-21 17:55:28
timer_1_c1     22.02.2016       09:30:00    2016-02-21 09:30:00
timer_2_c1     21.02.2016      19:09:48    2016-02-20 19:09:48


Wenn es in dem genannten Zeitrahmen ist und das Event erfolgt, dann sehen die Readings wie in diesem Post aus. Es funktioniert.

Warum löst er um 9.30 aus wie im ersten Post , dort war es das cmd_event timer , jetzt ist es das cmd_event Anwesenheitsstatus
Das möchte ich mal sehen. Du kannst die Startzeit zum Testen anpassen und ein list machen.
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 21 Februar 2016, 20:15:37
Danke schonmal Damian. Aber was möchtest du genau sehen?
Beide Fälle sind jeweils im ersten Post sowie im letzten Post.
Definitiv war es die 9:30 die das DOIF ausgelöst haben.....gestern und heute, zusehen am
cmd_event                                          timer_1                     2016-02-21 09:30:00

Ich habe ein DOIF mal nachgebaut, auch getestet mit dem vorgeschlagenen ? vor der Uhrzeit.
Den Fehler kann auch nicht Reproduzieren.
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 20:23:00
Zitat von: RitterSport am 21 Februar 2016, 20:15:37
Danke schonmal Damian. Aber was möchtest du genau sehen?
Beide Fälle sind jeweils im ersten Post sowie im letzten Post.
Definitiv war es die 9:30 die das DOIF ausgelöst haben.....gestern und heute, zusehen am
cmd_event                                          timer_1                     2016-02-21 09:30:00

Ich habe ein DOIF mal nachgebaut, auch getestet mit dem vorgeschlagenen ? vor der Uhrzeit.
Den Fehler kann auch nicht Reproduzieren.

Ein list beinhaltet viel mehr (interne) Informationen als du gepostet hast.

Wie gesagt, ich kann es mir nicht vorstellen, denn ein Trigger ist nur zum Triggerzeitpunkt wahr und sonst nicht, dann müsste schon der Perl-Interpreter kaputt sein, wovon wir jetzt mal nicht ausgehen, denn der wertet die Bedingung aus.


Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 21 Februar 2016, 20:35:10
Zitat von: Damian am 21 Februar 2016, 20:23:00
Ein list beinhaltet viel mehr (interne) Informationen als du gepostet hast.

Wie gesagt, ich kann es mir nicht vorstellen, denn ein Trigger ist nur zum Triggerzeitpunkt wahr und sonst nicht, dann müsste schon der Perl-Interpreter kaputt sein, wovon wir jetzt mal nicht ausgehen, denn der wertet die Bedingung aus.

Edit: Welche Version benutzt du denn?
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RitterSport am 22 Februar 2016, 15:02:48
FHEM 5.6.
doif.pm ist vom 26.12.15

Da er heute nicht ausgelöst hat, kann ich nur diesen list anfügen:
Internals:
   DEF        ([Anwesenheitsstatus:?Home] and [?09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @xxxx @xxxx Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)
   NAME       ZufallstimerRolloWiederhoch
   NR         1307
   NTFY_ORDER 50-ZufallstimerRolloWiederhoch
   STATE      initialize
   TYPE       DOIF
   Readings:
     2016-02-21 19:27:19   state           initialize
     2016-02-22 09:30:00   timer_1_c1      23.02.2016 09:30:00
     2016-02-21 19:43:01   timer_2_c1      22.02.2016 19:11:33
   Condition:
     0          EventDoIf('Anwesenheitsstatus',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'Home') and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
   Days:
   Devices:
     0           Anwesenheitsstatus
     all         Anwesenheitsstatus
   Do:
     0:
       0          set Rolladen_alle Up,set TeleBotMain message @xxxx @xxxx Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home
   Helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
   Itimer:
   Realtime:
     0          09:30:00
     1          19:11:33
   State:
   Time:
     0          09:30:00
     1          {sunset_abs(2400,"","19:30")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
   Trigger:
     all         Anwesenheitsstatus
Attributes:
   alias      Rollo hoch Homestatuswechsel
   do         always
   room       Alarmanlage
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 22 Februar 2016, 15:39:26
Zitat von: RitterSport am 22 Februar 2016, 15:02:48
FHEM 5.6.
doif.pm ist vom 26.12.15

Da er heute nicht ausgelöst hat, kann ich nur diesen list anfügen:
Internals:
   DEF        ([Anwesenheitsstatus:?Home] and [?09:30-{sunset_abs(2400,"","19:30")}] )
(set Rolladen_alle Up,set TeleBotMain message @xxxx @xxxx Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home)
   NAME       ZufallstimerRolloWiederhoch
   NR         1307
   NTFY_ORDER 50-ZufallstimerRolloWiederhoch
   STATE      initialize
   TYPE       DOIF
   Readings:
     2016-02-21 19:27:19   state           initialize
     2016-02-22 09:30:00   timer_1_c1      23.02.2016 09:30:00
     2016-02-21 19:43:01   timer_2_c1      22.02.2016 19:11:33
   Condition:
     0          EventDoIf('Anwesenheitsstatus',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'Home') and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
   Days:
   Devices:
     0           Anwesenheitsstatus
     all         Anwesenheitsstatus
   Do:
     0:
       0          set Rolladen_alle Up,set TeleBotMain message @xxxx @xxxx Alle Rolläden hoch da Zustandswechsel von Away/Urlaub auf Home
   Helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
   Itimer:
   Realtime:
     0          09:30:00
     1          19:11:33
   State:
   Time:
     0          09:30:00
     1          {sunset_abs(2400,"","19:30")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
   Trigger:
     all         Anwesenheitsstatus
Attributes:
   alias      Rollo hoch Homestatuswechsel
   do         always
   room       Alarmanlage


ja, ich erinnere mich jetzt dunkel an ein Problem in diesem Zusammenhang. Mit [?09:30... wird das ohnehin nicht auftreten. Nimm einfach die heutige Version und das Problem sollte nicht mehr auftreten können.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RockFan am 28 Februar 2016, 12:02:13
Hallo Damian,

Erstmal vielen Dank für DOIF. Es erleichtert und ersetzt so viele Dinge in FHEM. Einfach Mega-Super-Geil  :) 8)

Da die Fragestellung dieses Threads genau mein derzeitiges Problem beschreibt, möchte ich mich mal hier anhängen.
Mein DOIF soll, wenn mein Handy in meinem Heimnetzwerk anwesend ist kurz vor dem läuten des Weckers ein paar Wetterinfos sprechen. Dazu verwende ich u.a. AMAD (LG_G3_Smartphone). Das setzen von deviceState regele ich über eine Anwesenheitssimulation. Das ganze hat auch schon mal besser funktioniert. Möglicherweise funktioniert es sporadisch schlechter, seit ich die Anwesenheit über ROOMMATE registriere, aber da bin ich nicht ganz sicher.

DasProblem ist, dass mein Handy nun manchmal spricht, wenn es "anwesend" wird, obwohl es sicherlich nicht eine Minute vor dem Weckerläuten ist.

Ich bin auf der aktuellen Version von FHEM.

Hier ist mein List auf dem DOIF.


Internals:
   DEF        ([([LG_G3_Smartphone:nextAlarmTime]-[00:01])] and [LG_G3_Smartphone:deviceState] eq "online") (
  ({Log 3,"MorningSayTempDieterHandy Ereignisse von $DEVICE: $EVENTS"})
  (set LG_G3_Smartphone volume 8)
  (set LG_G3_Smartphone ttsMsg 'Außentemperatur [gt_Temperatur:temperature] Grad Celsius. [AgrarWetterBobingen:fc0_weatherMorning]')
)
   NAME       MorningSayTempDieterHandy
   NR         839
   NTFY_ORDER 50-MorningSayTempDieterHandy
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-02-28 11:43:24   Device          LG_G3_Smartphone
     2016-02-28 11:43:13   cmd_event       LG_G3_Smartphone
     2016-02-28 11:43:13   cmd_nr          1
     2016-02-28 11:43:24   e_LG_G3_Smartphone_deviceState online
     2016-02-28 11:43:13   state           cmd_1
     2016-02-28 11:43:24   timer_1_c1      29.02.2016 05:32:00
     2016-02-27 10:34:04   wait_timer      no timer
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf($hash,'LG_G3_Smartphone','deviceState','','',AttrVal($hash->{NAME},'notexist',undef)) eq "online"
   Days:
   Devices:
     0           LG_G3_Smartphone
     all         LG_G3_Smartphone
   Do:
     0:
       0            ({Log 3,"MorningSayTempDieterHandy Ereignisse von $DEVICE: $EVENTS"})  (set LG_G3_Smartphone volume 8)  (set LG_G3_Smartphone ttsMsg 'Außentemperatur [gt_Temperatur:temperature] Grad Celsius. [AgrarWetterBobingen:fc0_weatherMorning]')
     1:
   Helper:
     event      lastSetCommandState: cmd_done
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   LG_G3_Smartphone
     timerevent lastSetCommandState: cmd_done
     triggerDev LG_G3_Smartphone
     timerevents:
       lastSetCommandState: cmd_done
     triggerEvents:
       lastSetCommandState: cmd_done
   Internals:
   Itimer:
     all         LG_G3_Smartphone
   Localtime:
     0          1456720320
   Readings:
     0           LG_G3_Smartphone:deviceState
     all         LG_G3_Smartphone:deviceState
   Realtime:
     0          05:32:00
   Regexp:
     0:
     All:
   State:
   Time:
     0          ([LG_G3_Smartphone:nextAlarmTime]-[00:01])
   Timecond:
     0          0
   Timer:
     0          1
   Timers:
     0           0
   Trigger:
   Triggertime:
     1456720320:
       localtime  1456720320
       Hash:
Attributes:
   wait       0,5,20


Im Log kommt folgendes:


2016.02.28 11:43:12 2: ROOMMATE set rr_Dieter home
2016.02.28 11:43:13 3: MorningSayTempDieterHandy Ereignisse von LG_G3_Smartphone: deviceState: online
2016.02.28 11:43:13 3: DieterStatusSteuerung home Ereignisse von rr_Dieter: lastState: absent,home,mood: calm,presence: present,location: home,lastArrival: 2016-02-28 11:43:12,lastDurAbsence: 00:00:24,lastDurAbsence_cr: 0


"DieterStatusSteuerung" ist auch ein DOIF (ohne Attribute):

define DieterStatusSteuerung DOIF ([rr_Dieter:state] eq "home") (\
   set LG_G3_Smartphone deviceState online,\
   {Log 3,"DieterStatusSteuerung home Ereignisse von $DEVICE: $EVENTS"}\
) DOELSEIF ([rr_Dieter:state] eq "absent") (\
   set LG_G3_Smartphone deviceState offline,\
   {Log 3,"DieterStatusSteuerung absent Ereignisse von $DEVICE: $EVENTS"}\
)


Was mache ich nur falsch? Was übersehe ich?


Dieter
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 28 Februar 2016, 13:53:53
Zitat von: RockFan am 28 Februar 2016, 12:02:13
Hallo Damian,

Erstmal vielen Dank für DOIF. Es erleichtert und ersetzt so viele Dinge in FHEM. Einfach Mega-Super-Geil  :) 8)

Da die Fragestellung dieses Threads genau mein derzeitiges Problem beschreibt, möchte ich mich mal hier anhängen.
Mein DOIF soll, wenn mein Handy in meinem Heimnetzwerk anwesend ist kurz vor dem läuten des Weckers ein paar Wetterinfos sprechen. Dazu verwende ich u.a. AMAD (LG_G3_Smartphone). Das setzen von deviceState regele ich über eine Anwesenheitssimulation. Das ganze hat auch schon mal besser funktioniert. Möglicherweise funktioniert es sporadisch schlechter, seit ich die Anwesenheit über ROOMMATE registriere, aber da bin ich nicht ganz sicher.

DasProblem ist, dass mein Handy nun manchmal spricht, wenn es "anwesend" wird, obwohl es sicherlich nicht eine Minute vor dem Weckerläuten ist.

Ich bin auf der aktuellen Version von FHEM.

Hier ist mein List auf dem DOIF.


Internals:
   DEF        ([([LG_G3_Smartphone:nextAlarmTime]-[00:01])] and [LG_G3_Smartphone:deviceState] eq "online") (
  ({Log 3,"MorningSayTempDieterHandy Ereignisse von $DEVICE: $EVENTS"})
  (set LG_G3_Smartphone volume 8)
  (set LG_G3_Smartphone ttsMsg 'Außentemperatur [gt_Temperatur:temperature] Grad Celsius. [AgrarWetterBobingen:fc0_weatherMorning]')
)
   NAME       MorningSayTempDieterHandy
   NR         839
   NTFY_ORDER 50-MorningSayTempDieterHandy
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-02-28 11:43:24   Device          LG_G3_Smartphone
     2016-02-28 11:43:13   cmd_event       LG_G3_Smartphone
     2016-02-28 11:43:13   cmd_nr          1
     2016-02-28 11:43:24   e_LG_G3_Smartphone_deviceState online
     2016-02-28 11:43:13   state           cmd_1
     2016-02-28 11:43:24   timer_1_c1      29.02.2016 05:32:00
     2016-02-27 10:34:04   wait_timer      no timer
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf($hash,'LG_G3_Smartphone','deviceState','','',AttrVal($hash->{NAME},'notexist',undef)) eq "online"
   Days:
   Devices:
     0           LG_G3_Smartphone
     all         LG_G3_Smartphone
   Do:
     0:
       0            ({Log 3,"MorningSayTempDieterHandy Ereignisse von $DEVICE: $EVENTS"})  (set LG_G3_Smartphone volume 8)  (set LG_G3_Smartphone ttsMsg 'Außentemperatur [gt_Temperatur:temperature] Grad Celsius. [AgrarWetterBobingen:fc0_weatherMorning]')
     1:
   Helper:
     event      lastSetCommandState: cmd_done
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   LG_G3_Smartphone
     timerevent lastSetCommandState: cmd_done
     triggerDev LG_G3_Smartphone
     timerevents:
       lastSetCommandState: cmd_done
     triggerEvents:
       lastSetCommandState: cmd_done
   Internals:
   Itimer:
     all         LG_G3_Smartphone
   Localtime:
     0          1456720320
   Readings:
     0           LG_G3_Smartphone:deviceState
     all         LG_G3_Smartphone:deviceState
   Realtime:
     0          05:32:00
   Regexp:
     0:
     All:
   State:
   Time:
     0          ([LG_G3_Smartphone:nextAlarmTime]-[00:01])
   Timecond:
     0          0
   Timer:
     0          1
   Timers:
     0           0
   Trigger:
   Triggertime:
     1456720320:
       localtime  1456720320
       Hash:
Attributes:
   wait       0,5,20


Im Log kommt folgendes:


2016.02.28 11:43:12 2: ROOMMATE set rr_Dieter home
2016.02.28 11:43:13 3: MorningSayTempDieterHandy Ereignisse von LG_G3_Smartphone: deviceState: online
2016.02.28 11:43:13 3: DieterStatusSteuerung home Ereignisse von rr_Dieter: lastState: absent,home,mood: calm,presence: present,location: home,lastArrival: 2016-02-28 11:43:12,lastDurAbsence: 00:00:24,lastDurAbsence_cr: 0


"DieterStatusSteuerung" ist auch ein DOIF (ohne Attribute):

define DieterStatusSteuerung DOIF ([rr_Dieter:state] eq "home") (\
   set LG_G3_Smartphone deviceState online,\
   {Log 3,"DieterStatusSteuerung home Ereignisse von $DEVICE: $EVENTS"}\
) DOELSEIF ([rr_Dieter:state] eq "absent") (\
   set LG_G3_Smartphone deviceState offline,\
   {Log 3,"DieterStatusSteuerung absent Ereignisse von $DEVICE: $EVENTS"}\
)



Was mache ich nur falsch? Was übersehe ich?


Dieter

Du musst das Attribut do always setzen, wenn es jedes mal ohne Zustandswechsel funktionieren soll.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RockFan am 28 Februar 2016, 14:38:53
Hallo Damian,

Danke für die schnelle Antwort. Leider verstehe ich das nicht so ganz: Es löst ja zu oft aus. Es löst aus, obwohl nur die Bedingung [LG_G3_Smartphone:deviceState] eq "online" erfüllt ist.

Dazu habe ich jetzt vielleicht klärende Verständnisfragen:
Wenn das Eintreten einer Uhrzeit eine Bedingung ist, brauche ich dann do always, damit es jeden Tag auslöst? Ist die Uhrzeit in meinem Fall eigentlich immer gleich oder gehört auch das Datum dazu? Das sieht zumindest in meinem List vorhin so aus.


Viele Grüße
Dieter
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 28 Februar 2016, 18:15:34
ja, das ist dieses Problem http://forum.fhem.de/index.php/topic,49482.0.html

Nimm schon mal diese Version http://forum.fhem.de/index.php/topic,49756.msg417274.html#msg417274, das ist die aktuellste mit Fehlerbereinigung.  Sie wird bald eingecheckt.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RockFan am 28 Februar 2016, 18:58:34
Hallo Damian,

ja, der Jalousie-Fall klingt nach dem gleichen Problem. Da ich jetzt 2 Tage dienstlich unterwegs bin und unter der Woche ohnehin kaum Zeit ist, freue ich mich schon mal auf den Fix im offiziellen Update  ;)

Vielen Dank für Deine Hilfe!

Viele Grüße
Dieter
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: Damian am 28 Februar 2016, 21:59:35
Zitat von: RockFan am 28 Februar 2016, 18:58:34
Hallo Damian,

ja, der Jalousie-Fall klingt nach dem gleichen Problem. Da ich jetzt 2 Tage dienstlich unterwegs bin und unter der Woche ohnehin kaum Zeit ist, freue ich mich schon mal auf den Fix im offiziellen Update  ;)

Vielen Dank für Deine Hilfe!

Viele Grüße
Dieter

Ich habe dieser Version eingecheckt.

Gruß

Damian
Titel: Antw:Warum löst dieses DOIF aus?
Beitrag von: RockFan am 05 März 2016, 16:26:17
Hallo Damian,

ich wollte noch Danke sagen.

Seit Mittwoch läuft die neue Version und es funktiniert nun so wie es soll  :)

Viele Grüße
Dieter