IPSShadowing - eine Beschattungssteuerung

Hm, irgenwie hab ich das mit dem Sonnenstandsprofil noch nicht gecheckt.

Wenn dieses Profil aktiv/nicht aktiv ist, was macht es dann?
Oder hat meine Konfiguration einen Fehler? Sonnenstand scheint nämlich nicht wie etwa Temperatur für die Einstellungen auf. Profil Süden ist für 110-240° und 20° Elevation scharf.

Die Rückmeldung an IPSShadowing bei manuellem Verstellen der Homematic-Rollläden funktioniert bei mir auch nicht, obwohl die Events ausgelöst werden. Da werd ich wohl noch etwas tiefer bohren müssen :wink:

Danke
Klemens

Das schaut eh gut aus bei dir, die Rolläden sind ja unten :slight_smile:

Es gibt da eine Art Prio, die abgearbeitet wird.

  1. Prio: Sonnenstand: wenn das Profil aktiv ist, wirds rot hinterlegt
  2. Prio: Temperaturprofil: detto, wenn rot hinterlegt, dann aktiv.

Voraussetzung ist aber, dass das Sonnenstandsprofil auch aktiv ist, sonst bleibt der Rolladen auf den Status vom Tagesprogramm.

Hallo,

ich habe XComfort componets, who can ich die instalieren in software, ich habe die innen und ausen temperatuur gefunden, aber die shutter id nicht.

danke, Ron

Hallo Andreas,

ich hätte für Deine geniale Beschattungssteuerung noch ein Feature Wunsch.

Meine bisherigen Rollesteuerung möchte ich durch Deine Lösung ersetzen.
Momentan fahre ich bei Abwesenheit bei bestimmten leicht erreichbaren Fenstern die Rolladen runter, wenn das entsprechende Fenster gekippt ist. Stichwort Einbruchsschutz bei gekippten Fenstern.

Es wäre Klasse, wenn Du du eine solche Funktionalität in einem zukünftigen Release aufnehmen könntest. D.h. im Configuration Array eine weitere Konfigurationsmöglichkeiten für eine Variable „Fenster auf/zu“, eine Konstante mit dem gewünschten Rollolevel bei offenen Fenster und Abwesenheit und einem On/Off Button im WF um den „Einbruchsschutz“ zu aktivieren.

Da mir diese Funktionalität sehr wichtig ist, überlege ich gerade, wie ich es temporär selber nachrüsten könnte. Ich habe in der WIKI die Callback Funktion „IPSShadowing_BeforeActivateShutter“ entdeckt.

Wenn ich mich hier einklinke und dann mit einem eigenen Script die Abwesenheit und die Fensterstellung des zum Rollo gehörigen Fenster bestimme, könnte ich doch bei Bedarf durch Rückgabe von „false“ eine Veränderung des Rollostandes durch IPSShadowing verhindern?

Die Ansteuerung der Rollos auf „Auf Einbruchsschutzhöhe bei geöffneten Fenster fahren“ übernehme ich mit einem separaten Script welches durch die Abwesenheits Variable getriggert wird.

Wie könnte ich denn die Rollos, die auf „Einbruchsschutzlevel“ gefahren sind, wieder auf die jeweilige von IPSShadowing festgelegte Position bringen, wenn sich der Status von Abwesend auf Anwesend ändert?

Gruß
Uwe

Ich bring das einfach nicht hin. Die Rückmeldung manueller Betätigung z.B. der Rollladentaster sollte laut Wiki ja implementiert sein. Der OnChange Event im Messagehandler ist angelegt und funktioniert, nur HandleEvent im IPSComponentShutter_Homematic wird nie aufgerufen (hab ein echo … eingebaut zur Kontrolle) und somit auch nicht synchronisiert mit IPSShadowing. Hat jemand eine Ahnung, was ich da falsch mache?

Meine config für die shutter sieht so aus:

		c_ShadowingDevice_5 =>	array(
			c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
			c_Property_Name				=> 'SZ Fenster',
			c_Property_Component		=> 'IPSComponentShutter_Homematic, 39578',
			c_Property_TimeOpening		=> 	21,
			c_Property_TimeClosing		=> 	21,
			c_Property_TimePause		=> 	1,
			c_Property_TempSensorIndoor	=> '45944',

Danke
Klemens

@Klemens

Du hast ein Blank in Diener Component Definition, das verursacht das Problem vermutlich, da die zugehörige Beschattungseinheit bei der Rückmeldung nicht gefunden werden kann.

Versuchs mal mit:


c_Property_Component => 'IPSComponentShutter_Homematic,39578',

@Uwe

werde mir Dienen Feature Vorschlag durch den Kopf gehen lassen und eventuell bei einem der nächsten größeren Änderungen direkt unterstützen.

Dein gewünschtes Feature kannst Du allerdings bereits jetzt über die Program Callback Methode komplett in die Tat umsetzen. Einfach in der Konfiguration für jedes Device ein neues Property „WindowKontaktId“ anlegen und bei Fenstern, die Du nicht Schliessen möchtest auf 0 setzen.

Die Ansteuerung kannst Du dann mit folgenden Code machen:

	function IPSShadowing_ProgramCustom($DeviceId, $isDay) {
		$deviceConfig = get_ShadowingConfiguration();
		$deviceName   = IPS_GetName($DeviceId);
		$windowKontaktId = $deviceConfig[$deviceName]['WindowKontaktId'];

		if ($windowKontaktId==0) {
			return false;
		} else if (GetValue($windowKontaktId) /*Window Opened*/ and GetValue(12345) /*Abwesenheit*/ ) {
			$device = new IPSShadowing_Device($DeviceId);
			$device->MoveByProgram(c_ProgramId_Closed);    
			return true;
		} else {
			return false;
		}
	}

Hallo Andreas,

vielen Dank für Dein Codebeispiel. Ich konnte damit meinen „Einbruchsschutz“ wunderbar umsetzen. Ich fahre jetzt bei Abwesenheit die Rolladen aller offenen/gekippten Fenster im EG auf 90%. Dadurch ist eine Lüftung des Raumes durch die Lamellen-Schlitze weiterhin möglich. Wegen der Rohrmotoren in den Rolladenkästen kann man die Rolladen nicht einfach wieder hochschieben. Dadurch wird ein Einbruch wegen gekippter Fenster sehr erschwert.

Ich hatte allerdings das gleiche Problem wie Klemens mit der Rückmeldung der manuellen Homematic Betätigung. Ich benutze allerdings bei meiner Config die Pfad-Schreibweise.

c_Property_Component => ‚IPSComponentShutter_Homematic, Hardware.Homematic.Bad.Rollo‘,

In „IPSModuleShutter_IPSShadowing.class.php“ vergleichst Du in der Function „SyncPosition“ if($componentParams==$deviceData[c_Property_Component])

Die erste Variable benutzt die ID Schreibweise und die zweite Variable benutzt (bei mir) die Pfad-Schreibweise. Daher können sie nie gleich sein und die IF-Schleife wird nie ausgeführt.

Mit folgenden Änderungen habe ich das Problem behoben. Leerzeichen nach dem Komma sollten durch den Trim() auch bei ID-Schreibweise kein Problem mehr sein.


public function SyncPosition($position, IPSComponentShutter $component) {
	$deviceConfig      = get_ShadowingConfiguration();
	$componentParams   = $component->GetComponentParams();
			
	foreach ($deviceConfig as $deviceIdent=>$deviceData) {
		$MyDeviceData = explode(',', $deviceData[c_Property_Component]);
		$MyDeviceData = trim($MyDeviceData[0]).','.IPSUtil_ObjectIDByPath(IPSUtil_ObjectIDByPath(trim($MyDeviceData[1])));
		//if ($componentParams==$deviceData[c_Property_Component]) {
		if ($componentParams==$MyDeviceData) {
			$categoryIdDevices = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Devices');
			$deviceId = IPS_GetObjectIDByIdent($deviceIdent, $categoryIdDevices);
					
			$device = new IPSShadowing_Device($deviceId);
			$device->MoveByEvent($position);
		}
	}
}


P.S. Nochmals vielen Dank für Deine tolle IPSLibrary. Die Beschäftigung damit ist lehrreicher als jedes Buch über objektorientierte Programmierung.

Hallo Uwe,

ja, für eine korrekte Rückmeldung war bis jetzt die Angabe mit der Instanz ID zwingend erforderlich.

Deine Version funktioniert zur Zeit aber nur, wenn der erste Parameter eine Instance ID ist und auch noch eindeutig ist (das ist aber durch die Architektur nicht zwingend vorgeschrieben.

Ich hab das Anbindung jetzt mal etwas modifiziert, sodass die Synchronisierung in jedem Fall funktionieren sollte:


      public function SyncPosition($position, IPSComponentShutter $componentToSync) {
         $componentParamsToSync = $componentToSync->GetComponentParams();
         $deviceConfig          = get_ShadowingConfiguration();
         foreach ($deviceConfig as $deviceIdent=>$deviceData) {
            $componentConfig       = IPSComponent::CreateObjectByParams($deviceData[c_Property_Component]);
            $componentParamsConfig = $componentConfig->GetComponentParams();
            if ($componentParamsConfig==$componentParamsToSync) {
               $categoryIdDevices = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Devices');
               $deviceId = IPS_GetObjectIDByIdent($deviceIdent, $categoryIdDevices);

               $device = new IPSShadowing_Device($deviceId);
               $device->MoveByEvent($position);
            }
         }
      }

@brownson: Danke für den Tip mit dem Blank. Jetzt funktioniert es einwandfrei.
Einfach genial :slight_smile:

Hallo Andreas,

Deine neue SyncPosition aus #509 klappt auf Anhieb. Besten Dank.
Ich muss mir mal eine Zeichnung machen, wie die einzelnen Konstanten, Variablen und Objekte zusammenhängen! :wink:

Hi,

tolles Programm! Und das entdecke ich, wo der Sommer vorbei ist.:stuck_out_tongue:

Ich habe die 52 Seiten des Thread nur quergelesen, aber nichts gefunden, was meine Fragezeichen hätte auflösen können.

Mein Haus hat 2 relevante Seiten, also habe ich auch 2 Helligkeitssensoren.
Und da ich eine fast perfekte Ost-West Ausrichtung habe, ist morgens die eine Seite hell und nachmittags die andere.

Jetzt will ich ja aber nur die Seite beschatten, auf der gerade die Sonne reinbretzelt.

Kann ich auch 2 Helligkeitssensoren einstellen?

Mic

Hallo Brownson,

vielleicht kannst du mich ein wenig erleuchten…
Meine Beschattung macht (meiner Meinung nach) aktuell recht seltsame Dinge mit mir :confused:

Wenn ich (wie auf dem Bild) die Temperaturprofile so einstelle, dass die Temperaturen für „Schliessen“ ignoriert werden, ist die Beschattung der Meinung bei den aktuellen Temperaturen müsste sie das Temperaturprogram aktiv schalten.
Vielleicht kannst du mir da auf die Sprünge helfen und mir erklären warum, ich verstehs nicht :slight_smile:

@Magorian

Die Einstellungen „Beschattung Aussen/Innen“ ist nur eine Zusatz-Option für „Schliessen Aussen/Innen“. Wenn Du Schliessen auf ignorieren gestellt hast, dann wird nur mit dem Sonnenstand beschattet.

Eventuell könnte ich das in Zukunft supporten, werd ich mir mal durch den Kopf gehen lassen (bis zum nächsten Frühling).

Versuchs mal mit einem Sensor, eventuell reicht ja in der Praxis (zusammen mit der Konfiguration des Sonnenstandes) eh einer …

@Mic

Zur Zeit wird nur ein Helligkeitssensor unterstützt. Die Unterstützung eines 2. Sensors gehört ebenfalls zu den Features, die ich mir überlegen werde.

Super Programm, nur leider bekomme ich es nicht sauber zum Laufen.

Einzeln kann ich die Rolläden fahren. Wenn ich aber zum Beispiel ‚alle Schließen‘ klicke, dann fahren die Rolläden wild durcheinander. Manche fahren auf und andere Zu. Manche sogar erst zu und dann auf. ICH erhalte dann die Folgende Fehlermeldung im WF.

Interessant ist auch, dass diese Nacht plötzlich im Schlafzimmer um 0:05Uhr der Rolladen ein Stück auf.
Im Log steht
Öffnen von ‚Schlafzimmer‘ durch ‚Nachtprogramm‘ ,Programm=‚90%‘
Tag und Nachprogramm werden aber durch IPSTwilight gesteuert und auch korrekt angezeigt.

Installiert habe ich genau nach WIKI Beschreibung. Als Version wod mir aber beim IPSShadowing die 2.50.3 angezeigt. Ich habe IPS 2.6.
Kann mir jemand sagen wo ich anfangen soll mit Fehlersuche?

Hallo,

Das Problem kann ich zur Zeit nicht nachvollziehen - hast Du eventuell die Konfiguration im Nachhinein geändert (zB den Beschattungs Type umgestellt).

Kontrollier auch nochmals die Szenarien, eventuell ist dort ein falscher Wert eingestellt (verstell auch mal alle Werte, ich vermute hier ein Problem durch die Änderung des Beschattungstypes in der Konfiguration).

Um Mitternacht findet das Rücksetzen der manuellen Steuerung statt und es wird wieder das Automatik Programm aktiviert (passiert nur wenn man die Dinger manuell ansteuert).

Hallo Brownson

Ja das mit dem R�ckstellen um Mitternacht war der Ausl�ser. im Nachtmodus war das Schlafzimmerrollo auf 90% eingestellt. Meine Frau hatte es aber komplett herunter gefahren. Allerdings finde ich Mitternacht f�r ein zur�cksetzen denkbar ung�nstig. Wenn sich da was bewegt (was ja nicht ganz ger�uschlos abgeht) ist man munter und ich per�nlich hab dann probleme wieder einzuschlafen. Kann man den Mitternachtszeitpunkt deaktivieren? Per Script kann man ja das manuell Flag zur�cksetzen.
Wegen der Fehlermeldung schaue ich mal ob ich mich da durch die Quellen Durcharbeiten kann. Ich habe 12 Rolll�den, die gefahren werden. In IPS ist die Anzahl der Threads auf 10 eingestellt. Kann das eventuell zu gering sein?

Das mit dem Rücksetzen werde ich auf jeden Fall noch ändern, dauert noch etwas, steht aber auf meiner ToDo Liste.

Mit der Anzahl der Threads kann es nichts zu tun haben, es wird nur einer zur Steuerung verwendet.

Hast du in der Konfig den Richtigen Typ ausgewählt?
DIM Out deutet, wenn ich mich jetzt nicht irre, auf Jalousie hin, nicht auf Rolläden.

Wie steuerst du deine Rolläden an?
Ich hatte anfangs auch ein ähnliches Problem wie du mit den Szenarien, wenn wie in meinem Fall 12 Rolläden gleichzeitig angesteuert werden.
Ich steuer meine Rolläden über ein Somfy Funk RS 485 Gateway, das braucht zwischen den einzelnen Schaltbefehlen ca. eine halbe Sekunde Zeit, bis es den nächsten Befehl rausschicken kann…IPS schickt ja alles auf einmal raus.
Ich hab das mit Wartezeiten für die einzelnen Schaltbefehle gelöst.

Seit einem der letzten Updates von IPS Shadowing wurde das aber eh optimiert und es wird nur mehr über einen einzigen Thread rausgeschickt und nicht mehr über mehrere parallel.

Ein zusätzliches Problem bei mir war, dass das Netbook, auf dem IPS lief, etwas zu schwach war und IPS Shadowing doch sehr resourcenintensiv ist.

Schau dir mal die CPU Auslastung aus, wenn du alle Rolläden gleichzeitig ansteuerst.

Also hier ma meine Konfiguration.

<?
	/*
	 * This file is part of the IPSLibrary.
	 *
	 * The IPSLibrary is free software: you can redistribute it and/or modify
	 * it under the terms of the GNU General Public License as published
	 * by the Free Software Foundation, either version 3 of the License, or
	 * (at your option) any later version.
	 *
	 * The IPSLibrary is distributed in the hope that it will be useful,
	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	 * GNU General Public License for more details.
	 *
	 * You should have received a copy of the GNU General Public License
	 * along with the IPSLibrary. If not, see http://www.gnu.org/licenses/gpl.txt.
	 */    

	/**@defgroup ipsshadowing_configuration IPSShadowing Konfiguration
	 * @ingroup ipsshadowing
	 * @{
	 *
	 * @file          IPSShadowing_Configuration.inc.php
	 * @author        Andreas Brauneis
	 * @version
	 *  Version 2.50.1, 19.03.2012<br/>
	 *
	 * Konfigurations File für IPSShadowing
	 *
	 */

	IPSUtils_Include ("IPSShadowing_Constants.inc.php",      "IPSLibrary::app::modules::IPSShadowing");
	IPSUtils_Include ("IPSTwilight_Configuration.inc.php",   "IPSLibrary::config::modules::Weather::IPSTwilight");

	/** Temperatursensor Innen
	 *
	 * Definition des Innentemperatur Sensors, die Konstante muß auf eine Variable verweisen, die die aktuelle Innentemperatur
	 * als Float Value enthält.
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TEMPSENSORINDOOR",		"23070");

	/** Temperatursensor Aussen
	 *
	 * Definition des Aussentemperatur Sensors, die Konstante muß auf eine Variable verweisen, die die aktuelle Aussentemperatur
	 * als Float Value enthält.
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TEMPSENSOROUTDOOR",	"");

	/** Helligkeitssensor
	 *
	 * Definition des Helligkeits Sensors, die Konstante muß auf eine Variable verweisen, die die aktuelle Helligkeit
	 * als Integer oder Float Value enthält.
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_BRIGHTNESSSENSOR",	'');

	/** Regensensor
	 *
	 * Definition des Regen Sensors, die Konstante muß auf eine Variable verweisen, die den Wert des Sensors als 
	 * boolschen Wert enthält.
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_RAINSENSOR",		"");

	/** Windsensor
	 *
	 * Definition des Wind Sensors, die Konstante muß auf eine Variable verweisen, die den Wert des Sensors als 
	 * Float Wert mit Angabe in "kmh" enthält, 
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_WINDSENSOR",		"");

	/** Anwesenheits Flag
	 *
	 * Definition des Anwesenheits Flags, die Konstante muß auf eine Variable verweisen, die den aktuellen Anwesenheits Status als
	 * boolean Wert enthält (true bedeutet Anwesend).
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_PRESENT",			'24098');

	/** Abwesenheits Flag
	 *
	 * Definition des Abwesenheits Flags, die Konstante muß auf eine Variable verweisen, die den aktuellen Abwesenheits Status als
	 * boolean Wert enthält (true bedeutet Abwesend).
	 * Diese Variable kann alternativ zu dem Anwesenheits Flag gesetzt werden.
	 * Die Verlinkung der Variable erfolgt entweder direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_ABSENCE",			"");

	/** Zeitpunkt Sonnenaufgang
	 *
	 * Definition des Tagesbeginn Zeitpunktes, die Konstante muß auf eine Variable verweisen, die die Zeit in der Form
	 * hh:mm enthält.
	 * Verlinkung erfolgt direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TWILIGHTSUNRISE",			"Program.IPSLibrary.data.modules.Weather.IPSTwilight.Values.SunriseBegin");

	/** Zeitpunkt Sonnenuntergang
	 *
	 * Definition des Tagesend Zeitpunktes, die Konstante muß auf eine Variable verweisen, die die Zeit in der Form
	 * hh:mm enthält.
	 * Verlinkung erfolgt direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TWILIGHTSUNSET",			"Program.IPSLibrary.data.modules.Weather.IPSTwilight.Values.SunriseEnd");
	
	/** Zeitpunkt limited Sonnenaufgang
	 * 
	 * Definition des "limited" Tagesbeginn Zeitpunktes, die Konstante muß auf eine Variable verweisen, die die Zeit in der Form
	 * hh:mm enthält. Durch diese Variable ist es möglich, dass der Tagesbeginn in bestimmten Grenzen liegen muß.
	 * Verlinkung erfolgt direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TWILIGHTSUNRISELIMITED",	"Program.IPSLibrary.data.modules.Weather.IPSTwilight.Values.SunriseBeginLimited");

	/** Zeitpunkt limited Sonnenuntergang
	 *
	 * Definition des "limited" Tagesend Zeitpunktes, die Konstante muß auf eine Variable verweisen, die die Zeit in der Form
	 * hh:mm enthält. Durch diese Variable ist es möglich, dass der Tagesbeginn in bestimmten Grenzen liegen muß.
	 * Verlinkung erfolgt direkt durch Angabe der ID oder durch Angabe des Pfades.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_TWILIGHTSUNSETLIMITED",	"Program.IPSLibrary.data.modules.Weather.IPSTwilight.Values.SunriseEndLimited");

	/**
	 * Angabe des Breitengrades zur Berechnung des Sonnenstandes
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ('IPSSHADOWING_LATITUDE', IPSTWILIGHT_LATITUDE);

	/**
	* Angabe des Längengrades zur Berechnung des Sonnenstandes
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	*/
	define ('IPSSHADOWING_LONGITUDE', IPSTWILIGHT_LONGITUDE);

	/**
	 * Ausrichtung des Gebäudes
	 * 
	 * Dieser Wert spezifiziert die Abweichung von der Ausrichtung des Gebäudes Richtung Süden in Grad.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ('IPSSHADOWING_BUILDINGORIENTATION',   0);
	
	/**
	 * Verhältnis der Gebäudewände
	 *
	 * Mit diesem Parameter kann das Verhältnis der Länge der Gebäudewände in der Grafik verändert werden. 
	 *
	 * 0 bedeutet dass alle Gebäudewände gleich lang sind, bei positiven Werten wird die südliche Seite des Gebäudes
	 * breiter und umgekehrt.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ('IPSSHADOWING_BUILDINGRELATION',      0);
	

	/**
	 * Definiert die Anzahl der Meldungen, die im Applikation Logging Window angezeigt werden.
	 *
	 * Dieser Parameter kann jederzeit geändert werden, keine Installation erforderlich.
	 */
	define ("IPSSHADOWING_LOGMESSAGECOUNT",				30);

	/**
	 *
	 * Definition der Beschattungs Elemente
	 * Die Konfiguration erfolgt in Form eines Arrays, für jedes Beschattungs Device wird ein Eintrag im Array erzeugt.
	 * 
	 * Die Eigenschaft c_Property_ShadowingType spezifiziert den Type der Beschattung, folgende Typen stehen zur Auswahl:
	 * - c_ShadowingType_Jalousie, Ansteuerung einer Jalousie, es werden noch zusätzliche Properties ausgewertet, um die Lamellen in eine bestimmte Position zu bringen
	 * - c_ShadowingType_Shutter, Ansteuerung eines normalen Rollos
	 * - c_ShadowingType_Marquees, Ansteuerung einer Markise
	 *
	 * Der Eintrag "c_Property_Name" spezifiziert den Namen des Beschattungs Elements, der im WebFront und in den Log's angezeigt
	 * wird.
	 *
	 * Der Eintrag "c_Property_Component" spezifiziert die Hardware, es kann jeder "Shutter" Component String Konstruktor
	 * angegeben werden. Detailiertere Informationen kann man auch im core Modul IPSComponent finden.
	 *
	 * Mit den Properties c_Property_TimeOpening,  c_Property_TimeClosing, c_Property_TimeDimoutUp, c_Property_TimeDimoutDown, c_Property_TimePause 
	 * werden die Fahrzeiten spezifiziert. c_Property_TimeDimoutUp und c_Property_TimeDimoutDown werden nur bei Jalousien ausgewertet, um die Lamellen 
	 * in die Verdunkelungs- bzw. Beschatttungsposition zu bringen.
	 *
	 * Mit c_Property_TempSensorIndoor ist die Einbindung eines Innentemperatursensors für das Beschattungselement möglich. Verlinkung erfolgt durch 
	 * Angabe des Pfades oder direkt durch die ID der Temperatur Variable.
	 *
	 * Beispiel:
	 * @code
        function get_ShadowingConfiguration() {
          return array(
            c_ShadowingDevice_1  =>  array(
               c_Property_ShadowingType     => c_ShadowingType_Jalousie,
               c_Property_Name              => 'Küche',
               c_Property_Component         => 'IPSComponentShutter_Dummy,12345',
               c_Property_TimeOpening       => 35,
               c_Property_TimeClosing       => 35,
               c_Property_TimeDimoutUp      => 2,
               c_Property_TimeDimoutDown    => 3,
               c_Property_TimePause         => 1,
               c_Property_TempSensorIndoor  => '',
             ));
        }
	 * @endcocde
	 *
	 * @return string Liefert Array mit Beschattungs Elementen
	 */
	function get_ShadowingConfiguration() {
		return array(
			c_ShadowingDevice_1 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Arbeitszimmer 1',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,42253',
				c_Property_TimeOpening		=> 	18,
				c_Property_TimeClosing		=> 	18,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '23070',
				),
			c_ShadowingDevice_2 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Arbeitszimmer 2',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,59958',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	28,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_3 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Gäste-WC',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,14470',
				c_Property_TimeOpening		=> 	18,
				c_Property_TimeClosing		=> 	18,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_4 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Ankleide',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,19903',
				c_Property_TimeOpening		=> 	19,
				c_Property_TimeClosing		=> 	19,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_5 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Küche',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,57377',
				c_Property_TimeOpening		=> 	26,
				c_Property_TimeClosing		=> 	28,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_6 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Terasse links',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,21125',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	26,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_7 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Terasse rechts',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,50739',
				c_Property_TimeOpening		=> 	30,
				c_Property_TimeClosing		=> 	27,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_8 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Couchecke',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,12139',
				c_Property_TimeOpening		=> 	16,
				c_Property_TimeClosing		=> 	16,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_9 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Bad',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,49312',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	26,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_10 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Zimmer Max',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,34416',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	28,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_11 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Zimmer Alina',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,44377',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	28,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				),
			c_ShadowingDevice_12 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Schlafzimmer',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,34322',
				c_Property_TimeOpening		=> 	28,
				c_Property_TimeClosing		=> 	28,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '23070',
				)
	   );
	}
	/** @}*/
?>

Wie man sieht sind das alles Homematic-Rollladen-Aktoren die über einen Homematic-Lan-Adapter angesteuert werden.
Ressourcenseitig gibt es eigentlich keine Probleme. Das Ganze läuft auf einer Zotac Z-Box Plus Nano XS mit 2GB RAM und 1.6GHz Dual Core Prozessor. Außer IPSymcon läuft da nix weiter drauf.

Eine Verständnisfrage nochmal zu den Flags „Automatik“ und „Manuell“. Momentan ist es so, dass manuell anscheinend die höhere Priorität hat. Im Normalfall soll alles auf „Automatik“ laufen, also nachts zum Beispiel die Rollläden herunter fahren. Wenn jemand nun einen Rolladen mit dem Wandtaster manuell verstellt wird das „manuell“ Flag gesetzt, aber gleichzeitig bleibt „Automatik“ aktiv. Dennoch wird keine Automatik, also keine Steuerung nach Profilen für diesen Rollladen ausgeführt bis letztendlich um Mitternacht das „Manuell“-Flag gelöscht wird. Dann fahren alle Rolläden in die ANchstellung und ich bin halt munter :-). Warum bleibt dann aber „Automatik“ bei manueller Bedienung am Wandtaster auf True, wenn doch gar keine Automatik mehr aktiv zu sein scheint?