DOIF auf Kalender oder Datum abfragen..

Begonnen von moonsorrox, 30 September 2015, 17:53:46

Vorheriges Thema - Nächstes Thema

Brockmann

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?

moonsorrox

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..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Brockmann

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...

moonsorrox

#18
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ß ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

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
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

EIB-Fan

Hallo,
probiere mal direkt vor 04:55 und 05:35 ein Fragezeichen.
Gruß Jens

moonsorrox

#21
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)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

EIB-Fan

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.

moonsorrox

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...!
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

satprofi

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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

moonsorrox

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)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

satprofi

#26
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 ...... )
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

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.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram