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
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
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
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
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.
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
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.
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
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
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
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.
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
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.
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
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 ;)
Aber ich gehe nun korrekt in der Annahme, dass FHEM probleme mit zeitlichen Abarbeitungen hat, wenn zufällig zeitglich was über Schnittstellen ins System kommt?!
Weil wie gesagt, es funktionierte alles bis zu dem Tag, bis ich den HM-MOD erweitert habe. Seit dem steigen die DIs aus...
Ich kann das im übrigen auch bei meiner Terassentür sehen.
Wenn die Rolläden dort runter sind und ich den Hebel öffne, fährt das Rollo hoch. Zumindest bis ich die HM-CC-RT-DN (2x) nachgerüstet hatte.
Die habe ich nämlich versucht zeitgleich über burstxmit auf off zu stellen. Geht NICHT! Die Thermostate fahren zu. Der Rolladen bleibt allerdings auch zu... Kein Befehl an den EnOcean-Aktor.
Jetzt habe ich den burstxmit um 10Sekunden verzögert und es geht wieder alles so wie es sollte.
Aus meiner bisherigen Erfahrung heraus sollte man es vermeiden Systeme zu mischen! Man kann zwar alles gut einbinden und miteinander verknüpfen, zuverlässig ist aber leider etwas anderes.
Das soll keine Kritik an der hervorragenden Arbeit der freiwilligen Coder hier sein, das ist ohne Frage eine respektable und super Arbeit.
Aber mir persönlich zeigt es mal wieder auf, wo freeware aufhört und shareware anfängt. Oder zumindest, dass fhem doch leider nicht das Allheilmittel im Smarthome-Bereich ist.
Die DOIFTtools werde ich trotzdem demnächst mal testen ;)
Vielen Dank für eure Hilfe
Bis Denn
SouzA
Zitat von: SouzA am 18 Januar 2017, 00:16:09
Aber ich gehe nun korrekt in der Annahme, dass FHEM probleme mit zeitlichen Abarbeitungen hat, wenn zufällig zeitglich was über Schnittstellen ins System kommt?!
Weil wie gesagt, es funktionierte alles bis zu dem Tag, bis ich den HM-MOD erweitert habe. Seit dem steigen die DIs aus...
Das kann man nicht sagen. Wenn zum "gleichen" Zeitpunkt etwas sequenziell abgearbeitet werden soll, dann kann das nur nacheinander geschehen. Für den User ist es "zufällig", in Wirklichkeit hängt es vom programmierten Algorithmus ab und den Gegebeheiten von außen und die können sich je nach Modul unterscheiden, z. B. Reihenfolge der Definitionen in der cfg oder Reihenfolge der Module eines Timers im Speicher der zentralen Zeitsteuerungsfunktion in FHEM, die wiederum von irgend welchen Faktoren abhängt usw.
Hallo,
da ich absolut nicht weiter kam, habe ich das jetzt in den DOIFs direkt implementiert...
ABER: Ein DOIF wird abgearbeitet, die anderen nicht. Obwohl die eigentlich gleich sind...
Morgens wird nur ein DOIF getriggert, abends alle...
Hier das, welches heute morgen ausgelöst hat:
Internals:
DEF (
(
(
(
##Wochentags, Übergabe nächste Fahrzeit HOCH mit sunrise aber nicht früher als eingestellt
[{sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi1_ho]")}|8]
or
##Wochenende, Übergabe nächste Fahrzeit HOCH mit sunrise aber nicht früher als eingestellt
[{sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi1_ho_we]")}|7]
)
and
[du_Rolladen_kizi1_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
)
or
##Wochenende und Wochentage, Normaler Modus HOCH ohne sunrise
(
(
[[du_Rolladen_Zeit_kizi1_ho]|8]
or
[[du_Rolladen_Zeit_kizi1_ho_we]|7]
)
and
[du_Rolladen_kizi1_sunrise] eq "aus" ##Sunrise nicht gesetzt
)
)
and
[du_Rolladen_kizi1_auto] eq "an" ##Auf Auto gestellt
)
(set kizi1_Rolladen Auf)
(setreading du_Zeit_kizi1_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_kizi1", "cmd", 0),11,8))})
DOELSEIF
##RUNTER
##Schreibe den sunset Wert, nicht früher als 15:30 und nicht nach eingestellter Zeit
(
(
(
[{sunset("[du_Zeit_Twilight_ss]",0,"15:30","[du_Rolladen_Zeit_kizi1_ru]")}]
and
[du_Rolladen_kizi1_sunset] eq "an"
)
or
##Normaler Modus RUNTER ohne SUNSET
(
[[du_Rolladen_Zeit_kizi1_ru]]
and
[du_Rolladen_kizi1_sunset] eq "aus"
)
)
and
[du_Rolladen_kizi1_auto] eq "an"
)
(set kizi1_Rolladen Zu)
##(setreading du_Zeit_kizi1_ss BefRu {(substr(ReadingsTimestamp("di_auto_Rolladen_kizi1", "cmd", 0),11,8))})
NAME di_auto_Rolladen_kizi1
NR 133
NTFY_ORDER 50-di_auto_Rolladen_kizi1
STATE cmd_2
TYPE DOIF
Readings:
2017-01-26 17:12:42 cmd 2
2017-01-26 17:12:42 cmd_event timer_5
2017-01-26 17:12:42 cmd_nr 2
2017-01-26 17:12:42 state cmd_2
2017-01-26 19:45:48 timer_01_c01 27.01.2017 07:54:27|8
2017-01-26 19:45:48 timer_02_c01 27.01.2017 09:00:00|7
2017-01-26 19:43:47 timer_03_c01 27.01.2017 06:15:00|8
2017-01-26 19:43:47 timer_04_c01 27.01.2017 09:00:00|7
2017-01-26 19:43:47 timer_05_c02 27.01.2017 17:14:27
2017-01-26 19:43:47 timer_06_c02 27.01.2017 19:30:00
Condition:
0 ( ( ( DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7") ) and InternalDoIf($hash,'du_Rolladen_kizi1_sunrise','STATE') eq "an" ) or ( ( DOIF_time_once($hash,2,$wday,"8") or DOIF_time_once($hash,3,$wday,"7") ) and InternalDoIf($hash,'du_Rolladen_kizi1_sunrise','STATE') eq "aus" ) ) and InternalDoIf($hash,'du_Rolladen_kizi1_auto','STATE') eq "an"
1 ( ( DOIF_time_once($hash,4,$wday) and InternalDoIf($hash,'du_Rolladen_kizi1_sunset','STATE') eq "an" ) or ( DOIF_time_once($hash,5,$wday) and InternalDoIf($hash,'du_Rolladen_kizi1_sunset','STATE') eq "aus" ) ) and InternalDoIf($hash,'du_Rolladen_kizi1_auto','STATE') eq "an"
Days:
0 8
1 7
2 8
3 7
Devices:
0 du_Rolladen_kizi1_sunrise du_Rolladen_kizi1_auto
1 du_Rolladen_kizi1_sunset du_Rolladen_kizi1_auto
all du_Rolladen_kizi1_sunrise du_Rolladen_kizi1_auto du_Rolladen_kizi1_sunset
Do:
0:
0 set kizi1_Rolladen Auf
1 setreading du_Zeit_kizi1_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_kizi1", "cmd", 0),11,8))}
1:
0 set kizi1_Rolladen Zu
Helper:
globalinit 1
last_timer 6
sleeptimer -1
Internals:
0 du_Rolladen_kizi1_sunrise:STATE du_Rolladen_kizi1_auto:STATE
1 du_Rolladen_kizi1_sunset:STATE du_Rolladen_kizi1_auto:STATE
all du_Rolladen_kizi1_sunrise:STATE du_Rolladen_kizi1_auto:STATE du_Rolladen_kizi1_sunset:STATE
Itimer:
all du_Rolladen_Zeit_kizi1_ho du_Rolladen_Zeit_kizi1_ho_we du_Rolladen_Zeit_kizi1_ru du_Zeit_Twilight_sr du_Zeit_Twilight_ss
Localtime:
0 1485500067
1 1485504000
2 1485494100
3 1485504000
4 1485533667
5 1485541800
Realtime:
0 07:54:27
1 09:00:00
2 06:15:00
3 09:00:00
4 17:14:27
5 19:30:00
Regexp:
All:
State:
Time:
0 {sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi1_ho]")}
1 {sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi1_ho_we]")}
2 [du_Rolladen_Zeit_kizi1_ho]
3 [du_Rolladen_Zeit_kizi1_ho_we]
4 {sunset("[du_Zeit_Twilight_ss]",0,"15:30","[du_Rolladen_Zeit_kizi1_ru]")}
5 [du_Rolladen_Zeit_kizi1_ru]
Timecond:
0 0
1 0
2 0
3 0
4 1
5 1
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timers:
0 0 1 2 3
1 4 5
Triggertime:
1485494100:
localtime 1485494100
Hash:
1485500067:
localtime 1485500067
Hash:
1485504000:
localtime 1485504000
Hash:
1485533667:
localtime 1485533667
Hash:
1485541800:
localtime 1485541800
Hash:
Attributes:
checkReadingEvent 1
checkall all
do always
room Rolladen Settings
timerevent 1
verbose 5
Und hier eines von denen, die nicht ausgelöst haben...:
Internals:
DEF (
(
(
(
##Wochentags, Übergabe nächste Fahrzeit HOCH mit sunrise aber nicht früher als eingestellt
[{sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi2_ho]")}|8]
or
##Wochenende, Übergabe nächste Fahrzeit HOCH mit sunrise aber nicht früher als eingestellt
[{sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi2_ho_we]")}|7]
)
and
[du_Rolladen_kizi2_sunrise] eq "an" ##Mit Sonnenaufgang gewählt
)
or
##Wochenende und Wochentage, Normaler Modus HOCH ohne sunrise
(
(
[[du_Rolladen_Zeit_kizi2_ho]|8]
or
[[du_Rolladen_Zeit_kizi2_ho_we]|7]
)
and
[du_Rolladen_kizi2_sunrise] eq "aus" ##Sunrise gesetzt
)
)
and
[du_Rolladen_kizi2_auto] eq "an" ##Auf Auto gestellt
)
(set kizi2_Rolladen Auf)
(setreading du_Zeit_kizi2_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_kizi2", "cmd", 0),11,8))})
DOELSEIF
##RUNTER
##Schreibe den sunset Wert, nicht früher als 15:30 und nicht nach eingestellter Zeit
(
(
(
[{sunset("[du_Zeit_Twilight_ss]",0,"15:30","[du_Rolladen_Zeit_kizi2_ru]")}]
and
[du_Rolladen_kizi2_sunset] eq "an"
)
or
##Normaler Modus RUNTER ohne SUNSET
(
[[du_Rolladen_Zeit_kizi2_ru]]
and
[du_Rolladen_kizi2_sunset] eq "aus"
)
)
and
[du_Rolladen_kizi2_auto] eq "an"
)
(set kizi2_Rolladen Zu)
NAME di_auto_Rolladen_kizi2
NR 134
NTFY_ORDER 50-di_auto_Rolladen_kizi2
STATE cmd_2
TYPE DOIF
Readings:
2017-01-26 17:12:44 cmd 2
2017-01-26 17:12:44 cmd_event timer_5
2017-01-26 17:12:44 cmd_nr 2
2017-01-26 17:12:44 state cmd_2
2017-01-26 19:45:49 timer_01_c01 27.01.2017 07:54:27|8
2017-01-26 19:45:49 timer_02_c01 27.01.2017 10:00:00|7
2017-01-26 19:43:47 timer_03_c01 27.01.2017 07:30:00|8
2017-01-26 19:43:48 timer_04_c01 27.01.2017 10:00:00|7
2017-01-26 19:43:48 timer_05_c02 27.01.2017 17:14:27
2017-01-26 19:43:48 timer_06_c02 27.01.2017 17:30:00
Condition:
0 ( ( ( DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7") ) and InternalDoIf($hash,'du_Rolladen_kizi2_sunrise','STATE') eq "an" ) or ( ( DOIF_time_once($hash,2,$wday,"8") or DOIF_time_once($hash,3,$wday,"7") ) and InternalDoIf($hash,'du_Rolladen_kizi2_sunrise','STATE') eq "aus" ) ) and InternalDoIf($hash,'du_Rolladen_kizi2_auto','STATE') eq "an"
1 ( ( DOIF_time_once($hash,4,$wday) and InternalDoIf($hash,'du_Rolladen_kizi2_sunset','STATE') eq "an" ) or ( DOIF_time_once($hash,5,$wday) and InternalDoIf($hash,'du_Rolladen_kizi2_sunset','STATE') eq "aus" ) ) and InternalDoIf($hash,'du_Rolladen_kizi2_auto','STATE') eq "an"
Days:
0 8
1 7
2 8
3 7
Devices:
0 du_Rolladen_kizi2_sunrise du_Rolladen_kizi2_auto
1 du_Rolladen_kizi2_sunset du_Rolladen_kizi2_auto
all du_Rolladen_kizi2_sunrise du_Rolladen_kizi2_auto du_Rolladen_kizi2_sunset
Do:
0:
0 set kizi2_Rolladen Auf
1 setreading du_Zeit_kizi2_sr BefHo {(substr(ReadingsTimestamp("di_auto_Rolladen_kizi2", "cmd", 0),11,8))}
1:
0 set kizi2_Rolladen Zu
Helper:
globalinit 1
last_timer 6
sleeptimer -1
Internals:
0 du_Rolladen_kizi2_sunrise:STATE du_Rolladen_kizi2_auto:STATE
1 du_Rolladen_kizi2_sunset:STATE du_Rolladen_kizi2_auto:STATE
all du_Rolladen_kizi2_sunrise:STATE du_Rolladen_kizi2_auto:STATE du_Rolladen_kizi2_sunset:STATE
Itimer:
all du_Rolladen_Zeit_kizi2_ho du_Rolladen_Zeit_kizi2_ho_we du_Rolladen_Zeit_kizi2_ru du_Zeit_Twilight_sr du_Zeit_Twilight_ss
Localtime:
0 1485500067
1 1485507600
2 1485498600
3 1485507600
4 1485533667
5 1485534600
Realtime:
0 07:54:27
1 10:00:00
2 07:30:00
3 10:00:00
4 17:14:27
5 17:30:00
Regexp:
All:
State:
Time:
0 {sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi2_ho]")}
1 {sunrise("[du_Zeit_Twilight_sr]",0,"[du_Rolladen_Zeit_kizi2_ho_we]")}
2 [du_Rolladen_Zeit_kizi2_ho]
3 [du_Rolladen_Zeit_kizi2_ho_we]
4 {sunset("[du_Zeit_Twilight_ss]",0,"15:30","[du_Rolladen_Zeit_kizi2_ru]")}
5 [du_Rolladen_Zeit_kizi2_ru]
Timecond:
0 0
1 0
2 0
3 0
4 1
5 1
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timers:
0 0 1 2 3
1 4 5
Triggertime:
1485498600:
localtime 1485498600
Hash:
1485500067:
localtime 1485500067
Hash:
1485507600:
localtime 1485507600
Hash:
1485533667:
localtime 1485533667
Hash:
1485534600:
localtime 1485534600
Hash:
Attributes:
checkReadingEvent 1
checkall all
do always
room Rolladen Settings
timerevent 1
verbose 5
Ich sehe da keinen Unterschied für cmd1 (Morgens hoch)... Dennoch wird es nicht gefahren.
Habt ihr da nen Tipp?
Zu den DoifTools:
Äußerst Umfangreich. Ich habe leider noch nicht erkannt, wie ich das auf meine Problematik anwenden kann.
Bin äußerst dankbar für Tipps!!
Bis denn
SouzA
Wenn Du Deine beiden DOIF mit DOIFtools loggst und specialLog setzt, dann wird für jeden Schaltvorgang (Statuswechsel, wait_timer) ein Listing der DOIF ins Logfile geschrieben und alle sich ändernden Readings der beteiligten Geräte. Damit kannst Du vielleicht erkennen, ob eine Voraussetzung zum Schalten der "gleichen DOIF" für das nicht schaltende DOIF fehlt.
Logfile erstellen siehe: https://wiki.fhem.de/wiki/DOIFtools#Erstellen_eines_Debug-Logfile
Ich hatte das kizi2 mal "normal" geloggt.
Der Timer war ja auch gesetzt auf den Sonnenaufgang. (Stand auch im Reading..)
2017-01-26_05:43:36 di_auto_Rolladen_kizi2 timer_05_c02: 26.01.2017 17:12:42
2017-01-26_07:30:00 di_auto_Rolladen_kizi2 timer_03_c01: 27.01.2017 07:30:00|8
2017-01-26_07:34:05 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:32:50|8
2017-01-26_07:34:05 di_auto_Rolladen_kizi2 timer_02_c01: 26.01.2017 10:00:00|7
2017-01-26_07:55:46 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:32:50|8
2017-01-26_07:55:46 di_auto_Rolladen_kizi2 timer_02_c01: 26.01.2017 10:00:00|7
2017-01-26_08:07:40 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:32:50|8
2017-01-26_08:07:40 di_auto_Rolladen_kizi2 timer_02_c01: 26.01.2017 10:00:00|7
2017-01-26_08:18:19 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:32:50|8
2017-01-26_08:18:19 di_auto_Rolladen_kizi2 timer_02_c01: 26.01.2017 10:00:00|7
2017-01-26_10:00:00 di_auto_Rolladen_kizi2 timer_02_c01: 27.01.2017 10:00:00|7
2017-01-26_10:00:00 di_auto_Rolladen_kizi2 timer_04_c01: 27.01.2017 10:00:00|7
2017-01-26_17:12:44 di_auto_Rolladen_kizi2 cmd_nr: 2
2017-01-26_17:12:44 di_auto_Rolladen_kizi2 cmd: 2
2017-01-26_17:12:44 di_auto_Rolladen_kizi2 cmd_event: timer_5
2017-01-26_17:12:44 di_auto_Rolladen_kizi2 cmd_2
2017-01-26_17:12:44 di_auto_Rolladen_kizi2 timer_05_c02: 27.01.2017 17:14:27
2017-01-26_17:30:00 di_auto_Rolladen_kizi2 timer_06_c02: 27.01.2017 17:30:00
2017-01-26_19:43:47 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:32:50|8
2017-01-26_19:43:47 di_auto_Rolladen_kizi2 timer_02_c01: 27.01.2017 10:00:00|7
2017-01-26_19:43:47 di_auto_Rolladen_kizi2 timer_03_c01: 27.01.2017 07:30:00|8
2017-01-26_19:43:48 di_auto_Rolladen_kizi2 timer_04_c01: 27.01.2017 10:00:00|7
2017-01-26_19:43:48 di_auto_Rolladen_kizi2 timer_05_c02: 27.01.2017 17:14:27
2017-01-26_19:43:48 di_auto_Rolladen_kizi2 timer_06_c02: 27.01.2017 17:30:00
2017-01-26_19:45:49 di_auto_Rolladen_kizi2 timer_01_c01: 27.01.2017 07:54:27|8
2017-01-26_19:45:49 di_auto_Rolladen_kizi2 timer_02_c01: 27.01.2017 10:00:00|7
Bloß der cmd_nr:1 ist mal wieder aus geblieben.
Die Timer wurden um 7:34:05 ja auch korrekt auf die nächste Zeit am darauf folgenden Tag geändert.
Zitat von: Ellert am 26 Januar 2017, 20:20:50
Wenn Du Deine beiden DOIF mit DOIFtools loggst und specialLog setzt, dann wird für jeden Schaltvorgang (Statuswechsel, wait_timer) ein Listing der DOIF ins Logfile geschrieben und alle sich ändernden Readings der beteiligten Geräte. Damit kannst Du vielleicht erkennen, ob eine Voraussetzung zum Schalten der "gleichen DOIF" für das nicht schaltende DOIF fehlt.
Logfile erstellen siehe: https://wiki.fhem.de/wiki/DOIFtools#Erstellen_eines_Debug-Logfile
Nochwas... Ich hatte mal alle DOIFs, die irgendwas mit meinen Rolladen im entferntesten was zu tun haben so im DOIFTool eingetragen:
doif_to_log
di_Zeit_kizi1_sr,di_Zeit_kizi1_ss,di_Zeit_kizi2_sr,di_Zeit_kizi2_ss,di_Zeit_schlazi_sr,di_Zeit_schlazi_ss,di_Zeit_sunrise,di_Zeit_sunset,di_Zeit_wc_sr,di_Zeit_wc_ss,di_Zeit_wz_sr,di_Zeit_wz_ss,di_auto_Rolladen_kizi1,di_auto_Rolladen_kizi2,di_auto_Rolladen_schlazi,di_auto_Rolladen_wc,di_auto_Rolladen_wz
Wo finde ich den die Logs?
ZitatNochwas... Ich hatte mal alle DOIFs, die irgendwas mit meinen Rolladen im entferntesten was zu tun haben so im DOIFTool eingetragen:
Dann solltest Du ziemlich viel zu lesen haben ;)
ZitatWo finde ich den die Logs?
Die sollten im Kopf der Detailansicht von DOIFtools zusehen sein
Hmm,
wo genau?
Irgendwie finde ich die nicht... siehe Anhang. (Die DEF ist ausgeweißt... da teilweise Klarnamen.)
Danke für Deine Unterstützung!
Bis denn
SouzA
Ich denke Du hast das Logfile nicht angelegt. Da Du keine Attribute DOIFtoolsexecuteDefinition und Save gesetzt hast bekommst Du nur eine Definition angezeigt. Das Gerät hättest Du über Raw definition anlegen müssen.
Wenn Du mit list TYPE=FileLog kein DOIFtoolsLog findest müsstest Du es nochmal anlegen, wie im Wiki beschrieben.
Hallo,
Hat geklappt!
Wie ändere ich eigentlich nun die Anzahl der geloggten Devices?
doif_to_log
di_Zeit_kizi1_sr,di_Zeit_kizi1_ss,di_Zeit_kizi2_sr,di_Zeit_kizi2_ss,di_Zeit_schlazi_sr,di_Zeit_schlazi_ss,di_Zeit_sunrise,di_Zeit_sunset,di_Zeit_wc_sr,di_Zeit_wc_ss,di_Zeit_wz_sr,di_Zeit_wz_ss,di_auto_Rolladen_kizi1,di_auto_Rolladen_kizi2,di_auto_Rolladen_schlazi,di_auto_Rolladen_wc,di_auto_Rolladen_wz
Da stehen ja nun viele drin... Kriegt man die da auch wieder raus?
Vielen Dank.
Bis denn
SouzA
Nur die Du haben willst, auswählen ::)
Lol... Naja, wenn man die im Menü wieder abwählen könnte, würde ich das tun. :o ;)
Zitat von: SouzA am 27 Januar 2017, 06:42:55
Lol... Naja, wenn man die im Menü wieder abwählen könnte, würde ich das tun. :o ;)
Also, wenn Du ins Feld nach DOIF_to_Log klickst, dann öffnet sich ein Popup-Fenster, da wählst Du nur die DOIF aus, die geloggt werden sollen und dann auf Ok klicken und danach auf get klicken. Das sollte die FileLog-Definition ändern, ggf. noch die Browserseite aktualisieren, damit die Änderungen angezeigt werden.