Twilight-basierende DOIF-Timer werden unnötig oft aktualisiert.

Begonnen von FunkOdyssey, 14 März 2016, 10:02:17

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Tag,

ich wundere mich gerade, warum alle meine Twilight-basierenden DOIFs im 5-Minuten-Takt die Timer aktualisiert bekommen. Twilight aktualisiert alle 5 Minuten die Readings azimuth,compasspoint, elevation, twilight und twilight_weather. Die Readings ss_indoor & Co. werden nicht aktualisiert. Muss auch nicht.

Dennoch wird durch die Aktualisierung der "anderen" Readings auch alle DOIFs dahinter aktualisiert. Eigentlich sollten die DOIFs doch nur aktualisiert werden, wenn die eingesetzten Zeiten (ss_indoor & Co.) sich ändern bzw. der Zeitpunkt eintritt.

Stehe ich auf dem Schlauch? Habt ihr einen Tipp für mich?

Danke.

DOIF:
([[twilight:ss_indoor]-[twilight:sr]] )
(set lampe on)
DOELSE
(set lampe off)


DOIF-Log:

2016-03-14_06:52:02 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_06:52:02 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_06:52:02 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_06:52:02 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_06:56:41 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_06:56:41 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:01:41 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:01:41 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:03:49 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:03:49 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:06:41 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:06:41 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:11:41 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:11:41 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:16:42 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:16:42 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:21:42 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:21:42 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:26:02 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:26:02 di_lampe timer_2_c1: 15.03.2016 06:52:02
2016-03-14_07:26:42 di_lampe timer_1_c1: 14.03.2016 17:51:04
2016-03-14_07:26:42 di_lampe timer_2_c1: 15.03.2016 06:52:02


Twilight:
Internals:
   CONDITION  20
   CONDITION_TXT Mist
   DEF        xxx xxx 6 xxxxxx
   INDOOR_HORIZON 6
   NAME       twilight
   NR         201
   STATE      100
   SUNPOS_OFFSET 300
   SWIP       0
   TEMPERATUR -1
   TYPE       Twilight
   WEATHER    xxxxxx
   WEATHER_CORRECTION 8
   WEATHER_HORIZON 14
   Readings:
     2016-03-14 09:20:07   aktEvent        sr_weather
     2016-03-14 09:49:51   azimuth         131.22
     2016-03-14 09:49:51   compasspoint    east-southeast
     2016-03-14 09:19:50   condition       20
     2016-03-14 09:19:50   condition_txt   Mist
     2016-03-14 09:49:51   elevation       26.14
     2016-03-14 09:20:07   horizon         14
     2016-03-14 09:20:07   light           6
     2016-03-14 09:20:07   nextEvent       ss_weather
     2016-03-14 09:20:07   nextEventTime   16:56:26
     2016-03-14 09:19:50   sr              06:49:43
     2016-03-14 09:19:50   sr_astro        04:50:05
     2016-03-14 09:19:50   sr_civil        06:10:36
     2016-03-14 09:19:50   sr_indoor       07:29:06
     2016-03-14 09:19:50   sr_naut         05:31:00
     2016-03-14 09:19:50   sr_weather      08:23:28
     2016-03-14 09:19:50   ss              18:30:36
     2016-03-14 09:19:50   ss_astro        20:30:31
     2016-03-14 09:19:50   ss_civil        19:09:50
     2016-03-14 09:19:50   ss_indoor       17:51:04
     2016-03-14 09:19:50   ss_naut         19:49:30
     2016-03-14 09:19:50   ss_weather      16:56:26
     2016-03-14 09:20:07   state           6
     2016-03-14 09:49:51   twilight        100
     2016-03-14 09:49:51   twilight_weather 100
   Timer:
     Twilight_midnight:
       HASH       twilight
       MODIFIER   Midnight
       NAME       twilight_Midnight
     Twilight_perltime:
       HASH       twilight
       MODIFIER   perlTime
       NAME       twilight_perlTime
     Twilight_sr:
       DEG        0
       HASH       twilight
       LIGHT      4
       MODIFIER   sr
       NAME       twilight_sr
       NAMENEXT   sr_indoor
       STATE      4
       SWIP       0
       TIME       1457934583.03
     Twilight_sr_astro:
       DEG        -18
       HASH       twilight
       LIGHT      1
       MODIFIER   sr_astro
       NAME       twilight_sr_astro
       NAMENEXT   sr_naut
       STATE      1
       SWIP       0
       TIME       1457927405
     Twilight_sr_civil:
       DEG        -6
       HASH       twilight
       LIGHT      3
       MODIFIER   sr_civil
       NAME       twilight_sr_civil
       NAMENEXT   sr
       STATE      3
       SWIP       0
       TIME       1457932236.02
     Twilight_sr_indoor:
       DEG        6
       HASH       twilight
       LIGHT      5
       MODIFIER   sr_indoor
       NAME       twilight_sr_indoor
       NAMENEXT   sr_weather
       STATE      5
       SWIP       0
       TIME       1457936946.04
     Twilight_sr_naut:
       DEG        -12
       HASH       twilight
       LIGHT      2
       MODIFIER   sr_naut
       NAME       twilight_sr_naut
       NAMENEXT   sr_civil
       STATE      2
       SWIP       0
       TIME       1457929860.01
     Twilight_sr_weather:
       DEG        14
       HASH       twilight
       LIGHT      6
       MODIFIER   sr_weather
       NAME       twilight_sr_weather
       NAMENEXT   ss_weather
       STATE      6
       SWIP       0
       TIME       1457940208.05
     Twilight_ss:
       DEG        0
       HASH       twilight
       LIGHT      3
       MODIFIER   ss
       NAME       twilight_ss
       NAMENEXT   ss_civil
       STATE      9
       SWIP       0
       TIME       1457976636.97
     Twilight_ss_astro:
       DEG        -18
       HASH       twilight
       LIGHT      0
       MODIFIER   ss_astro
       NAME       twilight_ss_astro
       NAMENEXT   sr_astro
       STATE      12
       SWIP       0
       TIME       1457983831
     Twilight_ss_civil:
       DEG        -6
       HASH       twilight
       LIGHT      2
       MODIFIER   ss_civil
       NAME       twilight_ss_civil
       NAMENEXT   ss_naut
       STATE      10
       SWIP       0
       TIME       1457978990.98
     Twilight_ss_indoor:
       DEG        6
       HASH       twilight
       LIGHT      4
       MODIFIER   ss_indoor
       NAME       twilight_ss_indoor
       NAMENEXT   ss
       STATE      8
       SWIP       0
       TIME       1457974264.96
     Twilight_ss_naut:
       DEG        -12
       HASH       twilight
       LIGHT      1
       MODIFIER   ss_naut
       NAME       twilight_ss_naut
       NAMENEXT   ss_astro
       STATE      11
       SWIP       0
       TIME       1457981370.99
     Twilight_ss_weather:
       DEG        14
       HASH       twilight
       LIGHT      5
       MODIFIER   ss_weather
       NAME       twilight_ss_weather
       NAMENEXT   ss_indoor
       STATE      7
       SWIP       0
       TIME       1457970986.95
     Twilight_sunpos:
       HASH       twilight
       MODIFIER   sunpos
       NAME       twilight_sunpos
   Tw:
     Sr:
       DEG        0
       LIGHT      4
       NAME       sr
       NAMENEXT   sr_indoor
       STATE      4
       SWIP       0
       TIME       1457934583.03
     Sr_astro:
       DEG        -18
       LIGHT      1
       NAME       sr_astro
       NAMENEXT   sr_naut
       STATE      1
       SWIP       0
       TIME       1457927405
     Sr_civil:
       DEG        -6
       LIGHT      3
       NAME       sr_civil
       NAMENEXT   sr
       STATE      3
       SWIP       0
       TIME       1457932236.02
     Sr_indoor:
       DEG        6
       LIGHT      5
       NAME       sr_indoor
       NAMENEXT   sr_weather
       STATE      5
       SWIP       0
       TIME       1457936946.04
     Sr_naut:
       DEG        -12
       LIGHT      2
       NAME       sr_naut
       NAMENEXT   sr_civil
       STATE      2
       SWIP       0
       TIME       1457929860.01
     Sr_weather:
       DEG        14
       LIGHT      6
       NAME       sr_weather
       NAMENEXT   ss_weather
       STATE      6
       SWIP       0
       TIME       1457940208.05
     Ss:
       DEG        0
       LIGHT      3
       NAME       ss
       NAMENEXT   ss_civil
       STATE      9
       SWIP       0
       TIME       1457976636.97
     Ss_astro:
       DEG        -18
       LIGHT      0
       NAME       ss_astro
       NAMENEXT   sr_astro
       STATE      12
       SWIP       0
       TIME       1457983831
     Ss_civil:
       DEG        -6
       LIGHT      2
       NAME       ss_civil
       NAMENEXT   ss_naut
       STATE      10
       SWIP       0
       TIME       1457978990.98
     Ss_indoor:
       DEG        6
       LIGHT      4
       NAME       ss_indoor
       NAMENEXT   ss
       STATE      8
       SWIP       0
       TIME       1457974264.96
     Ss_naut:
       DEG        -12
       LIGHT      1
       NAME       ss_naut
       NAMENEXT   ss_astro
       STATE      11
       SWIP       0
       TIME       1457981370.99
     Ss_weather:
       DEG        14
       LIGHT      5
       NAME       ss_weather
       NAMENEXT   ss_indoor
       STATE      7
       SWIP       0
       TIME       1457970986.95
Attributes:
   event-on-change-reading .*
   stateFormat twilight_weather

Damian

Mit dieser Version werden zumindest keine Events beim Setzen der Timer erzeugt. Sie wird bald eingecheckt werden.

https://forum.fhem.de/index.php/topic,49109.msg424219.html#msg424219

Gruß

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

FunkOdyssey

also muss ich nicht im Twilight-Modul die Ursache suchen?
Gut, dass ich den Thread dann ins DOIF-Forum verschoben habe. ;-)

Damian

Zitat von: FunkOdyssey am 14 März 2016, 20:04:45
also muss ich nicht im Twilight-Modul die Ursache suchen?
Gut, dass ich den Thread dann ins DOIF-Forum verschoben habe. ;-)

Die 5-minutige Aktualisierung der Timer ist natürlich suboptimal. Du könntest in Twilight das Attribut event-min-interval setzen, um die Intervalle höher zu setzen.

Edit:

Du kannst das Zeitintervall auch so definieren:

([{ReadingsVal ("twilight","ss_indoor","00:00")}-{ReadingsVal ("twilight","sr","00:00")}])...

hier wird die Zeit nicht ständig aktualisiert, sondern nur wenn der Timer zuschlägt.

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

FunkOdyssey

Aber es werden doch IM Twilight-Modul die Zeiten gar nicht aktualisiert.
Es werden ja ganz andere Readings periodisch aktualisiert. Die Zeiten stehen fest und werden nur einmal am Tag geändert. Woher kommen dann die 5-minütigen Updates der Timer im DOIF.

Damian

Zitat von: FunkOdyssey am 14 März 2016, 20:28:14
Aber es werden doch IM Twilight-Modul die Zeiten gar nicht aktualisiert.
Es werden ja ganz andere Readings periodisch aktualisiert. Die Zeiten stehen fest und werden nur einmal am Tag geändert. Woher kommen dann die 5-minütigen Updates der Timer im DOIF.

Das ist egal, Zitat aus der Commandref: 
ZitatDas Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird.

Das gilt auch für Timer-Readings.

Du könntest aber auch die Events im Twilight-Modul auf die beiden oben begrenzen mit event-on-update-reading.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Oops. Das habe ich jetzt jahrelang missverstanden.
Alle anderen Lösungen machen bei mir kaum Sinn. Ich brauche das Modul bzw. einige Readings recht zeitnah. Mal schauen. Aber dann weißlich wenigstens, dass es kein Bug ist. 

Danke (mal wieder).

Damian

Zitat von: FunkOdyssey am 14 März 2016, 21:06:54
Oops. Das habe ich jetzt jahrelang missverstanden.
Alle anderen Lösungen machen bei mir kaum Sinn. Ich brauche das Modul bzw. einige Readings recht zeitnah. Mal schauen. Aber dann weißlich wenigstens, dass es kein Bug ist. 

Danke (mal wieder).

ja das Problem ist, dass in FHEM ein State-Event nicht eindeutig ist. Damit wäre z. B. bei [[mydummy]] der dazugehörige Trigger nicht eindeutig erkennbar, daher auf alle Events des Devices.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Was mich hier zusätzlich wundert: Es werden auch DOIFs zyklisch aktualisiert, die das Twilight-Modul nur auslesen und nicht auf die Events reagieren sollen.

[?[twilight:ss_indoor]-01:00]

Mit der neue Ostern-Version treten diese periodischen Aktualisierungen bei beiden Schreibweisen (mit/ohne ?) nicht mehr auf.