"gleiche" DOIFs werden nicht gleich oder gar nicht abgearbeitet

Begonnen von SouzA, 16 Januar 2017, 12:41:26

Vorheriges Thema - Nächstes Thema

SouzA

Hallo liebe Leute,

ich habe beobachtet, dass mache DOIFs nicht abgearbeitet werden, obwohl diese nahezu identisch sind...
Es bestehen verschiedene DOIFs für die Rolladensteuerungen in unterschiedlichen Räumen.
So habe ich z.b. die Rolladensteuerung für das Schlafzimmer di_auto_Rolladen_schlazi und für das Wohnzimmer di_auto_Rolladen_wz benannt.
di_auto_Rolladen_schlazi:

##Wochentags, Übergabe nächste Fahrzeit HOCH mit Twilight wenn dieser Später als der eingegebene Wert
(
(
[[du_Zeit_Twilight_sr]|8]
and
[du_Rolladen_schlazi_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_schlazi_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_schlazi_ho])
)
or
##Wochentags HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_schlazi_ho]|8]
and
[du_Rolladen_schlazi_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_schlazi_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_schlazi_ho])
)
or
##Wochenende HOCH, Setze Zeiten für das Wochenende mit Twilight
(
[[du_Zeit_Twilight_sr]|7]
and
[du_Rolladen_schlazi_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_schlazi_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_schlazi_ho_we])
)
or
##Wochenende HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_schlazi_ho_we]|7]
and
[du_Rolladen_schlazi_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_schlazi_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_schlazi_ho_we])
)
or
##Normaler Modus HOCH ohne SUNSET Wochenende und Wochenzage
(
(
[[du_Rolladen_Zeit_schlazi_ho]|8]
or
[[du_Rolladen_Zeit_schlazi_ho_we]|7]
)
and
[du_Rolladen_schlazi_sunrise] eq "aus" ##Sunrise gesetzt
and
[du_Rolladen_schlazi_auto] eq "an" ##Auf Auto gestellt
)
)
(set schlazi_Rolladen Auf)
DOELSEIF
##RUNTER
##Schreibe den Twilight Wert, wenn früher als die vorgewählte Zeit.
(
(
[[du_Zeit_Twilight_ss]]
and
([du_Zeit_Twilight_ss] le [du_Rolladen_Zeit_schlazi_ru])
and
[du_Rolladen_schlazi_auto] eq "an"
and
[du_Rolladen_schlazi_sunset] eq "an"
)
or
##Schreibe den vorgewählten Wert, wenn dieser früher als vom Twilight
(
[[du_Rolladen_Zeit_schlazi_ru]]
and
([du_Zeit_Twilight_ss] gt [du_Rolladen_Zeit_schlazi_ru])
and
[du_Rolladen_schlazi_auto] eq "an"
and
[du_Rolladen_schlazi_sunset] eq "an"
)
or
##Normaler Modus RUNTER ohne SUNSET
(
[[du_Rolladen_Zeit_schlazi_ru]]
and
[du_Rolladen_schlazi_auto] eq "an"
and
[du_Rolladen_schlazi_sunset] eq "aus"
)
)
(set schlazi_Rolladen Zu)


NAME       di_auto_Rolladen_schlazi
   NR         136
   NTFY_ORDER 50-di_auto_Rolladen_schlazi
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2017-01-16 08:31:45   Device          du_Zeit_Twilight_sr
     2017-01-16 08:06:35   cmd             1.2
     2017-01-16 08:06:35   cmd_event       timer_1
     2017-01-16 08:06:35   cmd_nr          1
     2017-01-16 08:06:35   cmd_seqnr       2
     2017-01-01 10:16:37   e_du_Rolladen_Zeit_schlazi_ho_STATE 06:20
     2017-01-15 07:33:26   e_du_Rolladen_Zeit_schlazi_ho_we_STATE 09:00
     2017-01-13 18:49:45   e_du_Rolladen_Zeit_schlazi_ru_STATE 21:00
     2017-01-09 20:39:33   e_du_Rolladen_schlazi_auto_STATE an
     2017-01-06 19:29:45   e_du_Rolladen_schlazi_sunrise_STATE an
     2017-01-06 19:10:25   e_du_Rolladen_schlazi_sunset_STATE an
     2017-01-16 08:31:45   e_du_Zeit_Twilight_sr_STATE 08:05:42
     2017-01-15 17:17:07   e_du_Zeit_Twilight_ss_STATE 16:56:08
     2017-01-16 08:06:35   state           cmd_1
     2017-01-16 08:31:45   timer_01_c01    17.01.2017 08:05:42|8
     2017-01-16 06:20:00   timer_02_c01    17.01.2017 06:20:00|8
     2017-01-16 08:31:45   timer_03_c01    17.01.2017 08:05:42|7
     2017-01-16 09:00:00   timer_04_c01    17.01.2017 09:00:00|7
     2017-01-16 06:20:00   timer_05_c01    17.01.2017 06:20:00|8
     2017-01-16 09:00:00   timer_06_c01    17.01.2017 09:00:00|7
     2017-01-15 17:17:07   timer_07_c02    16.01.2017 16:56:08
     2017-01-15 21:00:00   timer_08_c02    16.01.2017 21:00:00
     2017-01-15 21:00:00   timer_09_c02    16.01.2017 21:00:00


di_auto_Rolladen_wz:


##Wochentags, Übergabe nächste Fahrzeit HOCH mit Twilight wenn dieser Später als der eingegebene Wert
(
(
[[du_Zeit_Twilight_sr]|8]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_wz_ho])
)
or
##Wochentags HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_wz_ho]|8]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_wz_ho])
)
or
##Wochenende HOCH, Setze Zeiten für das Wochenende mit Twilight
(
[[du_Zeit_Twilight_sr]|7]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_wz_ho_we])
)
or
##Wochenende HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_wz_ho_we]|7]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_wz_ho_we])
)
or
##Normaler Modus HOCH ohne SUNSET Wochenende und Wochenzage
(
(
[[du_Rolladen_Zeit_wz_ho]|8]
or
[[du_Rolladen_Zeit_wz_ho_we]|7]
)
and
[du_Rolladen_wz_sunrise] eq "aus" ##Sunrise gesetzt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
)
)
(set du_wz_Rolladen_haupt Auf)
(set azi_Rolladen Auf)
DOELSEIF
##RUNTER
##Schreibe den Twilight Wert, wenn früher als die vorgewählte Zeit.
(
(
[[du_Zeit_Twilight_ss]]
and
([du_Zeit_Twilight_ss] le [du_Rolladen_Zeit_wz_ru])
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "an"
)
or
##Schreibe den vorgewählten Wert, wenn dieser früher als vom Twilight
(
[[du_Rolladen_Zeit_wz_ru]]
and
([du_Zeit_Twilight_ss] gt [du_Rolladen_Zeit_wz_ru])
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "an"
)
or
##Normaler Modus RUNTER ohne SUNSET
(
[[du_Rolladen_Zeit_wz_ru]]
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "aus"
)
)
(set du_wz_Rolladen_haupt Zu)
(set azi_Rolladen Zu)


NAME       di_auto_Rolladen_wz
   NR         115
   NTFY_ORDER 50-di_auto_Rolladen_wz
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-01-16 08:31:45   Device          du_Zeit_Twilight_sr
     2017-01-15 16:56:08   cmd             2.2
     2017-01-15 16:56:08   cmd_event       timer_7
     2017-01-15 16:56:08   cmd_nr          2
     2017-01-15 16:56:08   cmd_seqnr       2
     2017-01-13 18:49:32   e_du_Rolladen_Zeit_wz_ru_STATE 21:00
     2017-01-09 20:43:59   e_du_Rolladen_wz_auto_STATE an
     2017-01-16 08:31:45   e_du_Zeit_Twilight_sr_STATE 08:05:42
     2017-01-15 17:17:07   e_du_Zeit_Twilight_ss_STATE 16:56:08
     2017-01-15 16:56:08   state           cmd_2
     2017-01-16 08:31:45   timer_01_c01    17.01.2017 08:05:42|8
     2017-01-16 06:30:00   timer_02_c01    17.01.2017 06:30:00|8
     2017-01-16 08:31:45   timer_03_c01    17.01.2017 08:05:42|7
     2017-01-16 09:00:00   timer_04_c01    17.01.2017 09:00:00|7
     2017-01-16 06:30:00   timer_05_c01    17.01.2017 06:30:00|8
     2017-01-16 09:00:00   timer_06_c01    17.01.2017 09:00:00|7
     2017-01-15 17:17:07   timer_07_c02    16.01.2017 16:56:08
     2017-01-15 21:00:00   timer_08_c02    16.01.2017 21:00:00
     2017-01-15 21:00:00   timer_09_c02    16.01.2017 21:00:00


Das kuriose daran ist nun, dass heute morgen mal wieder nur das DOIF für das Schlafzimmer (Aktueller Status cmd_1) aber nicht das DOIF für das Wohnzimmer abgearbeitet wurde (Aktueller Status cmd_2).
Was mir auffällt, dass in den Readings des wz DOIFs keine Readings von den hoch-Dummys auftauchen... Die gibt es aber! Beispiel:
Internals:
   NAME       du_Rolladen_Zeit_wz_ho
   NR         46
   STATE      06:30
   TYPE       dummy
   Readings:
     2017-01-02 05:57:44   state           06:30
Attributes:
   alias      frühestens Hoch:
   devStateIcon .*:rc_BLANK
   group      Rollo Settings WoZi AZi
   icon       icoUhr
   room       Rolladen Settings
   setList    state:time
   sortby     20
   webCmd     state


