FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mameier1234 am 29 April 2017, 10:30:39

Titel: Mein erstes DoIf
Beitrag von: mameier1234 am 29 April 2017, 10:30:39
Hallo,

nachdem bei mir jetzt alle Grundfunktionen laufen, wollte ich meine Rolladensteuerung realisieren.

Dazu habe ich mir einen Dummy gebastelt, damit die Rolläden nur hoch und runterfahren, wenn dieser Dummy auf "on" steht...

Mein aus diversen Anleitungen zusammengeschnippseltes DoIf sieht so aus:

define di_RolladenSteuerung DOIF ##Rolladen sind zwischen Sonnenuntergang und Sonnenaufgang geschlossen, sonst auf\
(([du_RolloAutomatik:"on"]) and ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}])) (set du_RolloStatus Geschlossen)\
DOELSE (set du_RolloStatus Offen)
attr di_RolladenSteuerung do always


du_RolloAutomatik ist der Schalter, du_RolloStatus wollte ich erstmal verwenden um zu testen ob es geht...  Ich kann beide Dummies von hand mit set ... steuern

Aber irgendwie ist der Status nachts nicht geschlossen...

Was mache ich falsch ?
Titel: Mein erstes DoIf
Beitrag von: KernSani am 29 April 2017, 11:18:36
Schau dir mal die eckigen Klammern an. Sollte so aussehen [von-bis] Ansonsten wäre ein list des DOIFs gut.

Edit: do always brauchst du nicht.
Titel: Antw:Mein erstes DoIf
Beitrag von: Damian am 30 April 2017, 13:37:12
ZitatDazu habe ich mir einen Dummy gebastelt, damit die Rolläden nur hoch und runterfahren, wenn dieser Dummy auf "on" steht...

Dann solltest du den Zustand des Dummys abfragen und nicht nur das Ereignis:

[du_RolloAutomatik] eq "on"

Titel: Antw:Mein erstes DoIf
Beitrag von: mameier1234 am 30 April 2017, 14:47:33
Das war ein guter Tipp.. jetzt schaltet es tagsüber wenigstens mal von gesschlossen auf offen...

Ich warte mal heute Nacht ab..
Titel: Antw:Mein erstes DoIf
Beitrag von: mameier1234 am 02 Mai 2017, 19:44:26
Also... Der DoIf schaltet, aber nicht so wie ich will....

So wie es aussieht, schaltet er genau zu dem Zeitpunkt, an dem er soll.. Sonnenaufgang oder Untergang...

Aber: Angenommen, mein Schalter du_RolloAutomatik ist aus, ich komme abend heim und sehe: oh.. alle Rollos noch offen, dann schalte ich den du_RolloAutomatik auf on, dann soll er das runterfahren nachholen ...

Mach er nicht, er schaltet den Status auf offen...

Wenn ich es provoziere, Tagsüber den Status auf geschlossen schalte, dann den Dummy du_RolloAutomatik auf off, und dann wieder auf on , dann sollte er doch den Status wieder auf offen setzen, da 1.) Tagsüber und 2. ) du_Rolloautomatik auf on steht ??

Oder wie könnte ich das bauen ?

hier mal ein list:

Internals:
   DEF        ##Rolladen sind zwischen Sonnenuntergang und Sonnenaufgang geschlossen, sonst auf
((([du_RolloAutomatik] eq "on") and ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}]))) (set du_RolloStatus Geschlossen)
DOELSE (set du_RolloStatus Offen)
   NAME       di_RolladenSteuerung
   NR         257
   NTFY_ORDER 50-di_RolladenSteuerung
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2017-05-02 07:23:57   Device          du_RolloAutomatik
     2017-05-02 07:23:37   cmd             2
     2017-05-02 07:23:37   cmd_event       du_RolloAutomatik
     2017-05-02 07:23:37   cmd_nr          2
     2017-05-02 07:23:57   e_du_RolloAutomatik_STATE on
     2017-05-02 07:23:37   state           cmd_2
     2017-05-02 07:23:30   timer_01_c01    02.05.2017 20:51:02
     2017-05-02 07:23:30   timer_02_c01    03.05.2017 07:00:00
   Condition:
     0          ((InternalDoIf($hash,'du_RolloAutomatik','STATE') eq "on") and (DOIF_time_once($hash,0,$wday)-DOIF_time_once($hash,1,$wday)))
   Days:
   Devices:
     0           du_RolloAutomatik
     all         du_RolloAutomatik
   Do:
     0:
       0          set du_RolloStatus Geschlossen
     1:
       0          set du_RolloStatus Offen
   Helper:
     event      on
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   du_RolloAutomatik
     timerevent on
     triggerDev du_RolloAutomatik
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       on
     triggerEventsState:
       state: on
   Internals:
     0           du_RolloAutomatik:STATE
     all         du_RolloAutomatik:STATE
   Itimer:
   Localtime:
     0          1493751062
     1          1493787600
   Readings:
   Realtime:
     0          20:51:02
     1          07:00:00
   Regexp:
     0:
     All:
   State:
     State:
   Time:
     0          {sunset(-1500,"16:00","22:00")}
     1          {sunrise(+1800,"07:00","9:00")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timers:
     0           0  1
   Trigger:
   Triggertime:
     1493751062:
       localtime  1493751062
       Hash:
     1493787600:
       localtime  1493787600
       Hash:
Attributes:
   room       Haus