<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Max</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Max"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Max"/>
	<updated>2026-04-06T07:43:45Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10916</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10916"/>
		<updated>2015-04-08T07:05:55Z</updated>

		<summary type="html">&lt;p&gt;Max: /* Codierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
Die Darstellung habe ich mittels [[Dashboard]] umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Zu dieser Zeit fahren die Rolläden runter, egal ob der angegebene Hellgleitswert erreicht wurde. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;open&amp;quot; aufweisen, bleiben diese oben.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru&lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter:&lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Tageslicht:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Dummy beinhaltet den Wert &amp;quot;hell&amp;quot; oder &amp;quot;dunkel&amp;quot;.&lt;br /&gt;
Diese beiden Werte werden von zwei at&#039;s in Abhängigkeit von Sunset/Sunrise gesetzt.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Tageslicht &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Tageslicht &lt;br /&gt;
devStateIcon devStateIcon hell:hell dunkel:nacht@crimson &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ATs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_hell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_hell&lt;br /&gt;
DEF        *{sunrise(1200)} set du_Tageslicht hell &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_dunkel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_dunkel&lt;br /&gt;
DEF        *{sunset(1200)} set du_Tageslicht dunkel&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts off&amp;quot;)}}) &lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;) and ([du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_wz_TK_Terrasse:state] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]])) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or (([EG_wz_TK_Terrasse:state] eq &amp;quot;open&amp;quot;) and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks on&amp;quot;)}})&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10915</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10915"/>
		<updated>2015-04-08T07:05:15Z</updated>

		<summary type="html">&lt;p&gt;Max: /* Dummys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
Die Darstellung habe ich mittels [[Dashboard]] umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Zu dieser Zeit fahren die Rolläden runter, egal ob der angegebene Hellgleitswert erreicht wurde. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;open&amp;quot; aufweisen, bleiben diese oben.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru&lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter:&lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Tageslicht:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Dummy beinhaltet den Wert &amp;quot;hell&amp;quot; oder &amp;quot;dunkel&amp;quot;.&lt;br /&gt;
Diese beiden Werte werden von zwei at&#039;s in Abhängigkeit von Sunset/Sunrise gesetzt.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Tageslicht &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
   alias      Tageslicht &lt;br /&gt;
   devStateIcon devStateIcon hell:hell dunkel:nacht@crimson &lt;br /&gt;
   icon       sani_solar &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ATs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_hell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_hell&lt;br /&gt;
DEF        *{sunrise(1200)} set du_Tageslicht hell &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_dunkel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_dunkel&lt;br /&gt;
DEF        *{sunset(1200)} set du_Tageslicht dunkel&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts off&amp;quot;)}}) &lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;) and ([du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_wz_TK_Terrasse:state] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]])) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or (([EG_wz_TK_Terrasse:state] eq &amp;quot;open&amp;quot;) and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks on&amp;quot;)}})&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10630</id>
		<title>Datei:Dashboard02.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10630"/>
		<updated>2015-03-26T16:46:54Z</updated>

		<summary type="html">&lt;p&gt;Max: Max lud eine neue Version von Datei:Dashboard02.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10629</id>
		<title>Datei:Dashboard02.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10629"/>
		<updated>2015-03-26T16:45:17Z</updated>

		<summary type="html">&lt;p&gt;Max: Max lud eine neue Version von Datei:Dashboard02.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10611</id>
		<title>Datei:Dashboard02.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10611"/>
		<updated>2015-03-24T07:05:02Z</updated>

		<summary type="html">&lt;p&gt;Max: Max lud eine neue Version von Datei:Dashboard02.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10610</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10610"/>
		<updated>2015-03-24T07:04:43Z</updated>

		<summary type="html">&lt;p&gt;Max: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
Die Darstellung habe ich mittels [[Dashboard]] umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Zu dieser Zeit fahren die Rolläden runter, egal ob der angegebene Hellgleitswert erreicht wurde. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;open&amp;quot; aufweisen, bleiben diese oben.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru&lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter:&lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Tageslicht:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Dummy beinhaltet den Wert &amp;quot;hell&amp;quot; oder &amp;quot;dunkel&amp;quot;.&lt;br /&gt;
Diese beiden Werte werden von zwei at&#039;s in Abhängigkeit von Sunset/Sunrise gesetzt.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;NAME       du_Tageslicht &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
   alias      Tageslicht &lt;br /&gt;
   devStateIcon devStateIcon hell:hell dunkel:nacht@crimson &lt;br /&gt;
   icon       sani_solar &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ATs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_hell&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_hell&lt;br /&gt;
DEF        *{sunrise(1200)} set du_Tageslicht hell &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;at_LichtRollo_dunkel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       at_LichtRollo_dunkel&lt;br /&gt;
DEF        *{sunset(1200)} set du_Tageslicht dunkel&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]]) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts off&amp;quot;)}}) &lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;) and ([du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([EG_wz_TK_Terrasse:state] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;) or [[du_Rollo_Zeit_ru]])) &lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks off&amp;quot;)}})&lt;br /&gt;
  DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]) or (([EG_wz_TK_Terrasse:state] eq &amp;quot;open&amp;quot;) and [du_Tageslicht:state] eq &amp;quot;dunkel&amp;quot;))&lt;br /&gt;
    ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks on&amp;quot;)}})&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
  DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
    (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10609</id>
		<title>Datei:Dashboard02.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10609"/>
		<updated>2015-03-24T07:02:49Z</updated>

		<summary type="html">&lt;p&gt;Max: Max lud eine neue Version von Datei:Dashboard02.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10055</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10055"/>
		<updated>2015-02-13T11:10:06Z</updated>

		<summary type="html">&lt;p&gt;Max: /* Visualisierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
Die Darstellung habe ich mittels [[Dashboard]] umgesetzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks off&amp;quot;)}}) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts off&amp;quot;)}}) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
   ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks off&amp;quot;)}})&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks on&amp;quot;)}})&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun ein interessantes DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10049</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10049"/>
		<updated>2015-02-12T19:22:24Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks off&amp;quot;)}}) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseLinks on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts off&amp;quot;)}}) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_ku_RO_StrasseRechts&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_ku_RO_StrasseRechts on&amp;quot;)}})&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
   ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;off&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks off&amp;quot;)}})&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  ({if (ReadingsVal(&amp;quot;EG_wz_RO_TerrasseLinks&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;---&amp;quot;) ne &amp;quot;on&amp;quot;) {fhem(&amp;quot;set EG_wz_RO_TerrasseLinks on&amp;quot;)}})&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun ein interessantes DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10046</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10046"/>
		<updated>2015-02-12T09:55:35Z</updated>

		<summary type="html">&lt;p&gt;Max: /* Grundsätzliche Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun ein interessantes DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10037</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10037"/>
		<updated>2015-02-11T19:52:31Z</updated>

		<summary type="html">&lt;p&gt;Max: /* ReadingsGroup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun ein interessantes DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils.pm gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10036</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10036"/>
		<updated>2015-02-11T19:51:57Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun ein interessantes DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10035</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10035"/>
		<updated>2015-02-11T19:50:03Z</updated>

		<summary type="html">&lt;p&gt;Max: /* Codierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben wo sich der Aktor befindet bzw was für eine Funktion dieser besitzt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10031</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10031"/>
		<updated>2015-02-11T18:22:47Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10030</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10030"/>
		<updated>2015-02-11T18:22:13Z</updated>

		<summary type="html">&lt;p&gt;Max: /* ReadingsGroup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&lt;br /&gt;
&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10029</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10029"/>
		<updated>2015-02-11T18:21:38Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([global:?INITIALIZED] or [du_Rollo_Zeit_ho:?] or [du_Rollo_Zeit_ho_WE:?] or [du_Rollo_Luminosity_ru:?] &lt;br /&gt;
or [du_Rollo_Zeit_ru_start:?] or [du_Rollo_Zeit_ru_ende:?]) (modify di_EG_ku_RO_StrasseLinks [di_EG_ku_RO_StrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], &lt;br /&gt;
modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], &lt;br /&gt;
modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10028</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10028"/>
		<updated>2015-02-11T18:19:38Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and &lt;br /&gt;
[du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or &lt;br /&gt;
[{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] &lt;br /&gt;
and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] &lt;br /&gt;
or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) &lt;br /&gt;
DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([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:&amp;amp;DEF], modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10022</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10022"/>
		<updated>2015-02-11T17:43:08Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
&lt;br /&gt;
wait       0:0:300:300:0 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([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:&amp;amp;DEF], modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10021</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10021"/>
		<updated>2015-02-11T17:08:03Z</updated>

		<summary type="html">&lt;p&gt;Max: /* DOIFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF enabled und disabled einen Randomtimer, welcher ein Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([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:&amp;amp;DEF], modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10020</id>
		<title>Rolladensteuerung mit Eingabemöglichkeiten</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Rolladensteuerung_mit_Eingabem%C3%B6glichkeiten&amp;diff=10020"/>
		<updated>2015-02-11T17:03:42Z</updated>

		<summary type="html">&lt;p&gt;Max: Die Seite wurde neu angelegt: „In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.  ==Grundsätzliche Beschreibung== Meine Rollläden im Haus sind allesamt mit HM Aktoren ver…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In diesem Artikel beschreibe ich, wie ich meine Rollläden steuere.&lt;br /&gt;
&lt;br /&gt;
==Grundsätzliche Beschreibung==&lt;br /&gt;
Meine Rollläden im Haus sind allesamt mit HM Aktoren versehen, welche ich nachträglich UP gelegt habe.&lt;br /&gt;
Vorher waren die Rolläden manuell bedienbar gewesen.&lt;br /&gt;
&lt;br /&gt;
Da ich eine Photovoltaikanlage besitze habe ich ein kleines Modul geschrieben, welches mir die Ertragsleistung in FHEM darstellt.&lt;br /&gt;
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. &lt;br /&gt;
Zwischenzeitlich ist ein Helligkeitssensor installiert worden. Dieser sorgt für das Herunterfahren der Rolläden bei Eintreten der Dunkelheit.&lt;br /&gt;
&lt;br /&gt;
Dieser Wert korreliert zwar mit den Werten der PV Anlage, dies habe ich aber bislang noch nicht aufgelöst.&lt;br /&gt;
&lt;br /&gt;
==Komponenten==&lt;br /&gt;
1. HM Funk-Jalousieaktor HM-LC-Bi1PBU-FM&lt;br /&gt;
&lt;br /&gt;
2. Solarlog-Modul&lt;br /&gt;
&lt;br /&gt;
3. Helligkeitssensor aus diesem Posting&lt;br /&gt;
   [http://forum.fhem.de/index.php/topic,20620.0.html Selbstbau HM_WDS10_TH_O mit Luftdruckmessung]&lt;br /&gt;
 &lt;br /&gt;
==Visualisierung==&lt;br /&gt;
Hier ist der Status eines jeden Rolladens ersichtlich und dieser ist bedienbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über diese Einstellungsseite können diverse Parameter der Steuerung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Dashboard02.png]]&lt;br /&gt;
&lt;br /&gt;
==Einstellungen==&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird die komplette Steuerung der Rolläden ein- bzw ausgeschaltet.&lt;br /&gt;
:Sofern der Modus &amp;quot;aus&amp;quot; aktiv ist, werden meine Rolläden lediglich über die Aktoren direkt oder eine HM Fernbedienung gesteuert.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
:Hier werden derzeit drei Modi unterstützt:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;1. Normal&#039;&#039;&lt;br /&gt;
: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.&lt;br /&gt;
: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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;2. Weihnachten&#039;&#039;&lt;br /&gt;
:Vom Prinzip arbeitet dieser Modus wie der Modus &amp;quot;Normal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;3. Urlaub&#039;&#039;&lt;br /&gt;
:Dieser Modus schaltet die Rolläden genauso wie der Modus &amp;quot;Normal&amp;quot;. Des Weiteren aktiviere ich noch eine Zufallssteuerung für eine Anwesenheitsbeleuchtung.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
:Hiermit wird der Ertrag der Photovoltaikanlage mit einbezogen, damit die Rolläden zur Südseite anhand definierter Werte geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
:Hier wird der Zeitpunkt definiert, wann die Rollläden an Werktagen geöffnet werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
:Dies definiert die Zeit, wann die Rolläden am Wochenende bzw an Tagen, welche in einer Holiday Datei definiert sind hoch gehen sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
:Dieser Wert ist der untere Schwellwert des Helligkeitssensors, ab wann die Rolläden in dem definierten Zeitraum geschlossen werden sollen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
:Ab dieser Zeit fahren die Rolläden bei Erreichen des Helligkeitswertes runter. Sofern eventuelle Tür-/Fensterkontakte den Status &amp;quot;closed&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
:Dies ist das Ende des Zeitraums. Wenn bis dahin die Helligkeit nicht unterschritten wurde, fahren die Rolläden nun spätestens runter.&lt;br /&gt;
&lt;br /&gt;
==Codierung==&lt;br /&gt;
Meine Aktoren haben den folgenden Aufbau, was den Namen angeht:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OG_ki1_RO_Carport&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die ersten zwei Zeichen geben das Geschoss an.&lt;br /&gt;
Die Zeichen 4-6 beschreiben das Zimmer.&lt;br /&gt;
Die Zeichen 8 und 9 stellen die Art des Aktors dar.&lt;br /&gt;
Ab Zeichen 11 wird noch weiter beschrieben, wenn es mehrere Aktoren in einem Zimmer gibt.&lt;br /&gt;
&lt;br /&gt;
===Dummys===&lt;br /&gt;
Beginnen möchte ich hier mit den Dummys, welche die Konfiguration der Steuerung darstellen.&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Automatik aktiv:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Master &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Automatik aktiv: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_automatic &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     01 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Art:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Art &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Art: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       fts_shutter_updown &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:Normal,Urlaub,Weihnachten &lt;br /&gt;
sortby     02 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;PV:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_PV &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      PV: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       weather_sun &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:an,aus &lt;br /&gt;
sortby     03 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ho &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     10 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit hoch WE:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; NAME       du_Rollo_Zeit_ho_WE &lt;br /&gt;
   TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit hoch WE: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     11 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Helligkeit runter:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Luminosity_ru &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Helligkeit runter &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       sani_solar &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:textField &lt;br /&gt;
sortby     20 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter start:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_start &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter start: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     21 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Zeit runter ende:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;NAME       du_Rollo_Zeit_ru_ende &lt;br /&gt;
TYPE       dummy &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
alias      Zeit runter ende: &lt;br /&gt;
devStateIcon .*:rc_BLANK &lt;br /&gt;
group      Rollos_Settings &lt;br /&gt;
icon       icoUhr &lt;br /&gt;
room       LichtRollo &lt;br /&gt;
setList    state:time &lt;br /&gt;
sortby     22 &lt;br /&gt;
webCmd     state&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DOIFs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet den Helligkeitswert und den Modus &amp;quot;Weihnachten&amp;quot;.&lt;br /&gt;
D.h., daß dieser Rollo erst am Ende des definierten Zeitraums herunterfährt.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru] and [du_Rollo_Art] ne &amp;quot;Weihnachten&amp;quot; and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7])) &lt;br /&gt;
  (set EG_ku_RO_StrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_ku_RO_StrasseRechts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ein Fensterkontakt mit in die Schaltung einbezogen.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_ku_TK_Strasse] eq &amp;quot;closed&amp;quot; and ([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts off) &lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_ku_TK_Strasse:state] eq &amp;quot;open&amp;quot;)) &lt;br /&gt;
  (set EG_ku_RO_StrasseRechts on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_EG_wz_RO_TerrasseLinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieses DOIF beachtet einen Fensterkontakt und bezieht die Photovoltaikanlage mit ein.&lt;br /&gt;
Dieser Rollo geht während des Zeitraums der Dunkelheit rauf und runter, sofern der Türkontakt geöffnet oder geschlossen wird.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Master] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and (([EG_dr_TS_Terrasse:luminosity] &amp;lt; [du_Rollo_Luminosity_ru:state] and [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_start&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}-{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}]) or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ru_ende&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;22:00:00&amp;quot;)}])) &lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks off)&lt;br /&gt;
DOELSEIF ([du_Rollo_Master] eq &amp;quot;an&amp;quot; and ([{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|8] or [{ReadingsVal(&amp;quot;du_Rollo_Zeit_ho_WE&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;10:00:00&amp;quot;)}|7]) or ([EG_wz_TK_Terrasse] eq &amp;quot;open&amp;quot;))&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 2100)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 0)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;an&amp;quot; and [EG_wz_TK_Terrasse] eq &amp;quot;closed&amp;quot; and [mySL:Pac_avg] &amp;gt;= 1501)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks 30)&lt;br /&gt;
DOELSEIF ([du_Rollo_PV] eq &amp;quot;aus&amp;quot;)&lt;br /&gt;
  (set EG_wz_RO_TerrasseLinks on)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aktoren sind vereinfachte Versionen der genannten DOIFs und werden daher hier nicht genannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_Art&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser enabled und disabled einen Randomtimer, welche Zufallslicht schaltet.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([du_Rollo_Art:state] eq &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 0, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 0) DOELSE ([du_Rollo_Art:state] ne &amp;quot;Urlaub&amp;quot;) (attr UrlaubTimer disable 1, attr at_Urlaub_DG_hz_SD_Zirkpumpe disable 1)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier folgt nun das mMn wichtigste DOIF.&lt;br /&gt;
Sofern manuelle Änderungen in den Text- bzw Zeitdummys durchgeführt werden, aktualisiert dieses DOIF die Definitionen der Rollo-DOIFs.&lt;br /&gt;
Dadurch werden die neuen Werte aus den Dummys für die Timer der DOIFs aktualisiert.&lt;br /&gt;
&lt;br /&gt;
Auch aktualisiert dieses DOIF bei einem Neustart von FHEM die DOIFs.&lt;br /&gt;
Andernfalls würden die Defaultwerte der ReadingsVal(...) in den Definitionen die Defaultwerte zurückliefern.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;di_Rollo_SetTime&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;([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:&amp;amp;DEF], modify di_EG_ku_RO_StrasseRechts [di_EG_ku_RO_StrasseRechts:&amp;amp;DEF], modify di_EG_wz_RO_Carport [di_EG_wz_RO_Carport:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseLinks [di_EG_wz_RO_TerrasseLinks:&amp;amp;DEF], modify di_EG_wz_RO_TerrasseRechts [di_EG_wz_RO_TerrasseRechts:&amp;amp;DEF], modify di_OG_elt_RO_Strasse [di_OG_elt_RO_Strasse:&amp;amp;DEF], modify di_OG_ki1_RO_Carport [di_OG_ki1_RO_Carport:&amp;amp;DEF], modify di_OG_ki1_RO_Garten [di_OG_ki1_RO_Garten:&amp;amp;DEF], modify di_OG_ki2_RO_Garten [di_OG_ki2_RO_Garten:&amp;amp;DEF])&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ReadingsGroup===&lt;br /&gt;
&lt;br /&gt;
Hier seien noch die beiden ReadingsGroup aufgeführt, welche im Dashboard dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Funktionen sind in der myRollosUtils gespeichert und dienen der Bedienung ausgehend aus den ReadingsGroups.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############## Rollos hoch/runter in Readingsgroup&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDown($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  my $icon = $CMD;&lt;br /&gt;
  my $link;&lt;br /&gt;
 &lt;br /&gt;
  if( $CMD eq &amp;quot;up&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHUP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new on&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;down&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_CHDOWN&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new off&amp;quot;;&lt;br /&gt;
  } elsif( $CMD eq &amp;quot;stop&amp;quot; ) {&lt;br /&gt;
    $icon = &amp;quot;remotecontrol/black_btn_STOP&amp;quot;;&lt;br /&gt;
    $link = &amp;quot;setreading $DEVICE cmd-new stop&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  my $notify = &amp;quot;no_RollosUpDown&amp;quot;;&lt;br /&gt;
  if( !defined($defs{$notify}) ) {&lt;br /&gt;
    CommandDefine(undef,&lt;br /&gt;
                   &amp;quot;$notify notify .*:cmd-new.* &amp;quot;&lt;br /&gt;
                   .&amp;quot;{ myRollos_RollosUpDownNotify(\$NAME,\$EVTPART1); }&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  my $ret = &amp;quot;%$icon&amp;quot;;&lt;br /&gt;
  $ret .= &amp;quot;%$link&amp;quot; if( $link );&lt;br /&gt;
 &lt;br /&gt;
  return $ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosUpDownNotify($$) {&lt;br /&gt;
  my($DEVICE,$CMD) = @_;&lt;br /&gt;
 &lt;br /&gt;
  return if( $CMD eq &amp;quot;&amp;quot; );&lt;br /&gt;
  &lt;br /&gt;
  CommandSet(undef, &amp;quot;$DEVICE $CMD&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
  return undef;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub myRollosUtils_RollosIcon($) {&lt;br /&gt;
  my($DEVICE) = @_;&lt;br /&gt;
  my $level = ReadingsVal($DEVICE,&amp;quot;level&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  my $pct = ReadingsVal($DEVICE, &amp;quot;pct&amp;quot;, &amp;quot;0&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  my $ret = int((100 - $level)/10)*10;&lt;br /&gt;
 &lt;br /&gt;
  my $icon;&lt;br /&gt;
  if ($ret eq &amp;quot;0&amp;quot;) {&lt;br /&gt;
    $icon = &amp;quot;fts_window_2w\@orange&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $icon = &amp;quot;fts_shutter_&amp;quot;.$ret.&amp;quot;\@orange&amp;quot;;  &lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  return $pct.&amp;quot; %&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EG_rg_Rolllaeden&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EG.*_RO_S.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_C.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_T.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt; EG.*_RO_M.*:level,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;up&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;stop&amp;quot;)}&amp;gt;,&amp;lt;{myRollosUtils_RollosUpDown($DEVICE,&amp;quot;down&amp;quot;)}&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      Rollos/Markise_EG &lt;br /&gt;
mapping    %ALIAS &lt;br /&gt;
valueFormat {pct =&amp;gt; &amp;quot;%.1f&amp;quot;} &lt;br /&gt;
valueIcon  %VALUE &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Notify===&lt;br /&gt;
&lt;br /&gt;
Ein Notify ist für die Bedienung ausgehend aus den ReadingsGroup notwendig.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;DEF        .*:cmd-new.* { myRollosUtils_RollosUpDownNotify($NAME,$EVTPART1); } &lt;br /&gt;
NAME       no_RollosUpDown &lt;br /&gt;
TYPE       notify &lt;br /&gt;
&lt;br /&gt;
Attributes: &lt;br /&gt;
group      notify&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10019</id>
		<title>Datei:Dashboard02.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard02.png&amp;diff=10019"/>
		<updated>2015-02-11T16:57:25Z</updated>

		<summary type="html">&lt;p&gt;Max: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:Dashboard01.png&amp;diff=10018</id>
		<title>Datei:Dashboard01.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:Dashboard01.png&amp;diff=10018"/>
		<updated>2015-02-11T16:55:45Z</updated>

		<summary type="html">&lt;p&gt;Max: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Max&amp;diff=9568</id>
		<title>Benutzer:Max</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Max&amp;diff=9568"/>
		<updated>2015-01-25T16:07:08Z</updated>

		<summary type="html">&lt;p&gt;Max: Die Seite wurde geleert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Max&amp;diff=9567</id>
		<title>Benutzer:Max</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Max&amp;diff=9567"/>
		<updated>2015-01-25T16:06:44Z</updated>

		<summary type="html">&lt;p&gt;Max: Die Seite wurde neu angelegt: „Testseite“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Testseite&lt;/div&gt;</summary>
		<author><name>Max</name></author>
	</entry>
</feed>