ich versuche mich ja schon eine Weile um mit dem DOIF Kalenderereignisse abzufragen, ich hatte schon im anderen Thread gefragt aber das geht da wohl unter.
Was ich brauche ist ein Status welcher dann eben Nachtschicht oder Frühschicht heißt, diesen verwende ich dann in einem weiteren DOIF für meine Beleuchtung am Morgen.
Diese Schichteinträge erscheinen an bestimmten Tagen, mal sind es 3 Tage mal sind es 4 Tage nacheinander, ich dachte das es evtl. einfacher ist dies mit dem Datum zu machen, aber das gelingt mir nicht..! :-\
Die erste Frage dazu ich habe einige Kalender Abfragen die aber zum Teil noch nicht gefüllt werden dann kommt im DOIF immer die Fehlermeldung
error reading does not exist: [View_S:t_004_summary]
das ist auch klar da in diesem Reading auch noch nichts ist, aber es können bis zu 10 Einträge werden bis diese ersetzt werden, dass ist so eingestellt im CALVIEW Modul.
Kann man diese Fehlermeldung abstellen..?
Kann jemand mir da etwas Unterstützung geben..?
Das list des DOIF sieht so aus
Internals:
CFGFN ./FHEM/Kalender.cfg
DEF ([04:55-20:00] and [View_S:t_001_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_002_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_003_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_004_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_005_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_006_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_007_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_008_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_009_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_010_summary] eq "Nachtschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_001_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_002_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_003_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_004_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_005_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_006_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_007_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_008_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_009_summary] eq "Frühschicht")
DOELSEIF ([04:55-20:00] and [View_S:t_010_summary] eq "Frühschicht")
NAME di_WegBeleuchtung_Calender
NR 2935
NTFY_ORDER 50-di_WegBeleuchtung_Calender
STATE initialized
TYPE DOIF
Readings:
2015-09-30 15:17:37 Device View_S
2015-09-30 15:17:37 e_View_S_t_001_summary Spätschicht
2015-09-30 15:17:37 e_View_S_t_002_summary Frühschicht
2015-09-30 15:17:37 e_View_S_t_003_summary Spätschicht
2015-09-30 15:17:37 error reading does not exist: [View_S:t_004_summary]
2015-09-30 15:16:58 state initialized
2015-09-30 15:17:37 timer_10_c5 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_11_c6 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_12_c6 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_13_c7 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_14_c7 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_15_c8 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_16_c8 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_17_c9 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_18_c9 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_19_c10 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_1_c1 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_20_c10 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_21_c11 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_22_c11 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_23_c12 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_24_c12 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_25_c13 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_26_c13 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_27_c14 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_28_c14 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_29_c15 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_2_c1 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_30_c15 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_31_c16 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_32_c16 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_33_c17 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_34_c17 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_35_c18 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_36_c18 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_37_c19 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_38_c19 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_39_c20 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_3_c2 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_40_c20 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_4_c2 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_5_c3 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_6_c3 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_7_c4 01.10.2015 04:55:00
2015-09-30 15:17:37 timer_8_c4 30.09.2015 20:00:00
2015-09-30 15:17:37 timer_9_c5 01.10.2015 04:55:00
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('View_S','t_001_summary','') eq "Nachtschicht"
1 DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and ReadingValDoIf('View_S','t_002_summary','') eq "Nachtschicht"
10 DOIF_time($hash,$hash->{realtime}{20},$hash->{realtime}{21},$wday,$hms,"") and ReadingValDoIf('View_S','t_001_summary','') eq "Frühschicht"
11 DOIF_time($hash,$hash->{realtime}{22},$hash->{realtime}{23},$wday,$hms,"") and ReadingValDoIf('View_S','t_002_summary','') eq "Frühschicht"
12 DOIF_time($hash,$hash->{realtime}{24},$hash->{realtime}{25},$wday,$hms,"") and ReadingValDoIf('View_S','t_003_summary','') eq "Frühschicht"
13 DOIF_time($hash,$hash->{realtime}{26},$hash->{realtime}{27},$wday,$hms,"") and ReadingValDoIf('View_S','t_004_summary','') eq "Frühschicht"
14 DOIF_time($hash,$hash->{realtime}{28},$hash->{realtime}{29},$wday,$hms,"") and ReadingValDoIf('View_S','t_005_summary','') eq "Frühschicht"
15 DOIF_time($hash,$hash->{realtime}{30},$hash->{realtime}{31},$wday,$hms,"") and ReadingValDoIf('View_S','t_006_summary','') eq "Frühschicht"
16 DOIF_time($hash,$hash->{realtime}{32},$hash->{realtime}{33},$wday,$hms,"") and ReadingValDoIf('View_S','t_007_summary','') eq "Frühschicht"
17 DOIF_time($hash,$hash->{realtime}{34},$hash->{realtime}{35},$wday,$hms,"") and ReadingValDoIf('View_S','t_008_summary','') eq "Frühschicht"
18 DOIF_time($hash,$hash->{realtime}{36},$hash->{realtime}{37},$wday,$hms,"") and ReadingValDoIf('View_S','t_009_summary','') eq "Frühschicht"
19 DOIF_time($hash,$hash->{realtime}{38},$hash->{realtime}{39},$wday,$hms,"") and ReadingValDoIf('View_S','t_010_summary','') eq "Frühschicht"
2 DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") and ReadingValDoIf('View_S','t_003_summary','') eq "Nachtschicht"
3 DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"") and ReadingValDoIf('View_S','t_004_summary','') eq "Nachtschicht"
4 DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,"") and ReadingValDoIf('View_S','t_005_summary','') eq "Nachtschicht"
5 DOIF_time($hash,$hash->{realtime}{10},$hash->{realtime}{11},$wday,$hms,"") and ReadingValDoIf('View_S','t_006_summary','') eq "Nachtschicht"
6 DOIF_time($hash,$hash->{realtime}{12},$hash->{realtime}{13},$wday,$hms,"") and ReadingValDoIf('View_S','t_007_summary','') eq "Nachtschicht"
7 DOIF_time($hash,$hash->{realtime}{14},$hash->{realtime}{15},$wday,$hms,"") and ReadingValDoIf('View_S','t_008_summary','') eq "Nachtschicht"
8 DOIF_time($hash,$hash->{realtime}{16},$hash->{realtime}{17},$wday,$hms,"") and ReadingValDoIf('View_S','t_009_summary','') eq "Nachtschicht"
9 DOIF_time($hash,$hash->{realtime}{18},$hash->{realtime}{19},$wday,$hms,"") and ReadingValDoIf('View_S','t_010_summary','') eq "Nachtschicht"
Days:
Devices:
0 View_S
1 View_S
10 View_S
11 View_S
12 View_S
13 View_S
14 View_S
15 View_S
16 View_S
17 View_S
18 View_S
19 View_S
2 View_S
3 View_S
4 View_S
5 View_S
6 View_S
7 View_S
8 View_S
9 View_S
all View_S
Do:
0:
0
1:
0
10:
0
11:
0
12:
0
13:
0
14:
0
15:
0
16:
0
17:
0
18:
0
19:
0
2:
0
3:
0
4:
0
5:
0
6:
0
7:
0
8:
0
9:
0
Helper:
globalinit 1
last_timer 40
sleeptimer -1
Internals:
Itimer:
Readings:
0 View_S:t_001_summary
1 View_S:t_002_summary
10 View_S:t_001_summary
11 View_S:t_002_summary
12 View_S:t_003_summary
13 View_S:t_004_summary
14 View_S:t_005_summary
15 View_S:t_006_summary
16 View_S:t_007_summary
17 View_S:t_008_summary
18 View_S:t_009_summary
19 View_S:t_010_summary
2 View_S:t_003_summary
3 View_S:t_004_summary
4 View_S:t_005_summary
5 View_S:t_006_summary
6 View_S:t_007_summary
7 View_S:t_008_summary
8 View_S:t_009_summary
9 View_S:t_010_summary
all View_S:t_001_summary View_S:t_002_summary View_S:t_003_summary View_S:t_004_summary View_S:t_005_summary View_S:t_006_summary View_S:t_007_summary View_S:t_008_summary View_S:t_009_summary View_S:t_010_summary
Realtime:
0 04:55:00
1 20:00:00
10 04:55:00
11 20:00:00
12 04:55:00
13 20:00:00
14 04:55:00
15 20:00:00
16 04:55:00
17 20:00:00
18 04:55:00
19 20:00:00
2 04:55:00
20 04:55:00
21 20:00:00
22 04:55:00
23 20:00:00
24 04:55:00
25 20:00:00
26 04:55:00
27 20:00:00
28 04:55:00
29 20:00:00
3 20:00:00
30 04:55:00
31 20:00:00
32 04:55:00
33 20:00:00
34 04:55:00
35 20:00:00
36 04:55:00
37 20:00:00
38 04:55:00
39 20:00:00
4 04:55:00
5 20:00:00
6 04:55:00
7 20:00:00
8 04:55:00
9 20:00:00
State:
Time:
0 04:55:00
1 20:00:00
10 04:55:00
11 20:00:00
12 04:55:00
13 20:00:00
14 04:55:00
15 20:00:00
16 04:55:00
17 20:00:00
18 04:55:00
19 20:00:00
2 04:55:00
20 04:55:00
21 20:00:00
22 04:55:00
23 20:00:00
24 04:55:00
25 20:00:00
26 04:55:00
27 20:00:00
28 04:55:00
29 20:00:00
3 20:00:00
30 04:55:00
31 20:00:00
32 04:55:00
33 20:00:00
34 04:55:00
35 20:00:00
36 04:55:00
37 20:00:00
38 04:55:00
39 20:00:00
4 04:55:00
5 20:00:00
6 04:55:00
7 20:00:00
8 04:55:00
9 20:00:00
Timecond:
0 0
1 0
10 5
11 5
12 6
13 6
14 7
15 7
16 8
17 8
18 9
19 9
2 1
20 10
21 10
22 11
23 11
24 12
25 12
26 13
27 13
28 14
29 14
3 1
30 15
31 15
32 16
33 16
34 17
35 17
36 18
37 18
38 19
39 19
4 2
5 2
6 3
7 3
8 4
9 4
Timer:
0 0
1 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
2 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
3 0
30 0
31 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
4 0
5 0
6 0
7 0
8 0
9 0
Timerfunc:
Timers:
0 0 1
1 2 3
10 20 21
11 22 23
12 24 25
13 26 27
14 28 29
15 30 31
16 32 33
17 34 35
18 36 37
19 38 39
2 4 5
3 6 7
4 8 9
5 10 11
6 12 13
7 14 15
8 16 17
9 18 19
Trigger:
Attributes:
cmdState Nachtschicht|Frühschicht
do always
room Kalender
nein, die Fehlermeldung lässt sich nicht abschalten, denn immerhin fragst du etwas ab, was nicht existiert. Wenn du die Readings alle fest abfragst, dann musst du sie auch vorher anlegen.
Gruß
Damian
Zitat von: Damian am 30 September 2015, 21:24:51
nein, die Fehlermeldung lässt sich nicht abschalten, denn immerhin fragst du etwas ab, was nicht existiert. Wenn du die Readings alle fest abfragst, dann musst du sie auch vorher anlegen.
OK dann muss ich wohl damit leben bis diese Readings dann auch gefüllt werden..
hast du evtl. sonst mal über das DOIF geschaut ob es mir soweit möglich ist damit den Status auszugeben abhängig vom Datum.
Momentan ist es so da er kein Reading hat zeigt er auch nichts, ich bin das noch am testen, es kommen erst die nächsten Tage die weiteren Readings zum Schichtstaus wobei für mich nur die Frühschciht und die Nachtschicht wichtig ist, dass reading Spätschicht ist uninteressant und wird ja auch nicht abgefragt.
Wäre gut falls du etwas erkennst was ich noch ändern könnte...!
Zitat von: moonsorrox am 01 Oktober 2015, 11:46:19
OK dann muss ich wohl damit leben bis diese Readings dann auch gefüllt werden..
hast du evtl. sonst mal über das DOIF geschaut ob es mir soweit möglich ist damit den Status auszugeben abhängig vom Datum.
Momentan ist es so da er kein Reading hat zeigt er auch nichts, ich bin das noch am testen, es kommen erst die nächsten Tage die weiteren Readings zum Schichtstaus wobei für mich nur die Frühschciht und die Nachtschicht wichtig ist, dass reading Spätschicht ist uninteressant und wird ja auch nicht abgefragt.
Wäre gut falls du etwas erkennst was ich noch ändern könnte...!
Datum kannst du über Variablen abfragen
($month==10 and $mday==1 and ...)
Gruß
Damian
Zitat von: Damian am 01 Oktober 2015, 20:36:26
Datum kannst du über Variablen abfragen
($month==10 and $mday==1 and ...)
Gruß
Damian
damit kann ich wenig anfangen, weil eben Perl..! :-\
Kannst du mir ein Beispiel geben mit meinem obigen Code, wie ich das einbaue... In der commandref zu DOIF habe ich da nämlich nichts gefunden
So wie ich das verstanden habe, hat Damian diese Variablen auch in DOIF verfügbar gemacht, sodass du sie ohne Perl einfach abfragen kannst. Ohne Gewähr.
Zitat von: marvin78 am 02 Oktober 2015, 12:15:23
So wie ich das verstanden habe, hat Damian diese Variablen auch in DOIF verfügbar gemacht, sodass du sie ohne Perl einfach abfragen kannst. Ohne Gewähr.
OK, dass meinte ich auch so nicht, nur diese Variablen habe ich so noch nirgends eingesetzt, daher wollte ich nicht wild rum schrieben in meinem DOIF ohne zu wissen wie ich das richtig mache.
Ich habe da so gar keinen Ansatz, weißt du evtl. wie ich das mit einem meiner DOIF Codezeilen hinbekomme..? wäre ganz toll
Dann hast du die commandref wohl nicht gelesen. ;) Stichwort: Perl Specials.
Sorry, beim DOIF selbst kann ich dir nicht helfen. Aber wie du es machst, hat Damian doch geschrieben.
Zitat von: marvin78 am 02 Oktober 2015, 12:25:07
Dann hast du die commandref wohl nicht gelesen. ;) Stichwort: Perl Specials.
Ok schaue ich mir mal an, hatte ich noch nicht auf dem Schirm ;)
Zitat von: moonsorrox am 02 Oktober 2015, 12:27:28
Ok schaue ich mir mal an, hatte ich noch nicht auf dem Schirm ;)
Bei DOIF kannst du die Datumsabfrage mit Triggern oder mit Zeit kombinieren:
z. B. Heizung zur bestimmten Jahreszeit morgens um 5:00 Uhr einschalten:
($month > 10 and $month <5 and [05:00]) (set heating on)
oder z. B. nur am 1. und 15. des Monats auf einen Trigger reagieren:
(($mday==1 or $mday==15) and [FB] eq "on") (set ....
Gruß
Damian
ich glaube ich habe das alles viel zu kompliziert "gedacht" :-\ obwohl es vielleicht doch einfacher geht...!
Wichtig dabei ist erst einmal das mein DOIF immer den Status anzeigt den ich mit "cmdState" anzeigen möchte.
Da sollte doch eigentlich immer nur das eine Reading "View_S:today_001_summary" vom Kalender ausreichen, denn dieses wird immer gefüllt sein mit der gerade aktuellen Schicht. Da interessieren die anderen Readings doch gar nicht..!
Wenn ich kein Denkfehler drin habe reicht dies aus.
In einem zweiten DOIF schalte ich dann die Beleuchtung wenn der Status eben Frühschicht oder Nachtschicht zeigt... (diese DOIF hat ja schon mit dem Dummy und den eingestellten Tagen funktioniert)
Nun habe ich sobald der Schichttermin erscheint dieses Reading "today_001_summary" dieses bleibt immer an dem Tag mit der entsprechenden Schicht und somit werde ich dieses einmal nutzen und ausgiebig testen ob das alles damit funktioniert.
hier mal das list für das Status DOIF:
Internals:
DEF ([00:30-23:55] and [View_S:today_001_summary] eq "Nachtschicht") DOELSEIF ([00:30-23:55] and [View_S:today_001_summary] eq "Frühschicht")
NAME di_WegBeleuchtung_Calender_today
NR 3010
NTFY_ORDER 50-di_WegBeleuchtung_Calender_today
STATE Frühschicht
TYPE DOIF
Readings:
2015-10-04 01:15:42 Device View_S
2015-10-04 01:15:42 cmd_event View_S
2015-10-04 01:15:42 cmd_nr 2
2015-10-04 01:15:42 e_View_S_today_001_summary Frühschicht
2015-10-04 01:15:42 state Frühschicht
2015-10-04 01:15:41 timer_1_c1 05.10.2015 00:30:00
2015-10-04 01:15:41 timer_2_c1 04.10.2015 23:55:00
2015-10-04 01:15:41 timer_3_c2 05.10.2015 00:30:00
2015-10-04 01:15:41 timer_4_c2 04.10.2015 23:55:00
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('View_S','today_001_summary','') eq "Nachtschicht"
1 DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and ReadingValDoIf('View_S','today_001_summary','') eq "Frühschicht"
Days:
Devices:
0 View_S
1 View_S
all View_S
Do:
0:
0
1:
0
Helper:
globalinit 1
last_timer 4
sleeptimer -1
Internals:
Itimer:
Readings:
0 View_S:today_001_summary
1 View_S:today_001_summary
all View_S:today_001_summary
Realtime:
0 00:30:00
1 23:55:00
2 00:30:00
3 23:55:00
State:
Time:
0 00:30:00
1 23:55:00
2 00:30:00
3 23:55:00
Timecond:
0 0
1 0
2 1
3 1
Timer:
0 0
1 0
2 0
3 0
Timerfunc:
Timers:
0 0 1
1 2 3
Trigger:
Attributes:
cmdState Nachtschicht|Frühschicht
do always
room Kalender
aber auch hier bekomme ich den Fehler wenn das Reading "today_001_summary" nicht existiert, da es ja immer nur aktuell ist wenn auch das Reading gefüllt ist. Also muss ich noch etwas anderes probieren
2015.10.04 21:10:35 2: di_WegBeleuchtung_Calender_today: reading does not exist: [View_S:today_001_summary]
@Damian
ich habe folgende Frage zur Aktualisierung meines DOIFs, wie kann ich erreichen das er das aktuelle Ergebnis anzeigt, denn noch bekomme ich als Status "Frühschicht" angezeigt obwohl die gestern war...
Heute ist kein Eintrag einer Schicht und "View_S:c-today" hat auch eine "0" aber trotzdem wird mir der Status falsch angezeigt nämlich Frühschicht.
Und der Schicht Kalender wird alle 2 Std. neu eingelesen, was muss ich da noch ändern oder aktualisieren..?
mit do always hatte ich das gemacht, ging aber nicht
Internals:
DEF ([01:00-23:55] and [View_S:c-today] eq "1" and [View_S:t_001_summary] eq "Nachtschicht") DOELSEIF ([01:00-23:55] and [View_S:c-today] eq "1" and [View_S:t_001_summary] eq "Frühschicht")
NAME di_WegBeleuchtung_Calender_Neu
NR 3017
NTFY_ORDER 50-di_WegBeleuchtung_Calender_Neu
STATE Frühschicht
TYPE DOIF
Readings:
2015-10-06 10:50:52 Device View_S
2015-10-05 23:26:05 cmd_event View_S
2015-10-05 23:26:05 cmd_nr 2
2015-10-06 10:50:52 e_View_S_c-today 0
2015-10-06 10:50:52 e_View_S_t_001_summary Frühschicht
2015-10-05 23:26:05 state Frühschicht
2015-10-06 10:50:51 timer_1_c1 07.10.2015 01:00:00
2015-10-06 10:50:51 timer_2_c1 06.10.2015 23:55:00
2015-10-06 10:50:51 timer_3_c2 07.10.2015 01:00:00
2015-10-06 10:50:51 timer_4_c2 06.10.2015 23:55:00
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('View_S','c-today','') eq "1" and ReadingValDoIf('View_S','t_001_summary','') eq "Nachtschicht"
1 DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and ReadingValDoIf('View_S','c-today','') eq "1" and ReadingValDoIf('View_S','t_001_summary','') eq "Frühschicht"
Days:
Devices:
0 View_S
1 View_S
all View_S
Do:
0:
0
1:
0
2:
Helper:
globalinit 1
last_timer 4
sleeptimer -1
Internals:
Itimer:
Readings:
0 View_S:c-today View_S:t_001_summary
1 View_S:c-today View_S:t_001_summary
all View_S:c-today View_S:t_001_summary
Realtime:
0 01:00:00
1 23:55:00
2 01:00:00
3 23:55:00
State:
Time:
0 01:00:00
1 23:55:00
2 01:00:00
3 23:55:00
Timecond:
0 0
1 0
2 1
3 1
Timer:
0 0
1 0
2 0
3 0
Timerfunc:
Timers:
0 0 1
1 2 3
Trigger:
Attributes:
cmdState Nachtschicht|Frühschicht
room Kalender
@moonsorrox
Bei Terminen die sich quasi unregelmäßig wiederholen, also nicht stur jeden zweiten Montag, gibt es Probleme mit dem Calendar-Modul.
Hat nichts mit dem CALVIEW zu tun.
Kennst du diesen Thread: http://forum.fhem.de/index.php/topic,39666.0.html ?
Ich könnte mir vorstellen, das du dich mit deinen Problemen dort wiederfindest.
vb
Zitat von: VB90 am 06 Oktober 2015, 11:17:20
Ich könnte mir vorstellen, das du dich mit deinen Problemen dort wiederfindest.
vb
ja. vllt. hast du Recht schaue ich mal durch...!
Nur nach meiner bescheidenen Meinung sage ich mal wenn das DOIF folgendes einliest
([01:00-23:55] and [View_S:c-today] eq "1" and [View_S:t_001_summary] eq "Frühschicht")
und "Viewe_S:c-today" ist "0" sollte er nicht Frühschicht anzeigen auch wenn "View_S:t_001_summary" Frühschicht drin stehen hat...!
Oder irre ich mich da..? deshalb habe ich ja die Abfrage c-today mit drin
Da hast du recht.
Funktioniert es denn ohne die Zeitangabe [01:00 - 23:55] zu beginn?
Zitat von: moonsorrox am 06 Oktober 2015, 11:23:51
und "Viewe_S:c-today" ist "0" sollte er nicht Frühschicht anzeigen auch wenn "View_S:t_001_summary" Frühschicht drin stehen hat...!
Was soll es denn sonst anzeigen? Du hast in Deinem DOIF doch nur zwei states Frühschicht und Nachtschicht.
Also kann es auch nur einen dieser beiden states annehmen? Wo sollte denn ein dritter state herkommen?
Zitat von: Brockmann am 06 Oktober 2015, 12:24:51
Was soll es denn sonst anzeigen? Du hast in Deinem DOIF doch nur zwei states Frühschicht und Nachtschicht.
Also kann es auch nur einen dieser beiden states annehmen? Wo sollte denn ein dritter state herkommen?
er soll dann nichts anzeigen, "0", oder initialize ,aber eben keinen Status den ich abfrage...! , evtl. muss ich noch was hinzufügen..?
Das sind aber die DOIF-Basics:
DOIF...DOELSEIF
kann nur cmd_1 oder cmd_2 annehmen (bzw. was auch immer Du für Bezeichnungen verwendest). Ein implizites DOELSE gibt es in dem Fall nicht.
Also musst Du entweder ein explizites DOELSE ergänzen oder vielleicht besser etwas restriktiver fomuliert ein weiteres
DOELSEIF ([View_S:c-today] eq "0)
und dann
cmdState Nachtschicht|Frühschicht|Frei
oderso...
mmh..! gut mit dem weiteren wäre eine Maßnahme...!
Wenn ich aber in der commandref lese bei dem Status Beispiel, da wurde der 3. Status auch nicht ausgeführt siehe
ZitatReine Statusanzeige ohne Ausführung von Befehlen
Der Ausführungsteil kann jeweils ausgelassen werden.
Anwendungsbeispiel: Aktuelle Außenfeuchtigkeit im Status
define di_hum DOIF ([outdoor:humidity]>70) DOELSEIF ([outdoor:humidity]>50) DOELSE
attr di_hum cmdState wet|normal|dry
evtl. brauche ich nur ein DOELSE am Ende und vllt so cmdState Nachtschicht|Frühschicht|keine
EDITH:// ich glaube das funktioniert, habe es mal geändert Danke für den Anstoß ;)
so bis heute morgen hat das mit der Schaltung gut geklappt, aber als ich um 9 Uhr aus dem Fenster geschaut habe - es war ja schon hell - war das Licht immer noch an...! :-\
Auszug aus dem Log, dass einschalten hat funktioniert und das ausschalten auch, aber dann hat er sofort wieder eingeschaltet...! :-\ kann mir das grad nicht erklären...!
2015.10.11 07:04:07 3: CUL_HM set WegLampe_Sw_02 on
2015.10.11 07:04:07 3: CUL_HM set WegLampe_Sw_02 off
2015.10.11 05:35:00 3: CUL_HM set WegLampe_Sw_02 on
Hier das list:
Internals:
DEF ([di_WegBeleuchtung_Status] eq "Frühschicht" and [04:55-{sunrise()}] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([di_WegBeleuchtung_Status] eq "Nachtschicht" and [05:35-{sunrise()}] and [myTwilight:twilight_weather] < 9) (set WegLampe_Sw_02 on)
DOELSEIF ([{sunrise(0,"06:00","07:15")}]) (set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens_Ein initialize)
NAME di_WegBeleuchtung_Morgens_Ein
NR 3046
NTFY_ORDER 50-di_WegBeleuchtung_Morgens_Ein
STATE cmd_2
TYPE DOIF
Readings:
2015-10-12 00:23:02 Device myTwilight
2015-10-11 07:04:07 cmd_event myTwilight
2015-10-11 07:04:07 cmd_nr 2
2015-10-11 23:36:09 e_di_WegBeleuchtung_Status_STATE Nachtschicht
2015-10-12 00:23:02 e_myTwilight_twilight_weather 0
2015-10-11 07:04:07 state cmd_2
2015-10-11 04:55:00 timer_1_c1 12.10.2015 04:55:00
2015-10-11 07:04:07 timer_2_c1 12.10.2015 07:05:49
2015-10-11 05:35:00 timer_3_c2 12.10.2015 05:35:00
2015-10-11 07:04:07 timer_4_c2 12.10.2015 07:05:49
2015-10-11 07:04:07 timer_5_c3 12.10.2015 07:05:49
Condition:
0 InternalDoIf('di_WegBeleuchtung_Status','STATE','') eq "Frühschicht" and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('myTwilight','twilight_weather','') < 9
1 InternalDoIf('di_WegBeleuchtung_Status','STATE','') eq "Nachtschicht" and DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and ReadingValDoIf('myTwilight','twilight_weather','') < 9
2 DOIF_time_once($hash,$hash->{timer}{4},$wday,"")
Days:
Devices:
0 di_WegBeleuchtung_Status myTwilight
1 di_WegBeleuchtung_Status myTwilight
all di_WegBeleuchtung_Status myTwilight
Do:
0:
0 set WegLampe_Sw_02 on
1:
0 set WegLampe_Sw_02 on
2:
0 set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens_Ein initialize
3:
Helper:
globalinit 1
last_timer 5
sleeptimer -1
Internals:
0 di_WegBeleuchtung_Status:STATE
1 di_WegBeleuchtung_Status:STATE
all di_WegBeleuchtung_Status:STATE
Itimer:
Readings:
0 myTwilight:twilight_weather
1 myTwilight:twilight_weather
all myTwilight:twilight_weather
Realtime:
0 04:55:00
1 07:05:49
2 05:35:00
3 07:05:49
4 07:05:49
State:
Time:
0 04:55:00
1 {sunrise()}
2 05:35:00
3 {sunrise()}
4 {sunrise(0,"06:00","07:15")}
Timecond:
0 0
1 0
2 1
3 1
4 2
Timer:
0 0
1 0
2 0
3 0
4 0
Timerfunc:
Timers:
0 0 1
1 2 3
2 4
Trigger:
Attributes:
room Kalender
Hallo,
probiere mal direkt vor 04:55 und 05:35 ein Fragezeichen.
Gruß Jens
Zitat von: EIB-Fan am 12 Oktober 2015, 11:09:38
Hallo,
probiere mal direkt vor 04:55 und 05:35 ein Fragezeichen.
Gruß Jens
das war schon einer meiner Versuche aber dann triggert er ja nicht mehr und schaltet nicht ein...!
Ich meine ich muss irgendwo im Code ein weiteres einschalten verhindern, indem ich die Zeit des triggerns auf eine Zeit beschränken...
Ich werde mal diese Zeit:
DOELSEIF ([{sunrise(0,"06:00","07:15")}]) (set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens_Ein initialize)
so ändern..
DOELSEIF ([+{sunrise_rel(0,"06:00","07:15")}]) (set WegLampe_Sw_02 off, set di_WegBeleuchtung_Morgens_Ein initialize)
Hallo,
da bei DOIF immer nur die erste richtige Bedingung ausgeführt wird, muss deine dritte Bedingung erst nach der zweiten Bedingung ausgeführt werden.
Gib mal hier statt der 0 eine 1 ein. So ist diese eine Sekunde nach Ende der zweiten Bedingung gültig.
([{sunrise(1,"06:00","07:15")}])
Gruß Jens
Vom Windows Phone gesendet.
irgendwie frage ich mich grad warum habe ich überhaupt beim einschalten, sunrise drin..? :-\
Das nehme ich mal raus, denn solange es dunkel ist macht das ja "myTwilight" dann kommt es auch nicht zum wiedereinschalten...!
Zitat von: Damian am 02 Oktober 2015, 15:46:41
Bei DOIF kannst du die Datumsabfrage mit Triggern oder mit Zeit kombinieren:
z. B. Heizung zur bestimmten Jahreszeit morgens um 5:00 Uhr einschalten:
($month > 10 and $month <5 and [05:00]) (set heating on)
oder z. B. nur am 1. und 15. des Monats auf einen Trigger reagieren:
(($mday==1 or $mday==15) and [FB] eq "on") (set ....
Gruß
Damian
Hallo.
Wie schalte ich auf einem betsimmten Tag, z.b. 1.3.
wenn ich dein beispiel nehme und ummünze auf ($month=3 and $day=1) kommt immer fehlermeldung :
DOIF: no trigger in condition: $month=3 and $day=1
schreib bitte deinen Code oder dein List hierher, sonst raten wir nur...!
kleiner Tipp, evtl. liegt es ja schon daran
du so:
($month=3 and $day=1)
commandref so:
($month==3 and $day==1)
Zitat von: moonsorrox am 13 Februar 2016, 15:15:57
schreib bitte deinen Code oder dein List hierher, sonst raten wir nur...!
kleiner Tipp, evtl. liegt es ja schon daran
du so:
($month=3 and $day=1)
commandref so:
($month==3 and $day==1)
sorry.
Nein klappt auch nicht , "DOIF: no trigger in condition: $month==3 and $day==1 "
[edit]
so klappts,
(($month = 3 and $day = 1) and [07:00]) (set ...... )
klappt leider nicht.
perl error in condition: ($month = 2 and $day = 13) and DOIF_time_once($hash->{timer}{3},$wday,""): Global symbol "$day" requires explicit package name at (eval 24551512) line 1.
Zitat von: satprofi am 13 Februar 2016, 21:06:14
klappt leider nicht.
perl error in condition: ($month = 2 and $day = 13) and DOIF_time_once($hash->{timer}{3},$wday,""): Global symbol "$day" requires explicit package name at (eval 24551512) line 1.
Der Tag des Monats heißt
$mday
Achso. Danke
Sent from my OPO
Hallo nochmals.
Irgendwie schein es nicht zu klappen.
heute wurde das kommando abgesetzt, obwohl ja nicht der 1.3. ist.
DOELSEIF (($month = 3 and $mday = 1) and [06:00]) (set ....)
why?
m.f.g.
DOELSEIF ($month == 3 and $mday == 1 and [06:00]) (set ....)
so sollte es am 1.3. 6Uhr schalten...
achso, aber bei "and" sollte doch alle bedingungen erfüllt sein, egal ob in oder ausser klammer.
trotzdem danke.
es funktioniert auch so.. also die Datumsabfrage extra in ()
DOELSEIF (($month == 3 and $mday == 1) and [06:00]) (set ....)
wichtig ist == statt =
Hallo.
Habe Problem mit folgendem DOIF
(($month > 10 and $month < 3) and [Ladestatus] < 2 and [Ueberschuss:state:d] > 100 and [07:45-19:00] and [Absorbtionsphase] eq "Closed" and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 10 and $month < 3) and [Ladestatus] < 3 and [Ueberschuss:state:d] > 200 and [07:00-18:00] and [Absorbtionsphase] eq "Closed" and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 10 and $month < 3) and [Ladestatus] < 4 and [Ueberschuss:state:d] > 300 and [07:45-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 10 and $month < 3) and [Ladestatus] < 5 and [Ueberschuss:state:d] > 400 and [07:00-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 10 and $month < 3) and [Ladestatus] >= 5 and [Ueberschuss:state:d] > 500 and [06:45-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 2 and $month < 11) and [Ladestatus] < 2 and [Ueberschuss:state:d] > 200 and [07:45-19:00] and [Absorbtionsphase] eq "Closed" and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 2 and $month < 11) and [Ladestatus] < 3 and [Ueberschuss:state:d] > 400 and [07:00-18:00] and [Absorbtionsphase] eq "Closed" and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 2 and $month < 11) and [Ladestatus] < 4 and [Ueberschuss:state:d] > 600 and [07:45-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 2 and $month < 11) and [Ladestatus] < 5 and [Ueberschuss:state:d] > 800 and [07:00-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF (($month > 2 and $month < 11) and [Ladestatus] >= 5 and [Ueberschuss:state:d] > 1000 and [06:45-18:00] and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
DOELSEIF ([Ueberschuss:state:d] < 1 or [Netz_Schuetz_aus] eq "on") (set Batterielader_aus on)
eigentlich sollte die Ladung starten, aber cmd steht auf 11.
[readings]
cmd_event
Ueberschuss
2016-02-13 15:39:07 cmd_nr 11
2016-02-13 15:39:07 e_Absorbtionsphase_STATE Open
2016-02-20 10:03:47 e_Ladestatus_STATE 5
2016-02-20 10:06:39 e_Netz_Schuetz_aus_STATE off
2016-02-20 07:59:01 e_Ueberschuss_state 2010
2016-02-20 10:06:31 state cmd_11
[/code]
was passt jetzt wieder nicht? :grr:
Fehler gefunden. habe mich nach Damians Beispiel gehalten ( $month >10 and $month <3 ) , das ist aber ein fehler , weil nie zutreffend.
so passts:
DOELSEIF (($month >10 or $month <3) and [Ladestatus] < 3 and [Ueberschuss:state:d] > 200 and [07:00-18:00] and [Absorbtionsphase] eq "Closed" and [Netz_Schuetz_aus] eq "off") (set Batterielader_aus off)
man beachte : ($month >10 or $month <3)
oder : ($month <11 and $month >2)
Zitat von: Damian am 02 Oktober 2015, 15:46:41
Bei DOIF kannst du die Datumsabfrage mit Triggern oder mit Zeit kombinieren:
z. B. Heizung zur bestimmten Jahreszeit morgens um 5:00 Uhr einschalten:
($month > 10 and $month <5 and [05:00]) (set heating on)
Gruß
Damian
das kann nie zutreffen, muss
($month > 10 or $month <5 and [05:00])
heissen.