DOIF und sunrise() für Rolladensteuerung | wie testen?

Begonnen von Dracolein, 07 Februar 2020, 09:31:28

Vorheriges Thema - Nächstes Thema

Dracolein

Guten Morgen zu sammen,

ich versuche meine Grundlagen etwas zu erweitern und möchte meine Rolläden nun automatisch in Abhängigkeit des Sonnenauf- und untergangs sowie zusätzlich mit einem Touch UI Schalter steuern.
- Ein FTUI Switch steuert ein Dummy Device namens "Rolloautomatikschalter"
- Ein Shelly 2.5 namens "shelly1" steuert den Rolladen (pct 100=oben)

Aufgabe: Wenn der Rolloautomatikschalter = "on" ist, sollen die Rolläden morgens und abends jeweils bei Sonnenauf-/untergang automatisch rauf/runter fahren.

Dies ist mein erster vorsichtiger Kontakt mit dem DOIF Modul, meine geplante Lösung sieht so aus:
define Rolladenautomatik DOIF ([Rolloautomatikschalter:state] eq "on" and [{sunrise("REAL",0,"06:00","7:30")}]) (set shelly1 pct 100) DOELSEIF ([Rolloautomatikschalter:state] eq "on" and [{sunset("REAL",0,"18:00","22:00")}]) (set shelly1 pct 0) 

D.h. die Rolläden fahren morgens frühestens um 06:00 Uhr, spätestens um 07:30 Uhr hoch und abends frühestens um 18:00 Uhr bzw. spätestens um 22:00 Uhr, wenn der Automatikschalter aktiv ist.

Jetzt zu meinem heutigen Problem und meinen Fragen:
- ist die Syntax richtig?
- wann wird dieses DOIF durch FHEM überhaupt abgefragt ?
- Zu welchem Zeitpunkt ändert sich die Bedingung sunrise / sunset?
- wie kann ich diese Codezeile testen?

Ich habe schon diverse Foreneinträge und CommandRef Beispiele durchgelesen.
Danke vorab für Euer Feedback.


PS:
so siehts derzeit aus:

Internals:
   CFGFN     
   DEF        ([Rolloautomatikschalter:state] eq "on" and [{sunrise("REAL",0,"06:00","7:30")}]) (set shelly1 pct 100) DOELSEIF ([Rolloautomatikschalter:state] eq "on" and [{sunset("REAL",0,"18:00","22:00")}]) (set shelly1 pct 0)
   FUUID      5e3d208e-f33f-4dec-9238-fc6dccd3e33db08d
   MODEL      FHEM
   NAME       Rolladenautomatik
   NOTIFYDEV  Rolloautomatikschalter,global
   NR         22123
   NTFY_ORDER 50-Rolladenautomatik
   STATE      initialized
   TYPE       DOIF
   VERSION    20500 2019-11-12 17:54:48
   READINGS:
     2020-02-07 09:32:14   cmd             0
     2020-02-07 09:32:14   mode            enabled
     2020-02-07 09:32:14   state           initialized
     2020-02-07 09:32:14   timer_01_c01    08.02.2020 07:30:00
     2020-02-07 09:32:14   timer_02_c02    07.02.2020 18:00:00
   Regex:
     accu:
     cond:
       Rolloautomatikschalter:
         0:
           state      ^Rolloautomatikschalter$:^state:
         1:
           state      ^Rolloautomatikschalter$:^state:
   condition:
     0          ::ReadingValDoIf($hash,'Rolloautomatikschalter','state') eq "on" and ::DOIF_time_once($hash,0,$wday)
     1          ::ReadingValDoIf($hash,'Rolloautomatikschalter','state') eq "on" and ::DOIF_time_once($hash,1,$wday)
   days:
   do:
     0:
       0          set shelly1 pct 100
     1:
       0          set shelly1 pct 0
     2:
   helper:
     DEVFILTER  ^global$|^Rolloautomatikschalter$
     NOTIFYDEV  global|Rolloautomatikschalter
     globalinit 1
     last_timer 2
     sleeptimer -1
   intervalfunc:
   localtime:
     0          1581143400
     1          1581094800
   readings:
     all         Rolloautomatikschalter:state
   realtime:
     0          07:30:00
     1          18:00:00
   time:
     0          {sunrise("REAL",0,"06:00","7:30")}
     1          {sunset("REAL",0,"18:00","22:00")}
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1581094800:
       localtime  1581094800
       hash:
     1581143400:
       localtime  1581143400
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Befehle
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Damian

Dass die Syntax stimmt, siehst du daran, dass dein Befehl akzeptiert wurde und die Zeiten offenbar korrekt gesetzt wurden. Das Modul fragt nicht von sich aus nach irgendetwas, sondern wird immer von außen durch Zeittrigger oder Eventtrigger geweckt. Die Zeiten werden neu berechnet, wenn der entsprechende Zeittrigger zuschlägt. Deinen set-Befehl kannst du mit set cmd... testen, sonst musst du bis zum nächsten Zeitpunkt warten.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Moin,

das haut schon hin, momentan ist es ja (bei mir) erst 7:46 hell und 17:05 schon wieder dunkel. Also ziehen deine "Grenzzeiten"
Wen Du die mal raus nimmst sieht Du exakt Deine Zeiten für Auf- und Untergang.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ch.eick

Da mit der Zeit die Wünsche steigen empfehle ich das AutoShuttersControl Modul. Das hat bei mir keinen Wunsch offen gelassen und der Support ist super.

Gesendet von meinem SM-G930F mit Tapatalk
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Dracolein

Zitat von: ch.eick am 07 Februar 2020, 12:00:35
Da mit der Zeit die Wünsche steigen empfehle ich das AutoShuttersControl Modul. Das hat bei mir keinen Wunsch offen gelassen und der Support ist super.

Gesendet von meinem SM-G930F mit Tapatalk

Ach du liebe Güte, grade kurz überflogen  :o  ;D
Danke für den Tip, eventuell etwas für die Zukunft.

Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

flummy1978

Zitat von: Dracolein am 07 Februar 2020, 12:38:37
Ach du liebe Güte, grade kurz überflogen  :o  ;D
Danke für den Tip, eventuell etwas für die Zukunft.

Aus eigener (Anfänger) Erfahrung kann ich Dir sagen: Es lohnt sich, sich manchmal in die Module in aller Ruhe rein zu lesen, anstatt das Rad neu zu erfinden. Ich habe einige Sachen selbst gebaut, für die das entsprechende Modul lesen -> verstehen -> umsetzen einfacher wäre.
Im falle vom AutoShuttersControl  (ASC) kannst Du ja sehr sehr sehr viele Sachen auslassen, die Du nicht brauchst und Dich Schritt für Schritt an benötigte Funktionen trauen - So hab ich es am Ende auch gemacht ;)

Grüße
Andreas

Waldmensch

Falls Du auf dem Shelly Tasmota hast, empfehle ich dir, das dort mit den Timern einzustellen. Da gibt es ebenfalls sunrise und sunset. Bedingung auch dort korrekte Zeitzone und lat/long Settings. Falls FHEM mal weg ist, gehen sonst die Rollläden nicht mehr auf.


Gesendet von iPhone mit Tapatalk

Dracolein

Erstmal danke für die Tipps. 18:00 Uhr ist gerade durch und tatsächlich sind die Rolläden von Geisterhand runtergefahren  :-*
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz