[Gelöst] DOIF schaltet nach update nicht mehr!

Begonnen von Billy, 16 Mai 2018, 22:49:27

Vorheriges Thema - Nächstes Thema

Billy

Seit einem update schalten meine DOIF's nicht mehr!

define di_Sonoff_1_Alarm DOIF ([Motion_1:"on"] and [Tag_Nacht:twilight_weather] < 40) (set Sonoff_1 on)

Dieses DOIF schaltete bisher bei Bewegung und twilight_weather < 40 per Sonoff das Alarmlicht ein.
Seit einem Update vor 2 Tagen geht das nicht mehr. :'(

Das List:
Internals:
   DEF        ([Motion_1:"on"] and [Tag_Nacht:twilight_weather] < 40) (set Sonoff_1 on)
   MODEL      FHEM
   NAME       di_Sonoff_1_Alarm
   NR         491
   NTFY_ORDER 50-di_Sonoff_1_Alarm
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-05-16 22:42:07   Device          Tag_Nacht
     2018-05-16 22:42:07   cmd             2
     2018-05-16 22:42:07   cmd_event       Tag_Nacht
     2018-05-16 22:42:07   cmd_nr          2
     2018-05-16 22:35:28   e_Motion_1_events Alarm: off
     2018-05-15 17:07:15   e_Tag_Nacht_events twilight_weather: 100
     2018-05-16 22:42:07   e_Tag_Nacht_twilight_weather 0
     2018-05-16 22:08:13   mode            enabled
     2018-05-16 22:42:07   state           cmd_2
   Regex:
   condition:
     0          EventDoIf('Motion_1',$hash,'on',1) and ReadingValDoIf($hash,'Tag_Nacht','twilight_weather') < 40
   devices:
     0           Motion_1 Tag_Nacht
     all         Motion_1 Tag_Nacht
   do:
     0:
       0          set Sonoff_1 on
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      twilight_weather: 0
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Tag_Nacht
     timerevent twilight_weather: 0
     triggerDev Tag_Nacht
     timerevents:
       twilight_weather: 0
     timereventsState:
       twilight_weather: 0
     triggerEvents:
       twilight_weather: 0
     triggerEventsState:
       twilight_weather: 0
   internals:
   itimer:
   perlblock:
   readings:
     0           Tag_Nacht:twilight_weather
     all         Tag_Nacht:twilight_weather
   trigger:
     all         Motion_1
   uiState:
   uiTable:
Attributes:
   group      Sonoff
   room       MQTT


Jemand eine Idee? Was hat sich geändert?

Gruß Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Billy

Habe jetzt
attr di_Sonoff_1_Alarm checkReadingEvent 0

gesetzt damit geht alles wie vorher. :)

Würde mich aber interessieren wie das DOIF aussehen muss damit es auch ohne dieses attr funktioniert?

Muss ich jetzt bei allen meinen DOIF's dieses attr setzten?

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Damian

Zitat von: Billy am 16 Mai 2018, 23:13:03
Habe jetzt
attr di_Sonoff_1_Alarm checkReadingEvent 0

gesetzt damit geht alles wie vorher. :)

Würde mich aber interessieren wie das DOIF aussehen muss damit es auch ohne dieses attr funktioniert?

Muss ich jetzt bei allen meinen DOIF's dieses attr setzten?

Billy

Da ist noch ein Bug in der aktuellen DOIF-Version drin, den werde ich morgen patchen.

Deine Definition ist allerdings nicht ganz sinnvoll. Es funktioniert eher zufällig. Ohne do always würde set Sonoff_1 on nur einmal funktionieren. Alle fünf Minuten sendet Tag_Nacht:twilight_weather, was dazu führt, dass deine Bedingung nicht wahr ist und cmd_2 kommt, was wiederum die Möglichkeit für die Ausführung von cmd_1 freigibt. Ich denke, das hast du nicht bewusst so definiert. Mit anderen Worten innerhalb von fünf Minuten kannst du nur einmal  set Sonoff_1 on ausführen.

Ich würde definieren:

define di_Sonoff_1_Alarm DOIF ([Motion_1:"on"] and [?Tag_Nacht:twilight_weather] < 40) (set Sonoff_1 on)
attr di_Sonoff_1_Alarm do always


Das funktioniert auch ohne checkReadingEvent 0 mit der aktuellen Version und triggert nicht alle fünf Minuten dein Modul.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 16 Mai 2018, 23:52:19
Da ist noch ein Bug in der aktuellen DOIF-Version drin, den werde ich morgen patchen.

Deine Definition ist allerdings nicht ganz sinnvoll. Es funktioniert eher zufällig. Ohne do always würde set Sonoff_1 on nur einmal funktionieren. Alle fünf Minuten sendet Tag_Nacht:twilight_weather, was dazu führt, dass deine Bedingung nicht wahr ist und cmd_2 kommt, was wiederum die Möglichkeit für die Ausführung von cmd_1 freigibt. Ich denke, das hast du nicht bewusst so definiert. Mit anderen Worten innerhalb von fünf Minuten kannst du nur einmal  set Sonoff_1 on ausführen.

Ich würde definieren:

define di_Sonoff_1_Alarm DOIF ([Motion_1:"on"] and [?Tag_Nacht:twilight_weather] < 40) (set Sonoff_1 on)
attr di_Sonoff_1_Alarm do always


Das funktioniert auch ohne checkReadingEvent 0 mit der aktuellen Version und triggert nicht alle fünf Minuten dein Modul.

siehe: https://forum.fhem.de/index.php/topic,87183.msg803068.html#msg803068
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Billy

Danke, funktioniert jetzt wie von dir vorgeschlagen auch ohne checkReadingEvent 0. :)

Das mit den 5 Minuten war mir nicht aufgefallen, da das Alarmlicht über den Sonoff Timer sowieso 5 Minuten angeschaltet wurde!

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*