Hallo zusammen,
habe angefangen mir eine kleine Rolladensteuerung zu bauen, die ich ....
a) relativ zu Sonnenauf- und untergang steuern kann (jeweils Position und relative Zeitangabe an allen Tagen gleich, oder werktags/am WE unterschiedlich) oder
b) nach Zeit (jeweils Position und Zeitangabe an allen Tagen gleich, oder werktags/am WE unterschiedlich) bzw.
c) einfach manuell.
Dabei habe ich zwei "allgemeine" Devices angelegt.
- dummy_astro beinhaltet Sonnenauf- und Untergangszeiten.
- doif_RolloadenSteuerung beinhaltet die Zustände, relativen Zeitangaben und Anfahrpositionen:
READINGS:
2018-02-16 13:20:18 Automatik Astro
2018-02-16 15:54:45 Automatik_nach_sunrise 00:30
2018-02-16 15:55:11 Automatik_nach_sunrise_we 01:00
2018-02-16 15:55:34 Automatik_vor_sunset 00:30
2018-02-16 15:55:44 Automatik_vor_sunset_we 01:00
2018-01-19 15:45:52 Wochentage alle
2018-01-19 11:53:40 ku_position_oben 100
2018-01-19 16:07:40 ku_position_oben_we 100
2018-01-19 11:54:14 ku_position_unten 0
2018-01-19 16:07:46 ku_position_unten_we 0
2018-01-19 11:51:20 ku_zeit_hoch 08:00:00
2018-01-19 16:07:51 ku_zeit_hoch_we 11:00:00
2018-01-19 11:52:04 ku_zeit_runter 18:00:00
2018-02-16 15:31:01 ku_zeit_runter_we 19:00:00
...
Für die Übersicht habe ich für jeden Rolladen einen DOIF angelegt, welcher die Logik enthalten soll (doif_RolloadenSteuerung_xx):
Internals:
CFGFN
DEF ([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and ([dummy_astro:sunrise_abs_civil] + [doif_RolloadenSteuerung:Automatik_nach_sunrise]))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Astro - alle Tage - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and ([dummy_astro:sunset_abs_civil] + [doif_RolloadenSteuerung:Automatik_vor_sunset]))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Astro - alle Tage - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and ([[dummy_astro:sunrise_abs_civil]|AT] + [doif_RolloadenSteuerung:Automatik_nach_sunrise] ))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Astro - werktags - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and ([[dummy_astro:sunset_abs_civil]|AT] + [doif_RolloadenSteuerung:Automatik_vor_sunset] ))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Astro - werktags - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and ([[dummy_astro:sunrise_abs_civil]|WE] + [doif_RolloadenSteuerung:Automatik_nach_sunrise_we]))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben_we", "")}) ##Astro - WE - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and ([[dummy_astro:sunset_abs_civil]|WE] + [doif_RolloadenSteuerung:Automatik_vor_sunset_we]))
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten_we", "")}) ##Astro - WE - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and [doif_RolloadenSteuerung:ku_zeit_hoch])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Zeit - alle Tage - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and [doif_RolloadenSteuerung:ku_zeit_runter])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Zeit - alle Tage - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [[doif_RolloadenSteuerung:ku_zeit_hoch]|AT])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Zeit - werktags - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [[doif_RolloadenSteuerung:ku_zeit_runter]|AT])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Zeit - werktags - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [[doif_RolloadenSteuerung:ku_zeit_hoch_we]|WE])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben_we", "")}) ##Zeit - WE - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Zeit" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [[doif_RolloadenSteuerung:ku_zeit_runter_we]|WE])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten_we", "")}) ##Zeit - WE - runter
NAME doif_RolloadenSteuerung_ku
NR 19371
NTFY_ORDER 50-doif_RolloadenSteuerung_ku
STATE cmd_1
TYPE DOIF
READINGS:
2018-02-19 00:00:30 Device dummy_astro
2018-02-17 00:00:30 cmd 1
2018-02-17 00:00:30 cmd_event dummy_astro
2018-02-17 00:00:30 cmd_nr 1
2018-02-19 00:00:30 e_dummy_astro_sunrise_abs_civil 06:55
2018-02-19 00:00:30 e_dummy_astro_sunset_abs_civil 18:23
2018-02-16 16:39:02 mode enabled
2018-02-17 00:00:30 state cmd_1
2018-02-19 06:55:00 timer_01_c03 20.02.2018 06:55:00|AT
2018-02-19 00:00:30 timer_02_c04 19.02.2018 18:23:00|AT
2018-02-19 06:55:00 timer_03_c05 20.02.2018 06:55:00|WE
2018-02-19 00:00:30 timer_04_c06 19.02.2018 18:23:00|WE
2018-02-19 08:00:00 timer_05_c09 20.02.2018 08:00:00|AT
2018-02-18 18:00:00 timer_06_c10 19.02.2018 18:00:00|AT
2018-02-18 11:00:00 timer_07_c11 19.02.2018 11:00:00|WE
2018-02-18 19:00:00 timer_08_c12 19.02.2018 19:00:00|WE
Regex:
condition:
0 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "alle" and (ReadingValDoIf($hash,'dummy_astro','sunrise_abs_civil') + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_nach_sunrise'))
1 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "alle" and (ReadingValDoIf($hash,'dummy_astro','sunset_abs_civil') + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_vor_sunset'))
10 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and DOIF_time_once($hash,6,$wday,"WE")
11 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and DOIF_time_once($hash,7,$wday,"WE")
2 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and (DOIF_time_once($hash,0,$wday,"AT") + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_nach_sunrise') )
3 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and (DOIF_time_once($hash,1,$wday,"AT") + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_vor_sunset') )
4 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and (DOIF_time_once($hash,2,$wday,"WE") + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_nach_sunrise_we'))
5 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Astro" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and (DOIF_time_once($hash,3,$wday,"WE") + ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik_vor_sunset_we'))
6 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "alle" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','ku_zeit_hoch')
7 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "alle" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','ku_zeit_runter')
8 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and DOIF_time_once($hash,4,$wday,"AT")
9 ReadingValDoIf($hash,'doif_RolloadenSteuerung','Automatik') eq "Zeit" and ReadingValDoIf($hash,'doif_RolloadenSteuerung','Wochentage') eq "werktags" and DOIF_time_once($hash,5,$wday,"AT")
days:
0 AT
1 AT
2 WE
3 WE
4 AT
5 AT
6 WE
7 WE
devices:
0 doif_RolloadenSteuerung dummy_astro
1 doif_RolloadenSteuerung dummy_astro
10 doif_RolloadenSteuerung
11 doif_RolloadenSteuerung
2 doif_RolloadenSteuerung
3 doif_RolloadenSteuerung
4 doif_RolloadenSteuerung
5 doif_RolloadenSteuerung
6 doif_RolloadenSteuerung
7 doif_RolloadenSteuerung
8 doif_RolloadenSteuerung
9 doif_RolloadenSteuerung
all doif_RolloadenSteuerung dummy_astro
do:
0:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}
1:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}
10:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben_we", "")}
11:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten_we", "")}
12:
2:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}
3:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}
4:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben_we", "")}
5:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten_we", "")}
6:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}
7:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}
8:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}
9:
0 set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}
helper:
DOIF_Readings_events
DOIF_eventas
event timer_5
globalinit 1
last_timer 8
sleeptimer -1
timerdev dummy_astro
timerevent sunrise_abs_civil: 06:55
triggerDev
timerevents:
sunrise_abs_civil: 06:55
timereventsState:
sunrise_abs_civil: 06:55
triggerEvents:
timer_5
triggerEventsState:
sunrise_abs_civil: 06:55
internals:
interval:
itimer:
all dummy_astro doif_RolloadenSteuerung
localtime:
0 1519106100
1 1519060980
2 1519106100
3 1519060980
4 1519110000
5 1519059600
6 1519034400
7 1519063200
readings:
0 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage dummy_astro:sunrise_abs_civil doif_RolloadenSteuerung:Automatik_nach_sunrise
1 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage dummy_astro:sunset_abs_civil doif_RolloadenSteuerung:Automatik_vor_sunset
10 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage
11 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage
2 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:Automatik_nach_sunrise
3 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:Automatik_vor_sunset
4 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:Automatik_nach_sunrise_we
5 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:Automatik_vor_sunset_we
6 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:ku_zeit_hoch
7 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage doif_RolloadenSteuerung:ku_zeit_runter
8 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage
9 doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage
all doif_RolloadenSteuerung:Automatik doif_RolloadenSteuerung:Wochentage dummy_astro:sunrise_abs_civil doif_RolloadenSteuerung:Automatik_nach_sunrise dummy_astro:sunset_abs_civil doif_RolloadenSteuerung:Automatik_vor_sunset doif_RolloadenSteuerung:Automatik_nach_sunrise_we doif_RolloadenSteuerung:Automatik_vor_sunset_we doif_RolloadenSteuerung:ku_zeit_hoch doif_RolloadenSteuerung:ku_zeit_runter
realtime:
0 06:55:00
1 18:23:00
2 06:55:00
3 18:23:00
4 08:00:00
5 18:00:00
6 11:00:00
7 19:00:00
time:
0 [dummy_astro:sunrise_abs_civil]
1 [dummy_astro:sunset_abs_civil]
2 [dummy_astro:sunrise_abs_civil]
3 [dummy_astro:sunset_abs_civil]
4 [doif_RolloadenSteuerung:ku_zeit_hoch]
5 [doif_RolloadenSteuerung:ku_zeit_runter]
6 [doif_RolloadenSteuerung:ku_zeit_hoch_we]
7 [doif_RolloadenSteuerung:ku_zeit_runter_we]
timeCond:
0 2
1 3
2 4
3 5
4 8
5 9
6 10
7 11
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
10 6
11 7
2 0
3 1
4 2
5 3
8 4
9 5
trigger:
triggertime:
1519034400:
localtime 1519034400
hash:
1519059600:
localtime 1519059600
hash:
1519060980:
localtime 1519060980
hash:
1519063200:
localtime 1519063200
hash:
1519106100:
localtime 1519106100
hash:
1519110000:
localtime 1519110000
hash:
uiState:
uiTable:
Attributes:
disable 0
room 27_Heizung_Sensoren
Soweit sogut ..... leider bekomme ich im FHEM-Log folgende Fehlermeldungen angezeigt und die Rolladen wollen sich nicht bewegen ^^:
2018.02.19 00:00:30 1: PERL WARNING: Argument "00:30" isn't numeric in addition (+) at (eval 837687) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "06:56" isn't numeric in addition (+) at (eval 837687) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "00:30" isn't numeric in addition (+) at (eval 837690) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "06:56" isn't numeric in addition (+) at (eval 837690) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "00:30" isn't numeric in addition (+) at (eval 837691) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "06:56" isn't numeric in addition (+) at (eval 837691) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "00:30" isn't numeric in addition (+) at (eval 837694) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
2018.02.19 00:00:30 1: PERL WARNING: Argument "06:55" isn't numeric in addition (+) at (eval 837694) line 1.
2018.02.19 00:00:30 3: eval: doif_RolloadenSteuerung_ku: warning in condition c01
Ich komme nicht dahinter, wieso er mir die Berechnungen nicht durchführen will???
Habe bereits die Zeiten von 00:00:00 auf 00:00 umgeschrieben, aber dennoch wird nicht, wie in der Doku unter commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen (Beispiel "Fixtime") berechnet.
Fragen:
- Wo liegt mein Denkfehler?
- Ist mein Vorhaben auch leichter durchzuführen?
Gruß
Mathias
Du versuchst eine Zeichenkette numerisch zu addieren, da liegt der Fehler, siehe https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit
Wann Du in DOIF mit Zeitangaben rechnen kannst, findest Du ab hier: https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung
Hallo Ellert,
danke für die Rückmeldung.
Das ist ja genau der Punkt. In der CommandRef steht:
ZitatZeitsteuerung mit Zeitberechnung
Zeitberechnungen werden innerhalb der eckigen Klammern zusätzlich in runde Klammern gesetzt. Die berechneten Triggerzeiten können absolut oder relativ mit einem Pluszeichen vor den runden Klammern angegeben werden. Es können beliebige Ausdrücke der Form HH:MM und Angaben in Sekunden als ganze Zahl in Perl-Rechenoperationen kombiniert werden. Perlfunktionen, wie z. B. sunset(), die eine Zeitangabe in HH:MM liefern, werden in geschweifte Klammern gesetzt. Zeiten im Format HH:MM bzw. Status oder Readings, die Zeitangaben in dieser Form beinhalten werden in eckige Klammern gesetzt.
=> Runde Klammern vorhanden
=> Format für beide Readings ist HH:MM
=> Die Verweise auf die Zeiten haben eckige Klammern.
Oder müsste es dann so aussehen:
([[dummy_astro:sunrise_abs_civil]] + [[doif_RolloadenSteuerung:Automatik_nach_sunrise]])
?
Ich befürchte ein zweites Problem könnte zudem auch die Einschränkung auf Werk- oder Wochenendtage sein:
([[dummy_astro:sunrise_abs_civil]|AT] + [doif_RolloadenSteuerung:Automatik_nach_sunrise])
Müsste das ggf. so geschrieben werden:
[([dummy_astro:sunrise_abs_civil] + [doif_RolloadenSteuerung:Automatik_nach_sunrise])|AT]
?
Fragen über Fragen ^^
Gruß
Mathias
Runde Klammern sind vorhanden, aber nicht die richtigen, denn es heisst: "Zeitberechnungen werden innerhalb der eckigen Klammern zusätzlich in runde Klammern gesetzt."
Du bist auf dem richtigen Weg. Welches Beispiel funktioniert könntest Du an einem einfachen DOIF ausprobieren.
Oder das Beispiel aus der Doku nehmen und eigene Werte reinschreiben.
Hallo Ellert,
vielen Dank für den Wink mit dem Zaunpfahl.... ;D
Ist auch nicht ganz so einfach mit den vielen unterschiedlichen Klammern ^^
Aber ich denke, ich hab's raus.
Es sieht jetzt folgendermaßen aus (für die Nachwelt):
Internals:
CFGFN
DEF ([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and [([dummy_astro:sunrise_abs_civil] + [doif_RolloadenSteuerung:Automatik_nach_sunrise])])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Astro - alle Tage - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "alle" and [([dummy_astro:sunset_abs_civil] - [doif_RolloadenSteuerung:Automatik_vor_sunset])])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Astro - alle Tage - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [([dummy_astro:sunrise_abs_civil] + [doif_RolloadenSteuerung:Automatik_nach_sunrise])|AT])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben", "")}) ##Astro - werktags - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [([dummy_astro:sunset_abs_civil] - [doif_RolloadenSteuerung:Automatik_vor_sunset])|AT])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten", "")}) ##Astro - werktags - runter
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [([dummy_astro:sunrise_abs_civil] + [doif_RolloadenSteuerung:Automatik_nach_sunrise_we])|WE])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_oben_we", "")}) ##Astro - WE - hoch
DOELSEIF
([doif_RolloadenSteuerung:Automatik] eq "Astro" and [doif_RolloadenSteuerung:Wochentage] eq "werktags" and [([dummy_astro:sunset_abs_civil] - [doif_RolloadenSteuerung:Automatik_vor_sunset_we])|WE])
(set ku_Rolladenaktor pct {ReadingsVal("doif_RolloadenSteuerung", "ku_position_unten_we", "")}) ##Astro - WE - runter
DOELSEIF
[...]
NAME doif_RolloadenSteuerung_ku
NR 19371
NTFY_ORDER 50-doif_RolloadenSteuerung_ku
STATE initialize
TYPE DOIF
READINGS:
2018-02-19 16:55:08 mode enabled
2018-02-19 16:55:08 state initialize
2018-02-19 16:55:02 timer_01_c01 20.02.2018 07:25:00
2018-02-19 16:55:02 timer_02_c02 19.02.2018 17:53:00
2018-02-19 16:55:02 timer_03_c03 20.02.2018 07:25:00|AT
2018-02-19 16:55:02 timer_04_c04 19.02.2018 17:53:00|AT
2018-02-19 16:55:02 timer_05_c05 20.02.2018 07:55:00|WE
2018-02-19 16:55:02 timer_06_c06 19.02.2018 17:23:00|WE
[...]
Jetzt hab ich ja unter den Readings alle möglichen Timer aufgelistet, die sich ja richtig berechnet haben mit meinen relativen Angaben (unter der Woche 0,5h am WE 1h):
Internals:
CFGFN
NAME dummy_astro
NR 18389
STATE <b>Sonnenaufgang:</b><br>
real: 07:32<br>
civil: 06:55<br>
<b>Sonnenuntergang:</b><br>
real: 17:45<br>
civil: 18:23
TYPE dummy
READINGS:
2018-02-19 00:00:30 sunrise_abs_civil 06:55
[...]
2018-02-19 00:00:30 sunset_abs_civil 18:23
[...]
Gehe ich richtig davon aus, dass nicht alle der Timer, die aufgeführt sind ausgeführt werden?
Es sind ja 6 Timer, aber nur zwei müssten auch ausgeführt werden.
Die ersten zwei, wenn alle Tage gleich behandelt werden ("Wochentage=alle"), die nächsten zwei nur unter der Woche bei "Wochentage=werktags" und die letzten zwei nur am WE, wenn ebenfalls "Wochentage=werktags" definiert ist.
Kann man irgendwo ablesen, welche Timer in der Zukunft ausgeführt werden und welche nicht?
Gruß
Mathias
Die Timer lösen zu ihren Zeiten eine Bedingungsprüfung aus und die Befehle der ersten Bedingung, die wahr wird, werden ausgeführt.
ZitatKann man irgendwo ablesen, welche Timer in der Zukunft ausgeführt werden und welche nicht?
Siehe https://wiki.fhem.de/wiki/DOIFtools#Erstellen_von_UserReadings_f.C3.BCr_Timer_mit_Wochentageinschr.C3.A4nkung
Hallo Ellert,
danke für den Hinweis.
Habe es fast hinbekommen. Meine Steuerung an sich funktioniert jetzt.
Habe auch die DOIFTools angelegt und versucht zusätzlich die "wahren" Schaltzeiten anzuzeigen.
Die Attribute für die Erstellung der Userreadings wurden von den DOIFTools teils angelegt. Die fehlenden zwei habe ich manuell ergänzt.
Leider werden aber Userreadings nicht erzeugt.
Habe auch schon den DOIF selbst neu initialisiert, etc. ohne Erfolg.
So sieht momentan ein list des Devices aus, wie gesagt leider ohne Userreadings:
[...]
NAME doif_RolloadenSteuerung_ku
NR 19371
NTFY_ORDER 50-doif_RolloadenSteuerung_ku
STATE initialize
TYPE DOIF
READINGS:
2018-02-20 20:12:36 Device doif_RolloadenSteuerung
2018-02-20 20:12:36 e_doif_RolloadenSteuerung_Automatik Zeit
2018-02-20 20:12:36 e_doif_RolloadenSteuerung_Wochentage werktags
2018-02-20 20:12:36 e_doif_RolloadenSteuerung_ku_zeit_hoch 09:00
2018-02-20 20:12:36 e_doif_RolloadenSteuerung_ku_zeit_runter 19:00
2018-02-21 12:39:48 mode enabled
2018-02-21 12:39:48 state initialize
2018-02-21 10:51:00 timer_01_c01 22.02.2018 10:51:00
2018-02-21 00:00:30 timer_02_c02 21.02.2018 17:56:00
2018-02-21 10:51:00 timer_03_c03 22.02.2018 10:51:00|AT
2018-02-21 00:00:30 timer_04_c04 21.02.2018 17:56:00|AT
2018-02-21 08:51:00 timer_05_c05 22.02.2018 08:51:00|WE
2018-02-21 00:00:30 timer_06_c06 21.02.2018 17:56:00|WE
2018-02-21 09:00:00 timer_07_c09 22.02.2018 09:00:00|AT
2018-02-20 19:00:00 timer_08_c10 21.02.2018 19:00:00|AT
2018-02-21 11:00:00 timer_09_c11 22.02.2018 11:00:00|WE
2018-02-20 19:10:00 timer_10_c12 21.02.2018 19:10:00|WE
[...]
Attributes:
[...]
userReadings N_timer_10_c12:timer_10_c12.* {DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_10_c12","none"),"doif_RolloadenSteuerung_ku")},N_timer_03_c03:timer_03_c03.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_03_c03","none"),"doif_RolloadenSteuerung_ku")},N_timer_01_c01:timer_01_c01.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_01_c01","none"),"doif_RolloadenSteuerung_ku")},N_timer_02_c02:timer_02_c02.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_02_c02","none"),"doif_RolloadenSteuerung_ku")},N_timer_04_c04:timer_04_c04.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_04_c04","none"),"doif_RolloadenSteuerung_ku")},N_timer_05_c05:timer_05_c05.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_05_c05","none"),"doif_RolloadenSteuerung_ku")},N_timer_06_c06:timer_06_c06.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_06_c06","none"),"doif_RolloadenSteuerung_ku")},N_timer_08_c10:timer_08_c10.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_08_c10","none"),"doif_RolloadenSteuerung_ku")},N_timer_09_c11:timer_09_c11.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_09_c11","none"),"doif_RolloadenSteuerung_ku")},N_timer_07_c09:timer_07_c09.*
{DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_07_c09","none"),"doif_RolloadenSteuerung_ku")}
[...]
Woran könnte es liegen, dass diese nicht erstellt werden?
Ferner ist das trotzdem nur die halbe Lösung. Damit habe ich immer noch nicht den einen Timer der als nächstes hoch fährt und einen der als nächstes runter fährt (z. B. zum Anzeigen im FTUI).
Bitte um Unterstützung.
Besten Dank vorab!
Grüße
Mathias
ZitatDie fehlenden zwei habe ich manuell ergänzt.
Es werden nur N_timer für Zeitangaben mit Wochentageinschränkung angelegt.
Bei den anderen Zeitangaben stimmen die Timer ohnehin.
Daher solltest Du die manuell zugefügten Usereadings löschen.
Welchen Wert hat das Attribut holiday2we?
Userreadings werden berechnet, wenn ein entsprechendes Timerereignis es triggert. Ist das erfolgt?
Eventuell DEF aufrufen, modify und Reload der Seite durchführen.
ZitatFerner ist das trotzdem nur die halbe Lösung.
Du könntest ein weiteres Userreading erstellen, in dem der minimale Timer aus allen Timern berechnet wird, z.B. mit min(t1,t2,t3, usw.).
Hallo Ellert,
holiday2we steht auf BW .... Die Datei mit den Feiertagen ist gepflegt.
Aber du hattest erneut Recht:
Weder ein DEF Aufruf, Modify und Reload, noch neu Initialisieren oder das Ändern der Readings hat die N_timer hervorgebracht.
Es war wirklich ein Triggern eines Timers notwendig.
Die zwei zusätzlichen N_timer sind in der Tat nicht notwendig, da sie die Daten einfach übernehmen.
Es erhöht aber für mich die Übersichtlichkeit, da ich nur noch auf die N_timer schauen kann.
So sehen jetzt die Readings aus:
READINGS:
2018-02-21 15:49:03 Device doif_RolloadenSteuerung
2018-02-22 00:00:30 N_timer_01_c01 22.02.2018 10:49:00
2018-02-22 00:00:30 N_timer_02_c02 22.02.2018 17:58:00
2018-02-22 00:00:30 N_timer_03_c03 22.02.2018 10:49:00
2018-02-22 00:00:30 N_timer_04_c04 22.02.2018 17:58:00
2018-02-22 08:49:00 N_timer_05_c05 24.02.2018 08:49:00
2018-02-22 00:00:30 N_timer_06_c06 24.02.2018 17:58:00
2018-02-22 08:30:00 N_timer_07_c09 23.02.2018 08:30:00
2018-02-21 18:30:00 N_timer_08_c10 22.02.2018 18:30:00
2018-02-22 11:00:00 N_timer_09_c11 24.02.2018 11:00:00
2018-02-21 19:10:00 N_timer_10_c12 24.02.2018 19:10:00
2018-02-22 08:30:00 cmd 9
2018-02-22 08:30:00 cmd_event timer_7
2018-02-22 08:30:00 cmd_nr 9
2018-02-21 15:49:03 e_doif_RolloadenSteuerung_Automatik Zeit
2018-02-21 15:49:03 e_doif_RolloadenSteuerung_Wochentage werktags
2018-02-21 15:49:03 e_doif_RolloadenSteuerung_ku_zeit_hoch 08:30
2018-02-21 15:49:03 e_doif_RolloadenSteuerung_ku_zeit_runter 18:30
2018-02-21 12:39:48 mode enabled
2018-02-22 08:30:00 state cmd_9
2018-02-22 00:00:30 timer_01_c01 22.02.2018 10:49:00
2018-02-22 00:00:30 timer_02_c02 22.02.2018 17:58:00
2018-02-22 00:00:30 timer_03_c03 22.02.2018 10:49:00|AT
2018-02-22 00:00:30 timer_04_c04 22.02.2018 17:58:00|AT
2018-02-22 08:49:00 timer_05_c05 23.02.2018 08:49:00|WE
2018-02-22 00:00:30 timer_06_c06 22.02.2018 17:58:00|WE
2018-02-22 08:30:00 timer_07_c09 23.02.2018 08:30:00|AT
2018-02-21 18:30:00 timer_08_c10 22.02.2018 18:30:00|AT
2018-02-21 11:00:00 timer_09_c11 22.02.2018 11:00:00|WE
2018-02-21 19:10:00 timer_10_c12 22.02.2018 19:10:00|WE
=> Auffallend sind für mich 2 Dinge, die ich mir nicht erklären kann:
1) Ich habe nur 10 anstatt 12 timer (nur 2 von 4 Timer mit Wochentage=alle wurden angelegt)
2) Aus den N_timern kann ich immer noch nicht ableiten, welcher timer als nächstes / übernächstes angeht (ich will doch nur die nächste Zeit für "hoch" und "runter" ^^)
weitere Infos:
userReadings [...] N_timer_09_c11:timer_09_c11.* {DOIFtoolsNextTimer(ReadingsVal("doif_RolloadenSteuerung_ku","timer_09_c11","none"),"doif_RolloadenSteuerung_ku")} [...]
CMD 1: ##Astro - alle Tage - hoch: Automatik=Astro and Wochentage=alle sunrise + Zeit nach sunrise
CMD 2: ##Astro - alle Tage - runter: Automatik=Astro and Wochentage=alle sunset - Zeit vor sunset
CMD 3: ##Astro - werktags - hoch: Automatik=Astro and Wochentage=werktags sunrise + Zeit nach sunrise AT
CMD 4: ##Astro - werktags - runter: Automatik=Astro and Wochentage=werktags sunset - Zeit vor sunset AT
CMD 5: ##Astro - WE - hoch: Automatik=Astro and Wochentage=werktags sunrise + Zeit_we nach sunrise WE
CMD 6: ##Astro - WE - runter: Automatik=Astro and Wochentage=werktags sunset - Zeit_we vor sunset WE
CMD 7: ##Zeit - alle Tage - hoch: Automatik=Zeit and Wochentage=alle 08:30 => Timer fehlt???
CMD 8: ##Zeit - alle Tage - runter: Automatik=Zeit and Wochentage=alle 18:30 => Timer fehlt???
CMD 9: ##Zeit - werktags - hoch: Automatik=Zeit and Wochentage=werktags 08:30 AT => wird morgen früh ausgeführt
CMD 10: ##Zeit - werktags - runter: Automatik=Zeit and Wochentage=werktags 18:30 AT => wird heute abend ausgeführt
CMD 11: ##Zeit - WE - hoch: Automatik=Zeit and Wochentage=werktags 11:00 WE
CMD 12: ##Zeit - WE - runter: Automatik=Zeit and Wochentage=werktags 19:10 WE
ZitatCMD 11: ##Zeit - WE - hoch: Automatik=Zeit and Wochentage=werktags 11:00 WE => N_timer fehlt???
wird doch angelegt
Zitat2018-02-22 11:00:00 N_timer_09_c11 24.02.2018 11:00:00
ZitatCMD 7: ##Zeit - alle Tage - hoch: Automatik=Zeit and Wochentage=alle 08:30 => Timer fehlt???
CMD 8: ##Zeit - alle Tage - runter: Automatik=Zeit and Wochentage=alle 18:30 => Timer fehlt???
haben keine Wochentagbeschränkung.
Altenativ kannst Du versuchen "WE AT", "0123456" oder "78" als Beschränkung anzugeben, vermutlich werden dann N_timer angelegt.
Zitat2) Aus den N_timern kann ich immer noch nicht ableiten, welcher timer als nächstes / übernächstes angeht (ich will doch nur die nächste Zeit für "hoch" und "runter" ^^)
Da musst Du Dir selbst etwas überlegen und als DOIF_Readings, in uiTable oder userReadings berechnen.
Zitat von: Ellert am 22 Februar 2018, 15:48:45
wird doch angelegt
Sry, hast natürlich recht.
Dieser wurde erst im Nachhinein angelegt ... hab den Vermerk nur in den Readings vergessen rauszunehmen.
Zitat von: Ellert am 22 Februar 2018, 15:48:45
haben keine Wochentagbeschränkung.
Eigentlich ja, aber warum werden dann für CMD 1 und CMD 2 N_timer angelegt?
Diese haben auch keine Wochentagsbeschränkung.
Zitat von: Ellert am 22 Februar 2018, 15:48:45
Altenativ kannst Du versuchen "WE AT", "0123456" oder "78" als Beschränkung anzugeben, vermutlich werden dann N_timer angelegt.
Werde ich mal versuchen!
Zitat von: Ellert am 22 Februar 2018, 15:48:45
Da musst Du Dir selbst etwas überlegen und als DOIF_Readings, in uiTable oder userReadings berechnen.
Das ist ja genau der Punkt.
So wie es aussieht muss ich mir das mit jeweils einem weiteren DOIF aus meinen Vorgaben (Variablen) selbst berechnen lassen und dann als Reading abspeichern.
Das ist ja dann nochmal soviel Aufwand nur für die nächste Fahrt nach oben/unten :o.
Mir würde gerade nur einfallen jeden Tag um 00:01 die Zeiten anhand von Automatikart (Astro/Zeit), Wochentag (werktags/WE) und Sunrise/Sunset +/- Verzögerung bzw. Zeitangabe zu ermitteln und dann in ein Reading schreiben lassen. Das jeweils für hoch und runter sowie jeden Rolladen.
Geht das nicht einfacher? ???
ZitatEigentlich ja, aber warum werden dann für CMD 1 und CMD 2 N_timer angelegt?
Das frage ich mich auch, aber Du solltest den Fragen, der sie angelegt hat.
ZitatGeht das nicht einfacher?
Die Frage ist nur zu beantworten, wenn es objektive Bewertungskriterien für Einfachheit gibt und mindesten zwei funktionierende Lösungen zum Vergleich vorliegen, ich kenne keine.