FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: moonsorrox am 30 September 2015, 17:53:46

Titel: DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 30 September 2015, 17:53:46
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag 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.

Gruß

Damian
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 01 Oktober 2015, 11:46:19
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...!
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: Damian am 01 Oktober 2015, 20:36:26
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 02 Oktober 2015, 12:12:16
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag 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.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 02 Oktober 2015, 12:22:21
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: marvin78 am 02 Oktober 2015, 12:25:07
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.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 02 Oktober 2015, 12:27:28
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  ;)
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: Damian am 02 Oktober 2015, 15:46:41
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



Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 03 Oktober 2015, 23:48:11
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]
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 06 Oktober 2015, 11:09:55
@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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: VB90 am 06 Oktober 2015, 11:17:20
@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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 06 Oktober 2015, 11:23:51
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: VB90 am 06 Oktober 2015, 11:34:13
Da hast du recht.
Funktioniert es denn ohne die Zeitangabe [01:00 - 23:55] zu beginn?
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: Brockmann am 06 Oktober 2015, 12:24:51
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?
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 06 Oktober 2015, 12:28:08
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..?
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: Brockmann am 06 Oktober 2015, 12:38:41
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...
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 06 Oktober 2015, 12:47:58
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ß ;)
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 12 Oktober 2015, 00:31:31
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: EIB-Fan am 12 Oktober 2015, 11:09:38
Hallo,
probiere mal direkt vor 04:55 und 05:35 ein Fragezeichen.
Gruß Jens
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 12 Oktober 2015, 11:12:58
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)
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: EIB-Fan am 12 Oktober 2015, 19:53:35
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.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: moonsorrox am 12 Oktober 2015, 23:24:51
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...!
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 13 Februar 2016, 15:03:13
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag 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)
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 13 Februar 2016, 15:28:51
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 ...... )
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag 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.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: Damian am 13 Februar 2016, 21:21:04
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
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 13 Februar 2016, 21:54:04
Achso. Danke

Sent from my OPO

Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 14 Februar 2016, 09:41:06
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.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: kumue am 14 Februar 2016, 10:07:27
DOELSEIF ($month == 3 and $mday == 1 and [06:00]) (set ....)

so sollte es am 1.3. 6Uhr schalten...
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 14 Februar 2016, 10:26:26
achso, aber bei "and" sollte doch alle bedingungen erfüllt sein, egal ob in oder ausser klammer.

trotzdem danke.
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: kumue am 14 Februar 2016, 10:31:14
es funktioniert auch so.. also die Datumsabfrage extra in ()
DOELSEIF (($month == 3 and $mday == 1) and [06:00]) (set ....)

wichtig ist == statt =
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 20 Februar 2016, 10:09:45
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:
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 20 Februar 2016, 11:41:30
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)
Titel: Antw:DOIF auf Kalender oder Datum abfragen..
Beitrag von: satprofi am 20 Februar 2016, 11:46:46
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.