Ich habe solche Sachen nun schon ein paar mal mitbekommen, seit ich den HM-MOD-UART-USB erweitert habe. Ich glaube, dass FHEM Abarbeitungsprobleme bekommt, wenn zeitgleich etwas von den HM-CC-RT-DN gesendet oder was geschrieben wird. Bzw. es lief schon Wochenlang supi, dann habe ich die Nachrüstung mit dem HM-Zeug vollzogen und nun treten Probleme auf.
Kann das damit was zu tun haben? Wenn ja, warum und was macht man dagegen?

Ich wäre sehr glücklich, wenn jemand mit mir eine Problemlösung erarbeiten würde... Der WAF schwindet gerade.

Vielen Dank!
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Ellert

Du fasst hier, so ist mein Eindruck, eine komplexe Steuerung und Fehlerbeschreibung, mit wenigen Informationen zusammen, so dass ich Dir nur zur Selbsthilfe raten kann, mit folgenden Tipps:

Du könntest Dir DOIFtools installieren und ein FileLog für Deine DOIF erstellen und specialLog setzen, dann hast Du alle Aktivitäten in einem Logfile inklusive DOIF-Listing zu jedem Schaltvorgang. Damit kannst Du die Eingangsbedingungen analysieren und zur Erklärung des Schaltverhalten nutzen.

https://forum.fhem.de/index.php/topic,63938.0.html

Dazu gibt außer der Befehlsreferenz eine Bedienungsanleitung https://wiki.fhem.de/wiki/DOIFtools

Zusätzlich kannst Du diese Hinweise nutzen https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche


SouzA

Hallo,

Danke für die Antwort.
Tja, ich denke da werde ich wohl nicht drum herum kommen...
Werde das mit den Tools mal demnächst durchführen. Muss ich aus zeitlichen Gründen aber aufs We verschieben.

Btw. So komplex ist die Steuerung nicht. Das sind nen paar und / oder Gatter...
ABER: kann es sein, dass fhem von Bearbeitungen abkommt, wenn zeitgleich etwas über die HM-Schnittstelle kommt?
Lasse zur Zeit schon Verbose 5 mitlaufen. Ich glaube, das File wird groß! ;) Aber ich hoffe, daraus erkennen zu können, was da abgeht.

Wie gesagt, die tools werde ich zeitnah testen und mich zurück melden.

Falls sonst noch jemand eine Idee hat, bitte einfach melden...

Vielen Dank.
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

SouzA

Sorry, ich muss nochmal was nachwerfen...

Bei meiner Rollosteuerung handelt es sich in Summe um 5 DOIFs, die im schlechtesten Fall gleichzeitig (z. B. sunrise) abgearbeitet werden sollen. Also bis vor kurzem ging das ja noch wunderbar. Aber mit der neuen Erweiterung scheint einiges mehr an Leben in Fhem gekommen zu sein.
Wenn jetzt in der Sekunde, wo sunset ist, die ersten beiden DOIFs abgearbeitet werden, dann zufällig gerade was von den HM-Geräten kommt und dann die Sekunde des sunset vorbei ist, dann werden die anderen DOIFs ja nicht mehr abgearbeitet, weil die Bedingung nicht mehr erfüllt ist. Oder ist in fhem ne art Warteliste einprogrammiert?

Was anderes kann ich mir zur Zeit nicht erklären...
Meine Frage halt dazu, ob so etwas schonmal jemand beobachtet hat, oder ob das überhaupt möglich ist?

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Timer gehen in FHEM normalerweise nicht verloren. Wenn du konkret ein DOIF hast, welches deiner Meinung nach nicht geschaltet hat, dann poste genau von diesem Zustand ein list des DOIFs.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Hallo,

Oben das di_auto_Rolladen_wz...
Das hätte cmd_1 sein müssen (wie das DOIF darüber, nämlich gleiche Timer aktiviert... ) , ist aber bei cmd_2 stehen geblieben. Ist leider nicht die List in voller Gänze.
Aber vielleicht kann man damit schon was anfangen?
Beim nächsten Fehler kommt die volle List...

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

     2017-01-16 08:31:45   e_du_Zeit_Twilight_sr_STATE 08:05:42
     2017-01-15 17:17:07   e_du_Zeit_Twilight_ss_STATE 16:56:08
     2017-01-16 08:06:35   state           cmd_1
     2017-01-16 08:31:45   timer_01_c01    17.01.2017 08:05:42|8


Vermutlich hast du meine Empfehlung nicht beachtet:

https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent

Deine Timer werden damit ständig aktualisiert und wenn der Timer sich ein wenig auf einen früheren Zeitpunkt verschiebt, dann wird er ggf. bevor er zuschlägt auf den nächsten Tag geschoben.

Also das entsprechende Attribut setzen und beobachten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Zitat von: Damian am 17 Januar 2017, 08:11:50
     2017-01-16 08:31:45   e_du_Zeit_Twilight_sr_STATE 08:05:42
     2017-01-15 17:17:07   e_du_Zeit_Twilight_ss_STATE 16:56:08
     2017-01-16 08:06:35   state           cmd_1
     2017-01-16 08:31:45   timer_01_c01    17.01.2017 08:05:42|8


Vermutlich hast du meine Empfehlung nicht beachtet:

https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent

Deine Timer werden damit ständig aktualisiert und wenn der Timer sich ein wenig auf einen früheren Zeitpunkt verschiebt, dann wird er ggf. bevor er zuschlägt auf den nächsten Tag geschoben.

Also das entsprechende Attribut setzen und beobachten.

Ooh doch... Ich kenne gefühlt das Commandref vom DOIF schon auswendig... Naja fast ;)


Internals:
   DEF        ##Wochentags, Übergabe nächste Fahrzeit HOCH mit Twilight wenn dieser Später als der eingegebene Wert
(
(
[[du_Zeit_Twilight_sr]|8]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_wz_ho])
)
or
##Wochentags HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_wz_ho]|8]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_wz_ho])
)
or
##Wochenende HOCH, Setze Zeiten für das Wochenende mit Twilight
(
[[du_Zeit_Twilight_sr]|7]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] ge [du_Rolladen_Zeit_wz_ho_we])
)
or
##Wochenende HOCH, Schreibe den vorgewählten Wert, wenn dieser Später als vom Twilight
(
[[du_Rolladen_Zeit_wz_ho_we]|7]
and
[du_Rolladen_wz_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
and
([du_Zeit_Twilight_sr] lt [du_Rolladen_Zeit_wz_ho_we])
)
or
##Normaler Modus HOCH ohne SUNSET Wochenende und Wochenzage
(
(
[[du_Rolladen_Zeit_wz_ho]|8]
or
[[du_Rolladen_Zeit_wz_ho_we]|7]
)
and
[du_Rolladen_wz_sunrise] eq "aus" ##Sunrise gesetzt
and
[du_Rolladen_wz_auto] eq "an" ##Auf Auto gestellt
)
)
(set du_wz_Rolladen_haupt Auf)
(set azi_Rolladen Auf)
(setreading du_Zeit_wz_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_wz", "cmd", 0),11,8))})
DOELSEIF
##RUNTER
##Schreibe den Twilight Wert, wenn früher als die vorgewählte Zeit.
(
(
[[du_Zeit_Twilight_ss]]
and
([du_Zeit_Twilight_ss] le [du_Rolladen_Zeit_wz_ru])
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "an"
)
or
##Schreibe den vorgewählten Wert, wenn dieser früher als vom Twilight
(
[[du_Rolladen_Zeit_wz_ru]]
and
([du_Zeit_Twilight_ss] gt [du_Rolladen_Zeit_wz_ru])
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "an"
)
or
##Normaler Modus RUNTER ohne SUNSET
(
[[du_Rolladen_Zeit_wz_ru]]
and
[du_Rolladen_wz_auto] eq "an"
and
[du_Rolladen_wz_sunset] eq "aus"
)
)
(set du_wz_Rolladen_haupt Zu)
(set azi_Rolladen Zu)
   NAME       di_auto_Rolladen_wz
   NR         115
   NTFY_ORDER 50-di_auto_Rolladen_wz
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-01-17 17:20:05   Device          du_Zeit_Twilight_ss
     2017-01-17 16:59:17   cmd             2.2
     2017-01-17 16:59:17   cmd_event       timer_7
     2017-01-17 16:59:17   cmd_nr          2
     2017-01-17 16:59:17   cmd_seqnr       2
     2017-01-16 12:46:55   e_du_Rolladen_Zeit_wz_ho_STATE 06:35
     2017-01-16 12:53:54   e_du_Rolladen_Zeit_wz_ho_we_STATE 09:00
     2017-01-13 18:49:32   e_du_Rolladen_Zeit_wz_ru_STATE 21:00
     2017-01-16 22:09:36   e_du_Rolladen_wz_auto_STATE an
     2017-01-17 08:29:10   e_du_Zeit_Twilight_sr_STATE 08:04:46
     2017-01-17 17:20:05   e_du_Zeit_Twilight_ss_STATE 16:59:17
     2017-01-17 16:59:17   state           cmd_2
     2017-01-17 08:29:10   timer_01_c01    18.01.2017 08:04:46|8
     2017-01-17 06:35:00   timer_02_c01    18.01.2017 06:35:00|8
     2017-01-17 08:29:10   timer_03_c01    18.01.2017 08:04:46|7
     2017-01-17 09:00:00   timer_04_c01    18.01.2017 09:00:00|7
     2017-01-17 06:35:00   timer_05_c01    18.01.2017 06:35:00|8
     2017-01-17 09:00:00   timer_06_c01    18.01.2017 09:00:00|7
     2017-01-17 17:20:05   timer_07_c02    18.01.2017 16:59:17
     2017-01-16 21:00:00   timer_08_c02    17.01.2017 21:00:00
     2017-01-16 21:00:00   timer_09_c02    17.01.2017 21:00:00
   Condition:
     0            ( DOIF_time_once($hash,0,$wday,"8") and InternalDoIf($hash,'du_Rolladen_wz_sunrise','STATE') eq "an"  and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and (InternalDoIf($hash,'du_Zeit_Twilight_sr','STATE') ge InternalDoIf($hash,'du_Rolladen_Zeit_wz_ho','STATE')) ) or  ( DOIF_time_once($hash,1,$wday,"8") and InternalDoIf($hash,'du_Rolladen_wz_sunrise','STATE') eq "an"  and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and (InternalDoIf($hash,'du_Zeit_Twilight_sr','STATE') lt InternalDoIf($hash,'du_Rolladen_Zeit_wz_ho','STATE')) ) or  ( DOIF_time_once($hash,2,$wday,"7") and InternalDoIf($hash,'du_Rolladen_wz_sunrise','STATE') eq "an"  and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and (InternalDoIf($hash,'du_Zeit_Twilight_sr','STATE') ge InternalDoIf($hash,'du_Rolladen_Zeit_wz_ho_we','STATE')) ) or  ( DOIF_time_once($hash,3,$wday,"7") and InternalDoIf($hash,'du_Rolladen_wz_sunrise','STATE') eq "an"  and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and (InternalDoIf($hash,'du_Zeit_Twilight_sr','STATE') lt InternalDoIf($hash,'du_Rolladen_Zeit_wz_ho_we','STATE')) ) or  ( ( DOIF_time_once($hash,4,$wday,"8")  or DOIF_time_once($hash,5,$wday,"7") ) and InternalDoIf($hash,'du_Rolladen_wz_sunrise','STATE') eq "aus"  and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" )
     1            ( DOIF_time_once($hash,6,$wday) and (InternalDoIf($hash,'du_Zeit_Twilight_ss','STATE') le InternalDoIf($hash,'du_Rolladen_Zeit_wz_ru','STATE')) and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and  InternalDoIf($hash,'du_Rolladen_wz_sunset','STATE') eq "an" ) or  ( DOIF_time_once($hash,7,$wday) and (InternalDoIf($hash,'du_Zeit_Twilight_ss','STATE') gt InternalDoIf($hash,'du_Rolladen_Zeit_wz_ru','STATE')) and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and  InternalDoIf($hash,'du_Rolladen_wz_sunset','STATE') eq "an" ) or  ( DOIF_time_once($hash,8,$wday) and InternalDoIf($hash,'du_Rolladen_wz_auto','STATE') eq "an" and  InternalDoIf($hash,'du_Rolladen_wz_sunset','STATE') eq "aus" )
   Days:
     0          8
     1          8
     2          7
     3          7
     4          8
     5          7
   Devices:
     0           du_Rolladen_wz_sunrise du_Rolladen_wz_auto du_Zeit_Twilight_sr du_Rolladen_Zeit_wz_ho du_Rolladen_Zeit_wz_ho_we
     1           du_Zeit_Twilight_ss du_Rolladen_Zeit_wz_ru du_Rolladen_wz_auto du_Rolladen_wz_sunset
     all         du_Rolladen_wz_sunrise du_Rolladen_wz_auto du_Zeit_Twilight_sr du_Rolladen_Zeit_wz_ho du_Rolladen_Zeit_wz_ho_we du_Zeit_Twilight_ss du_Rolladen_Zeit_wz_ru du_Rolladen_wz_sunset
   Do:
     0:
       0          set du_wz_Rolladen_haupt Auf
       1          set azi_Rolladen Auf
       2          setreading du_Zeit_wz_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_wz", "cmd", 0),11,8))}
     1:
       0          set du_wz_Rolladen_haupt Zu
       1          set azi_Rolladen Zu
     2:
   Helper:
     event      16:59:17
     globalinit 1
     last_timer 9
     sleeptimer -1
     timerdev
     timerevent timer_7
     triggerDev du_Zeit_Twilight_ss
     timerevents:
       timer_7
     timereventsState:
       state: 16:59:17
     triggerEvents:
       16:59:17
     triggerEventsState:
       state: 16:59:17
   Internals:
     0           du_Rolladen_wz_sunrise:STATE du_Rolladen_wz_auto:STATE du_Zeit_Twilight_sr:STATE du_Rolladen_Zeit_wz_ho:STATE du_Rolladen_Zeit_wz_ho_we:STATE
     1           du_Zeit_Twilight_ss:STATE du_Rolladen_Zeit_wz_ru:STATE du_Rolladen_wz_auto:STATE du_Rolladen_wz_sunset:STATE
     all         du_Rolladen_wz_sunrise:STATE du_Rolladen_wz_auto:STATE du_Zeit_Twilight_sr:STATE du_Rolladen_Zeit_wz_ho:STATE du_Rolladen_Zeit_wz_ho_we:STATE du_Zeit_Twilight_ss:STATE du_Rolladen_Zeit_wz_ru:STATE du_Rolladen_wz_sunset:STATE
   Interval:
   Itimer:
     all         du_Zeit_Twilight_sr du_Rolladen_Zeit_wz_ho du_Rolladen_Zeit_wz_ho_we du_Zeit_Twilight_ss du_Rolladen_Zeit_wz_ru
   Localtime:
     0          1484723086
     1          1484717700
     2          1484723086
     3          1484726400
     4          1484717700
     5          1484726400
     6          1484755157
     7          1484683200
     8          1484683200
   Readings:
   Realtime:
     0          08:04:46
     1          06:35:00
     2          08:04:46
     3          09:00:00
     4          06:35:00
     5          09:00:00
     6          16:59:17
     7          21:00:00
     8          21:00:00
   Regexp:
     0:
     1:
     All:
   State:
   Time:
     0          [du_Zeit_Twilight_sr]
     1          [du_Rolladen_Zeit_wz_ho]
     2          [du_Zeit_Twilight_sr]
     3          [du_Rolladen_Zeit_wz_ho_we]
     4          [du_Rolladen_Zeit_wz_ho]
     5          [du_Rolladen_Zeit_wz_ho_we]
     6          [du_Zeit_Twilight_ss]
     7          [du_Rolladen_Zeit_wz_ru]
     8          [du_Rolladen_Zeit_wz_ru]
   Timecond:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          1
     7          1
     8          1
   Timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
   Timers:
     0           0  1  2  3  4  5
     1           6  7  8
   Trigger:
   Triggertime:
     1484683200:
       localtime  1484683200
       Hash:
     1484717700:
       localtime  1484717700
       Hash:
     1484723086:
       localtime  1484723086
       Hash:
     1484726400:
       localtime  1484726400
       Hash:
     1484755157:
       localtime  1484755157
       Hash:
Attributes:
   checkReadingEvent 1
   do         always
   room       Rolladen Settings
   timerevent 1



Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Die Frage stellt sich mir jetzt, warum wird die Zeit um 8:29:10 gesetzt, wenn das Reading normalerweise im twilight modul um 00:01 Uhr gesetzt wird:

2017-01-17 08:29:10   e_du_Zeit_Twilight_sr_STATE 08:04:46
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Hi,

danke dafür, dass du dir das überhaupt anguckst!! Könnt ich hier YES-Törtchen verschenken, hättest du jetzt nen paar davon ;)

Also,
die Benennung der Dummys du_Zeit_Twilight_sr und du_Zeit_Twilight_SS ist historisch gewachsen.
Ich bin irgendwann von Twilight auf sunset_el und sunrise_el umgeschwenkt, weil die mehr als 1x mitten in der Nacht Readings aktualisieren.
Mit den Dummys zeige ich im Tableau auch die nächsten Fahrzeiten an, je nach gewählter Art (manuell, civil, indoor....). Das ging mit Twilight nie, aber mit sunset/sunrise.
Ich hatte aber keine Lust, alle DIs noch einmal anzufassen. Deswegen ist es bei dem Namen geblieben.

Ist das verständlich beschrieben?

Bis denn
SouzA

Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

#10
Zitat von: SouzA am 17 Januar 2017, 20:37:39
Hi,

danke dafür, dass du dir das überhaupt anguckst!! Könnt ich hier YES-Törtchen verschenken, hättest du jetzt nen paar davon ;)

