Rolladensteuerung mit Eingabemöglichkeiten: Unterschied zwischen den Versionen

Aus FHEMWiki
 
(12 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:


==Grundsätzliche Beschreibung==
==Grundsätzliche Beschreibung==
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.
Mein erstes große Projekt in Sachen FHEM war es meine Rolläden automatisiert zu steuern, so dass man möglichst wenig manuell eingreifen muss.
Vorher waren die Rolläden manuell bedienbar gewesen.
Da der ein und andere Riemen der manuellen Steuerung den Geist aufgegeben hat, habe ich nach und nach alle Rolläden mit Motoren und HM Aktoren versehen.


Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.
Zeile 17: Zeile 17:


3. Helligkeitssensor aus diesem Posting
3. Helligkeitssensor aus diesem Posting
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]
   {{Link2Forum|Topic=20620|LinkText=Selbstbau HM_WDS10_TH_O mit Luftdruckmessung}}
   
   
==Visualisierung==
==Visualisierung==
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.
Die Darstellung habe ich mittels [[Dashboard]] umgesetzt.


[[Datei:Dashboard01.png]]
[[Datei:Dashboard01.png]]
Zeile 59: Zeile 60:
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.


;'''Zeit runter start:'''
;'''Zeit runter:'''
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status "closed" aufweisen. Während des Zeitraums gehen diese Rolläden hoch und auch wieder runter, sofern eine Tür/ein Fenster geöffnet bzw geschlossen wird.
:Zu dieser Zeit fahren die Rolläden runter, egal ob der angegebene Hellgleitswert erreicht wurde. Sofern eventuelle Tür-/Fensterkontakte den Status "open" aufweisen, bleiben diese oben.
 
;'''Zeit runter ende:'''
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.


==Codierung==
==Codierung==
Zeile 73: Zeile 71:
Die Zeichen 4-6 beschreiben das Zimmer.
Die Zeichen 4-6 beschreiben das Zimmer.
Die Zeichen 8 und 9 stellen die Art des Aktors dar.
Die Zeichen 8 und 9 stellen die Art des Aktors dar.
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.


===Dummys===
===Dummys===
Zeile 168: Zeile 166:
webCmd    state</nowiki>
webCmd    state</nowiki>


;'''Zeit runter start:'''
;'''Zeit runter:'''


  <nowiki>NAME      du_Rollo_Zeit_ru_start
  <nowiki>NAME      du_Rollo_Zeit_ru
TYPE      dummy  
TYPE      dummy  


Attributes:  
Attributes:  
alias      Zeit runter start:  
alias      Zeit runter:
devStateIcon .*:rc_BLANK  
devStateIcon .*:rc_BLANK  
group      Rollos_Settings  
group      Rollos_Settings  
Zeile 183: Zeile 181:
webCmd    state</nowiki>
webCmd    state</nowiki>


;'''Zeit runter ende:'''
;'''Tageslicht:'''


  <nowiki>NAME      du_Rollo_Zeit_ru_ende
Dieser Dummy beinhaltet den Wert "hell" oder "dunkel".
Diese beiden Werte werden von zwei at's in Abhängigkeit von Sunset/Sunrise gesetzt.
Dadurch gehen die Rollos hoch, wenn im Dunkeln eine Tür geöffnet wird. Wird die Tür geschlossen. Geht der Rollo auch wieder runter.
 
  <nowiki>NAME      du_Tageslicht
TYPE      dummy  
TYPE      dummy  


Attributes:  
Attributes:  
alias      Zeit runter ende:
alias      Tageslicht
devStateIcon .*:rc_BLANK
devStateIcon devStateIcon hell:hell dunkel:nacht@crimson
group      Rollos_Settings
icon      sani_solar
icon      icoUhr
</nowiki>
room       LichtRollo
 
setList    state:time
===ATs===
sortby    22
 
webCmd    state</nowiki>
Für beide ATs muss [[:SUNRISE_EL|SUNRISE_EL]] konfiguriert sein.
 
'''at_LichtRollo_hell'''
 
<nowiki>NAME       at_LichtRollo_hell
DEF        *{sunrise(1200)} set du_Tageslicht hell </nowiki>
 
 
'''at_LichtRollo_dunkel'''
 
<nowiki>NAME      at_LichtRollo_dunkel
DEF        *{sunset(1200)} set du_Tageslicht dunkel</nowiki>


===DOIFs===
===DOIFs===
Zeile 205: Zeile 218:
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.


  <nowiki>([du_Rollo_Master] eq "an" and ([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru] and  
  <nowiki>(([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne "Weihnachten" and [du_Tageslicht:state] eq "dunkel") or [{ReadingsVal("du_Rollo_Zeit_ru", "state", "22:00:00")}])  
[du_Rollo_Art] ne "Weihnachten" and [{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])  
    ({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "off") {fhem("set EG_ku_RO_StrasseLinks off")}})
or [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])  
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))
  (set EG_ku_RO_StrasseLinks off)  
    ({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "on") {fhem("set EG_ku_RO_StrasseLinks on")}})</nowiki>
DOELSEIF ([du_Rollo_Master] eq "an" and ([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8] or  
[{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7]))
  (set EG_ku_RO_StrasseLinks on)</nowiki>


'''di_EG_ku_RO_StrasseRechts'''
'''di_EG_ku_RO_StrasseRechts'''
Zeile 218: Zeile 228:
D.h. während des definierten Zeitraums gehen Rollos hoch, wenn eine Tür oder ein Fenster geöffnet wird. Ebenso wieder runter, sofern der Kontakt wieder geschlossen wird.
D.h. während des definierten Zeitraums gehen Rollos hoch, wenn eine Tür oder ein Fenster geöffnet wird. Ebenso wieder runter, sofern der Kontakt wieder geschlossen wird.


  <nowiki>([du_Rollo_Master] eq "an" and [EG_ku_TK_Strasse] eq "closed" and ([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state]  
  <nowiki>([EG_ku_TK_Strasse] eq "closed" and ([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq "dunkel") or [[du_Rollo_Zeit_ru]])
and [{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])  
    ({if (ReadingsVal("EG_ku_RO_StrasseRechts", "state", "---") ne "off") {fhem("set EG_ku_RO_StrasseRechts off")}})  
or [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])  
   DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or ([EG_ku_TK_Strasse:state] eq "open") and ([du_Tageslicht:state] eq "dunkel"))
   (set EG_ku_RO_StrasseRechts off)  
    ({if (ReadingsVal("EG_ku_RO_StrasseRechts", "state", "---") ne "on") {fhem("set EG_ku_RO_StrasseRechts on")}})</nowiki>
DOELSEIF ([du_Rollo_Master] eq "an" and ([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8] or
[{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7]) or ([EG_ku_TK_Strasse:state] eq "open"))
  (set EG_ku_RO_StrasseRechts on)</nowiki>


'''di_EG_wz_RO_TerrasseLinks'''
'''di_EG_wz_RO_TerrasseLinks'''
Zeile 231: Zeile 238:
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.


  <nowiki>([du_Rollo_Master] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and (([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state]  
  <nowiki>([EG_wz_TK_Terrasse:state] eq "closed" and (([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq "dunkel") or [[du_Rollo_Zeit_ru]]))
and [{ReadingsVal("du_Rollo_Zeit_ru_start", "state", "22:00:00")}-{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}])  
    ({if (ReadingsVal("EG_wz_RO_TerrasseLinks", "state", "---") ne "off") {fhem("set EG_wz_RO_TerrasseLinks off")}})
or [{ReadingsVal("du_Rollo_Zeit_ru_ende", "state", "22:00:00")}]))  
   DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or (([EG_wz_TK_Terrasse:state] eq "open") and [du_Tageslicht:state] eq "dunkel"))
   (set EG_wz_RO_TerrasseLinks off)
    ({if (ReadingsVal("EG_wz_RO_TerrasseLinks", "state", "---") ne "on") {fhem("set EG_wz_RO_TerrasseLinks on")}})
DOELSEIF ([du_Rollo_Master] eq "an" and ([{ReadingsVal("du_Rollo_Zeit_ho", "state", "10:00:00")}|8]
  DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 2100)
or [{ReadingsVal("du_Rollo_Zeit_ho_WE", "state", "10:00:00")}|7]) or ([EG_wz_TK_Terrasse] eq "open"))
    (set EG_wz_RO_TerrasseLinks 0)
  (set EG_wz_RO_TerrasseLinks on)
  DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 1501)
DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 2100)
    (set EG_wz_RO_TerrasseLinks 30)
  (set EG_wz_RO_TerrasseLinks 0)
  DOELSEIF ([du_Rollo_PV] eq "aus")
DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 1501)
    (set EG_wz_RO_TerrasseLinks on)
  (set EG_wz_RO_TerrasseLinks 30)
DOELSEIF ([du_Rollo_PV] eq "aus")
  (set EG_wz_RO_TerrasseLinks on)


wait      0:0:300:300:0 </nowiki>
wait      0:0:300:300:0 </nowiki>
Zeile 255: Zeile 259:
  <nowiki>([du_Rollo_Art:state] eq "Urlaub") (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0)  
  <nowiki>([du_Rollo_Art:state] eq "Urlaub") (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0)  
DOELSE ([du_Rollo_Art:state] ne "Urlaub") (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)</nowiki>
DOELSE ([du_Rollo_Art:state] ne "Urlaub") (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)</nowiki>
Hier folgt nun das mMn wichtigste DOIF.
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.
'''di_Rollo_SetTime'''
<nowiki>([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?]
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&DEF],
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&DEF],
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&DEF],
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&DEF],
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&DEF],
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&DEF])</nowiki>


===ReadingsGroup===
===ReadingsGroup===
Zeile 277: Zeile 264:
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.


Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.


  <nowiki>############## Rollos hoch/runter in Readingsgroup
  <nowiki>############## Rollos hoch/runter in Readingsgroup
Zeile 365: Zeile 352:
Attributes:  
Attributes:  
group      notify</nowiki>
group      notify</nowiki>
[[Kategorie:HOWTOS]]

Aktuelle Version vom 13. Mai 2017, 17:58 Uhr

In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.

Grundsätzliche Beschreibung

Mein erstes große Projekt in Sachen FHEM war es meine Rolläden automatisiert zu steuern, so dass man möglichst wenig manuell eingreifen muss. Da der ein und andere Riemen der manuellen Steuerung den Geist aufgegeben hat, habe ich nach und nach alle Rolläden mit Motoren und HM Aktoren versehen.

Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt. Anhand dieser Werte steuere ich Rolläden, welche zur Südseite gerichtet sind. Dadurch wird dann dynamisch die Sonneneinstrahlung und damit die Erwärmung der Zimmer eingestellt. Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.

Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.

Komponenten

1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM

2. Solarlog-Modul

3. Helligkeitssensor aus diesem Posting

  Selbstbau HM_WDS10_TH_O mit Luftdruckmessung

Visualisierung

Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar. Die Darstellung habe ich mittels Dashboard umgesetzt.

Dashboard01.png


Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.

Dashboard02.png

Einstellungen

Automatik aktiv:
Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.
Sofern der Modus "aus" aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.
Art:
Hier werden derzeit drei Modi unterstützt:
1. Normal
Bei diesem Modus fahren die Rollläden zu den definierten Zeiten hoch. Dabei wird eine Unterscheidung zwischen Wochentagen und Wochenenden berücksichtigt. Ausserdem werden mit Hilfe einer Holiday-Datei auch Feiertage und Urlaube berücksichtigt.
Abends ist ein Zeitraum und ein Helligkeitswert definiert. Sobald dieser Helligkeitswert in dem Zeitfenster unterschritten wird, fahren die Rolläden runter. Spätestens aber zum Ende des Zeitfensters.
2. Weihnachten
Vom Prinzip arbeitet dieser Modus wie der Modus "Normal". Lediglich ein Rolladen fährt zum Ende des Zeitfensters runter und nicht bei Unterschreitung des Helligkeitswertes, damit die Weihnachtsaussenbeleuchtung auch von innen begutachtet werden kann.
3. Urlaub
Dieser Modus schaltet die Rolläden genauso wie der Modus "Normal". Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.
PV:
Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.
Zeit hoch:
Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.
Zeit hoch WE:
Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.
Helligkeit runter:
Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.
Zeit runter:
Zu dieser Zeit fahren die Rolläden runter, egal ob der angegebene Hellgleitswert erreicht wurde. Sofern eventuelle Tür-/Fensterkontakte den Status "open" aufweisen, bleiben diese oben.

Codierung

Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:

OG_ki1_RO_Carport

Die ersten zwei Zeichen geben das Geschoss an. Die Zeichen 4-6 beschreiben das Zimmer. Die Zeichen 8 und 9 stellen die Art des Aktors dar. Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.

Dummys

Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.

Automatik aktiv:
NAME       du_Rollo_Master 
TYPE       dummy 

Attributes: 
alias      Automatik aktiv: 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       fts_shutter_automatic 
room       LichtRollo 
setList    state:an,aus 
sortby     01 
webCmd     state
Art:
NAME       du_Rollo_Art 
TYPE       dummy 

Attributes: 
alias      Art: 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       fts_shutter_updown 
room       LichtRollo 
setList    state:Normal,Urlaub,Weihnachten 
sortby     02 
webCmd     state
PV:
NAME       du_Rollo_PV 
TYPE       dummy 

Attributes: 
alias      PV: 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       weather_sun 
room       LichtRollo 
setList    state:an,aus 
sortby     03 
webCmd     state
Zeit hoch:
NAME       du_Rollo_Zeit_ho 
TYPE       dummy 

Attributes: 
alias      Zeit hoch: 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       icoUhr 
room       LichtRollo 
setList    state:time 
sortby     10 
webCmd     state
Zeit hoch WE:
 NAME       du_Rollo_Zeit_ho_WE 
   TYPE       dummy 

Attributes: 
alias      Zeit hoch WE: 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       icoUhr 
room       LichtRollo 
setList    state:time 
sortby     11 
webCmd     state
Helligkeit runter:
NAME       du_Rollo_Luminosity_ru 
TYPE       dummy 

Attributes: 
alias      Helligkeit runter 
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       sani_solar 
room       LichtRollo 
setList    state:textField 
sortby     20 
webCmd     state
Zeit runter:
NAME       du_Rollo_Zeit_ru
TYPE       dummy 

Attributes: 
alias      Zeit runter:
devStateIcon .*:rc_BLANK 
group      Rollos_Settings 
icon       icoUhr 
room       LichtRollo 
setList    state:time 
sortby     21 
webCmd     state
Tageslicht:

Dieser Dummy beinhaltet den Wert "hell" oder "dunkel". Diese beiden Werte werden von zwei at's in Abhängigkeit von Sunset/Sunrise gesetzt. Dadurch gehen die Rollos hoch, wenn im Dunkeln eine Tür geöffnet wird. Wird die Tür geschlossen. Geht der Rollo auch wieder runter.

NAME       du_Tageslicht 
TYPE       dummy 

Attributes: 
alias      Tageslicht 
devStateIcon devStateIcon hell:hell dunkel:nacht@crimson 
icon       sani_solar 

ATs

Für beide ATs muss SUNRISE_EL konfiguriert sein.

at_LichtRollo_hell

NAME       at_LichtRollo_hell
DEF        *{sunrise(1200)} set du_Tageslicht hell 


at_LichtRollo_dunkel

NAME       at_LichtRollo_dunkel
DEF        *{sunset(1200)} set du_Tageslicht dunkel

DOIFs

di_EG_ku_RO_StrasseLinks

Dieses DOIF beachtet den Helligkeitswert und den Modus "Weihnachten". D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.

(([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne "Weihnachten" and [du_Tageslicht:state] eq "dunkel") or [{ReadingsVal("du_Rollo_Zeit_ru", "state", "22:00:00")}]) 
    ({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "off") {fhem("set EG_ku_RO_StrasseLinks off")}})
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))
    ({if (ReadingsVal("EG_ku_RO_StrasseLinks", "state", "---") ne "on") {fhem("set EG_ku_RO_StrasseLinks on")}})

di_EG_ku_RO_StrasseRechts

Hier wird ein Fensterkontakt mit in die Schaltung einbezogen. D.h. während des definierten Zeitraums gehen Rollos hoch, wenn eine Tür oder ein Fenster geöffnet wird. Ebenso wieder runter, sofern der Kontakt wieder geschlossen wird.

([EG_ku_TK_Strasse] eq "closed" and ([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq "dunkel") or [[du_Rollo_Zeit_ru]]) 
    ({if (ReadingsVal("EG_ku_RO_StrasseRechts", "state", "---") ne "off") {fhem("set EG_ku_RO_StrasseRechts off")}}) 
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or ([EG_ku_TK_Strasse:state] eq "open") and ([du_Tageslicht:state] eq "dunkel"))
    ({if (ReadingsVal("EG_ku_RO_StrasseRechts", "state", "---") ne "on") {fhem("set EG_ku_RO_StrasseRechts on")}})

di_EG_wz_RO_TerrasseLinks

Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein. Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.

([EG_wz_TK_Terrasse:state] eq "closed" and (([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq "dunkel") or [[du_Rollo_Zeit_ru]])) 
    ({if (ReadingsVal("EG_wz_RO_TerrasseLinks", "state", "---") ne "off") {fhem("set EG_wz_RO_TerrasseLinks off")}})
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or (([EG_wz_TK_Terrasse:state] eq "open") and [du_Tageslicht:state] eq "dunkel"))
    ({if (ReadingsVal("EG_wz_RO_TerrasseLinks", "state", "---") ne "on") {fhem("set EG_wz_RO_TerrasseLinks on")}})
  DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 2100)
    (set EG_wz_RO_TerrasseLinks 0)
  DOELSEIF ([du_Rollo_PV] eq "an" and [EG_wz_TK_Terrasse] eq "closed" and [mySL:Pac_avg] >= 1501)
    (set EG_wz_RO_TerrasseLinks 30)
  DOELSEIF ([du_Rollo_PV] eq "aus")
    (set EG_wz_RO_TerrasseLinks on)

wait       0:0:300:300:0 

Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.

di_Rollo_Art

Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.

([du_Rollo_Art:state] eq "Urlaub") (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) 
DOELSE ([du_Rollo_Art:state] ne "Urlaub") (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)

ReadingsGroup

Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.

Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.

############## Rollos hoch/runter in Readingsgroup

sub myRollosUtils_RollosUpDown($$) {
  my($DEVICE,$CMD) = @_;
 
  my $icon = $CMD;
  my $link;
 
  if( $CMD eq "up" ) {
    $icon = "remotecontrol/black_btn_CHUP";
    $link = "setreading $DEVICE cmd-new on";
  } elsif( $CMD eq "down" ) {
    $icon = "remotecontrol/black_btn_CHDOWN";
    $link = "setreading $DEVICE cmd-new off";
  } elsif( $CMD eq "stop" ) {
    $icon = "remotecontrol/black_btn_STOP";
    $link = "setreading $DEVICE cmd-new stop";
  }
  
  my $notify = "no_RollosUpDown";
  if( !defined($defs{$notify}) ) {
    CommandDefine(undef,
                   "$notify notify .*:cmd-new.* "
                   ."{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }" );
  }
 
  my $ret = "%$icon";
  $ret .= "%$link" if( $link );
 
  return $ret;
}

sub myRollosUtils_RollosUpDownNotify($$) {
  my($DEVICE,$CMD) = @_;
 
  return if( $CMD eq "" );
  
  CommandSet(undef, "$DEVICE $CMD");
   
  return undef;
}

sub myRollosUtils_RollosIcon($) {
  my($DEVICE) = @_;
  my $level = ReadingsVal($DEVICE,"level", "0");
  my $pct = ReadingsVal($DEVICE, "pct", "0");
  
  my $ret = int((100 - $level)/10)*10;
 
  my $icon;
  if ($ret eq "0") {
    $icon = "fts_window_2w\@orange";
  } else {
    $icon = "fts_shutter_".$ret."\@orange";  
  }
   
  return $pct." %";
}


EG_rg_Rolllaeden

EG.*_RO_S.*:level,<{myRollosUtils_RollosUpDown($DEVICE,"up")}>,<{myRollosUtils_RollosUpDown($DEVICE,"stop")}>,
<{myRollosUtils_RollosUpDown($DEVICE,"down")}> EG.*_RO_C.*:level,<{myRollosUtils_RollosUpDown($DEVICE,"up")}>,
<{myRollosUtils_RollosUpDown($DEVICE,"stop")}>,<{myRollosUtils_RollosUpDown($DEVICE,"down")}> EG.*_RO_T.*:level,
<{myRollosUtils_RollosUpDown($DEVICE,"up")}>,<{myRollosUtils_RollosUpDown($DEVICE,"stop")}>,
<{myRollosUtils_RollosUpDown($DEVICE,"down")}> EG.*_RO_M.*:level,<{myRollosUtils_RollosUpDown($DEVICE,"up")}>,
<{myRollosUtils_RollosUpDown($DEVICE,"stop")}>,<{myRollosUtils_RollosUpDown($DEVICE,"down")}>

Attributes: 
group      Rollos/Markise_EG 
mapping    %ALIAS 
valueFormat {pct => "%.1f"} 
valueIcon  %VALUE 

Notify

Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.

DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } 
NAME       no_RollosUpDown 
TYPE       notify 

Attributes: 
group      notify