Also,
die Benennung der Dummys du_Zeit_Twilight_sr und du_Zeit_Twilight_SS ist historisch gewachsen.
Ich bin irgendwann von Twilight auf sunset_el und sunrise_el umgeschwenkt, weil die mehr als 1x mitten in der Nacht Readings aktualisieren.
Mit den Dummys zeige ich im Tableau auch die nächsten Fahrzeiten an, je nach gewählter Art (manuell, civil, indoor....). Das ging mit Twilight nie, aber mit sunset/sunrise.
Ich hatte aber keine Lust, alle DIs noch einmal anzufassen. Deswegen ist es bei dem Namen geblieben.

Ist das verständlich beschrieben?

Bis denn
SouzA

Dann ist da wahrscheinlich der Hund begraben:

sunrise steht 08:05:42. nun wird um diese Zeit dein Dummy  du_Zeit_Twilight_sr gesetzt - auf die Zeit von morgen, die ist bekanntlich früher, da wir jetzt zunehmende Tage haben. Das führt beim DOIF zum Neusetzen der Zeit auf morgen, weil die Zeit ja kleiner als 08:05:42 ist und damit kommt dein eingentliches DOIF gar nicht zum Zuge, weil paar Millisekunden zuvor die Zeit auf morgen gesetzt wurde, bevor es um 08:05:42 etwas tun konnte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

#11
Jaein... Du willst also doch noch alles drum rum sehen.
Hier jetzt die Dummy-Aktualisierung vom sunrise...
Also gut:


Internals:
   DEF        ##Über eingabemaske wann lt. sunrise_el hochgefahren werden soll... Rolladen-Settings im HomePortal
(
(
[du_Rolladen_sr] eq "sr"
and
[({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)] ##Timer 1 versetzt um zwei Sekunden, wegen zu schnellem aktualisieren der daruf folgenden Befehle bzw Fahrzeiten der Rollos.
)
or
([du_Rolladen_sr] eq "sr")
)
(setreading du_Zeit_Twilight_sr sr REAL)
(set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"])
DOELSEIF
(
(
[du_Rolladen_sr] eq "sr_civil"
and
[({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)] ##Timer 2
)
or
([du_Rolladen_sr] eq "sr_civil")
)
(setreading du_Zeit_Twilight_sr sr CIVIL)
(set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"])
DOELSEIF
(
(
[du_Rolladen_sr] eq "sr_indoor"
and
[({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)] ##Timer 3
)
or
([du_Rolladen_sr] eq "sr_indoor")
)
(setreading du_Zeit_Twilight_sr sr HORIZON=-3)
(set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"])
DOELSEIF
(
(
[du_Rolladen_sr] eq "sr_weather"
and
[({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)] ##Timer 4
)
or
([du_Rolladen_sr] eq "sr_weather")
)
(setreading du_Zeit_Twilight_sr sr HORIZON=[Twilight:&WEATHER_HORIZON])
(set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"])
DOELSEIF
([{sunrise("[du_Zeit_Twilight_sr:sr]")}]) ##Timer 5 "Arbeitstimer"
DOELSEIF
([{sunrise("REAL")}]) ##Timer 6
DOELSEIF
([{sunrise("CIVIL")}]) ##Timer 7
DOELSEIF
([{sunrise("HORIZON=-3")}]) ##Timer 8 "sr_indoor"
DOELSEIF
([{sunrise("HORIZON=[Twilight:&WEATHER_HORIZON]")}]) ##Timer 9 "sr_weather"
   NAME       di_Zeit_sunrise
   NR         159
   NTFY_ORDER 50-di_Zeit_sunrise
   STATE      cmd_3
   TYPE       DOIF
   Readings:
     2017-01-15 12:41:32   Device          du_Rolladen_sr
     2017-01-17 08:29:10   cmd             3.2
     2017-01-17 08:29:10   cmd_event       timer_3
     2017-01-17 08:29:10   cmd_nr          3
     2017-01-17 08:29:10   cmd_seqnr       2
     2017-01-15 12:41:32   e_du_Rolladen_sr_STATE sr_indoor
     2017-01-17 08:29:10   state           cmd_3
     2017-01-17 08:29:10   timer_01_c01    18.01.2017 08:04:48
     2017-01-17 08:29:10   timer_02_c02    18.01.2017 08:04:48
     2017-01-17 08:29:10   timer_03_c03    18.01.2017 08:04:48
     2017-01-17 08:29:10   timer_04_c04    18.01.2017 08:04:48
     2017-01-17 08:29:10   timer_05_c05    18.01.2017 08:04:46
     2017-01-17 08:29:10   timer_06_c06    18.01.2017 08:28:07
     2017-01-17 07:43:20   timer_07_c07    18.01.2017 07:42:28
     2017-01-17 08:05:44   timer_08_c08    18.01.2017 08:04:46
     2017-01-17 21:05:31   timer_09_c09    18.01.2017 08:17:04
   Condition:
     0            ( InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr" and DOIF_time_once($hash,0,$wday)  ) or (InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr")
     1            ( InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_civil" and DOIF_time_once($hash,1,$wday)  ) or (InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_civil")
     2            ( InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_indoor" and DOIF_time_once($hash,2,$wday)  ) or (InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_indoor")
     3            ( InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_weather" and DOIF_time_once($hash,3,$wday)  ) or (InternalDoIf($hash,'du_Rolladen_sr','STATE') eq "sr_weather")
     4          DOIF_time_once($hash,4,$wday)
     5          DOIF_time_once($hash,5,$wday)
     6          DOIF_time_once($hash,6,$wday)
     7          DOIF_time_once($hash,7,$wday)
     8          DOIF_time_once($hash,8,$wday)
   Days:
   Devices:
     0           du_Rolladen_sr
     1           du_Rolladen_sr
     2           du_Rolladen_sr
     3           du_Rolladen_sr
     all         du_Rolladen_sr
   Do:
     0:
       0          setreading du_Zeit_Twilight_sr sr REAL
       1          set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"]
     1:
       0          setreading du_Zeit_Twilight_sr sr CIVIL
       1          set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"]
     2:
       0          setreading du_Zeit_Twilight_sr sr HORIZON=-3
       1          set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"]
     3:
       0          setreading du_Zeit_Twilight_sr sr HORIZON=[Twilight:&WEATHER_HORIZON]
       1          set du_Zeit_Twilight_sr [di_Zeit_sunrise:timer_05_c05:"(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d):(\d\d)":"$4:$5:$6"]
     4:
       0
     5:
       0
     6:
       0
     7:
       0
     8:
       0
   Helper:
     event      timer_3
     globalinit 1
     last_timer 9
     sleeptimer -1
     timerdev
     timerevent timer_3
     triggerDev
     timerevents:
       timer_3
     timereventsState:
       state: sr_indoor
     triggerEvents:
       timer_3
     triggerEventsState:
       state: sr_indoor
   Internals:
     0           du_Rolladen_sr:STATE
     1           du_Rolladen_sr:STATE
     2           du_Rolladen_sr:STATE
     3           du_Rolladen_sr:STATE
     all         du_Rolladen_sr:STATE
   Interval:
   Itimer:
     all         du_Zeit_Twilight_sr Twilight
   Localtime:
     0          1484723088
     1          1484723088
     2          1484723088
     3          1484723088
     4          1484723086
     5          1484724487
     6          1484721748
     7          1484723086
     8          1484723824
   Readings:
   Realtime:
     0          08:04:48
     1          08:04:48
     2          08:04:48
     3          08:04:48
     4          08:04:46
     5          08:28:07
     6          07:42:28
     7          08:04:46
     8          08:17:04
   Regexp:
     0:
     1:
     2:
     3:
     All:
   State:
   Time:
     0          ({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)
     1          ({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)
     2          ({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)
     3          ({sunrise("[du_Zeit_Twilight_sr:sr]")}+2)
     4          {sunrise("[du_Zeit_Twilight_sr:sr]")}
     5          {sunrise("REAL")}
     6          {sunrise("CIVIL")}
     7          {sunrise("HORIZON=-3")}
     8          {sunrise("HORIZON=[Twilight:&WEATHER_HORIZON]")}
   Timecond:
     0          0
     1          1
     2          2
     3          3
     4          4
     5          5
     6          6
     7          7
     8          8
   Timer:
     0          1
     1          1
     2          1
     3          1
     4          1
     5          0
     6          0
     7          0
     8          0
   Timers:
     0           0
     1           1
     2           2
     3           3
     4           4
     5           5
     6           6
     7           7
     8           8
   Trigger:
   Triggertime:
     1484721748:
       localtime  1484721748
       Hash:
     1484723086:
       localtime  1484723086
       Hash:
     1484723088:
       localtime  1484723088
       Hash:
     1484723824:
       localtime  1484723824
       Hash:
     1484724487:
       localtime  1484724487
       Hash:
Attributes:
   do         always
   room       Rolladen Settings
   timerevent 1


Da hab ich schon immer 2 Sekunden drauf gepackt...
Das den Code jetzt jemand versteht erwarte ich in keiner Weise. Ist auch nicht mein Erwarten und wäre auch zu viel verlangt. Aber über dieses Thema mit dem zu frühen Aktualisieren war ich schon vorher gefallen und hatte mich damit auseinander gesetzt.
Außerdem ist es ja so, dass meistens, so wie heute morgen alle Rollos fahren, so wie sie sollen. Aber manchmal halt nur partiell... das bedeutet ja eigentlich, dass der Timer vernünftig gesetzt wurde.
In manchen DIs aber aus irgendwelchen Gründen aber nicht abgefahren wird.

FETTEN DANK!
SouzA

EDIT:
Zur Vollständigkeit...
Internals:
   NAME       du_Zeit_Twilight_sr
   NR         90
   STATE      08:04:46
   TYPE       dummy
   Readings:
     2017-01-17 08:29:09   sr              HORIZON=-3
     2017-01-17 08:29:09   state           08:04:46
Attributes:
   room       Rolladen Settings
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

#12
Kannst ja mit der Verzögerung testen, ansonsten würde ich, wenn es die gleiche Zeit sein soll, einfach sunrise direkt im DOIF angeben, es ist zwar etwas Umstellungsarbeit, aber dafür sollte es zuverlässig funktionieren.

ZitatIn manchen DIs aber aus irgendwelchen Gründen aber nicht abgefahren wird.

Klar, es hängt davon ab, welches Modul zum gleichen Zeitpunkttrigger zufällig zuerst dran kommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Direkt im DOIF ist gut... 8)
Das wäre dann in 5 Rolladen DIs. So muss ich nur 1x was ändern, wenn was ist.
Sonst ist das nen heiden Aufwand.

Also du meinst, die Verzögerung von jetzt 2 Sekunden auf z.B. 10 oder 20 Sekunden hoch setzen?

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Zitat von: SouzA am 17 Januar 2017, 21:55:24
Direkt im DOIF ist gut... 8)
Das wäre dann in 5 Rolladen DIs. So muss ich nur 1x was ändern, wenn was ist.
Sonst ist das nen heiden Aufwand.

Also du meinst, die Verzögerung von jetzt 2 Sekunden auf z.B. 10 oder 20 Sekunden hoch setzen?

Bis denn
SouzA


Vermutlich reicht schon eine Sekunde, allerdings wirst du zwei Trigger bekommen, wenn die Tage wieder kürzer werden ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF