IPSShadowing - eine Beschattungssteuerung

Hi,

Die Automatik wird ja bei einer manuellen Übersteuerung nur für den aktuellen Tag deaktiviert. Im WebFront wird das durch die Anzeige „Automatik/Manuell“ visualisiert, dieses kann man per Hand, per Script oder es wird um Mitternacht zurückgesetzt.
Ohne das Flag würde ja der Automatik Timer nach 5 Minuten die manuelle Steuerung wieder zurücksetzen (schlecht wenn man grad in den Garten gegangen ist…).
Werde das Rücksetzen in den nächsten Wochen so ändern, dass es zu den Tag/Nach Wechsel gemacht wird.

Hab heute auch noch ein kleines Script geschrieben, dass Fehler in den Scenarios korrigiert - diese können entstehen, wenn man nachträglich noch den Beschattungstype ändert.


	IPSUtils_Include ("IPSShadowing.inc.php", "IPSLibrary::app::modules::IPSShadowing");
	$MovementIds = array(
		c_MovementId_Space      	=> c_Movement_Space,
		c_MovementId_NoAction		=> c_Movement_NoAction,
		c_MovementId_Up      		=> c_Movement_Up,
		c_MovementId_Down      		=> c_Movement_Down,
		c_MovementId_Stop      		=> c_Movement_Stop,
		c_MovementId_90      		=> c_Movement_90,
		c_MovementId_75      		=> c_Movement_75,
		c_MovementId_50      		=> c_Movement_50,
		c_MovementId_Closed      	=> c_Movement_Closed,
		c_MovementId_Opened      	=> c_Movement_Opened,
		c_MovementId_Dimout      	=> c_Movement_Dimout,
		c_MovementId_Shadowing      	=> c_Movement_Shadowing,
		c_MovementId_MovedOut      => c_Movement_MovedOut,
		c_MovementId_MovedIn      	=> c_Movement_MovedIn,
		c_MovementId_MovingOut     => c_Movement_MovingOut,
		c_MovementId_MovingIn      => c_Movement_MovingIn,
);
	$categoryIdDevices   = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Devices');
	$categoryIdScenarios = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSShadowing.Scenarios');
	$scenarios           = IPS_GetChildrenIDs($categoryIdScenarios);
	$deviceConfig             = get_ShadowingConfiguration();
	foreach ($scenarios as $scenarioId) {
	   echo 'Found Scenario='.IPS_GetName($scenarioId).PHP_EOL;
		foreach ($deviceConfig as $deviceIdent=>$deviceData) {
  			$controlId = @IPS_GetObjectIDByIdent($deviceIdent, $scenarioId);
  			$movementId = GetValue($controlId);
  			$invalid = false;
  			switch ($deviceData[c_Property_ShadowingType]) {
				case c_ShadowingType_Jalousie:
				   if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_Shadowing and $movementId<>c_MovementId_Dimout
					   and $movementId<>c_MovementId_Opened and $movementId<>c_MovementId_Stop) {
							$invalid = true;
					   }
				   break;
				case c_ShadowingType_Shutter:
				   if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_Closed and $movementId<>c_MovementId_90
                  and $movementId<>c_MovementId_50 and $movementId<>c_MovementId_50
					   and $movementId<>c_MovementId_Opened and $movementId<>c_MovementId_Stop) {
							$invalid = true;
					   }
				   break;
				case c_ShadowingType_Marquees:
				   if ($movementId<>c_MovementId_NoAction and $movementId<>c_MovementId_MovedOut and $movementId<>c_MovementId_MovedIn
					    and $movementId<>c_MovementId_75 and $movementId<>c_MovementId_50 and $movementId<>c_MovementId_Stop) {
							$invalid = true;
					   }
				   break;
  			}
  			if ($invalid) {
  				echo '   INVALID --> '.IPS_GetName($controlId).'='.$MovementIds[$movementId].PHP_EOL;
  				echo '   --> Repair, Set "NoAction"'.PHP_EOL;
  				SetValue($controlId, c_MovementId_NoAction);
  			} else {
  				echo '   OK --> '.IPS_GetName($controlId).'='.$MovementIds[$movementId].PHP_EOL;
  			}

		}
	}

Gib bitte Bescheid, ob sich Dein Problem dadurch gelöst hat!

Hallo Andreas.
Sorry bin erst heute dazu gekommen, dass Skript zu testen. Hat aber funktioniert.
Zwar war mein Szenario erst mal deaktiviert, aber das hab ich dann neu erstellt und jetzt läuft es.
Kann man das mit dem Reset der Automatik nicht frei parametrierbar machen? Da kann sich das jeder so anpassen, wie er es möchte. So kann sich keiner mehr beschweren. :wink: Oder man macht es halt selbst per Script.

Manuelles Rücksetzen ist natürliches jetzt schon möglich, hab das auch nochmals im WIKI entsprechend ergänzt.
Erweiterte Konfigurations Möglichkeit kommt auch noch in den nächsten Wochen…

Ich habe das Problem, dass meine Rollladen nicht mit dem in IPSLibrary integriertem IPSShadowing fahren.
Mit dem IPSShadowing alter Version habe ich kein Problem.

Mit der Einstellung für: c_Property_Component => ‚IPSComponentShutter_Dummy,12345‘,*’

simuliert die Anlage die Bewegung der Rollladen einwandfrei.

Konfiguriere ich aber: c_Property_Component => ‚IPSComponentShutter_Enocean,36164‘,

für meine EnoceanAktoren bewegt sich nichts. Auch im Log ist keine Fehlermeldung zu finden.

Hier ein Ausschnitt aus der alten IPSShadowing Konfiguration:

„Büro“ => array(
c_Property_ShadowingType => c_ShadowingType_Shutter,
c_Property_DeviceType => c_DeviceType_Enocean,
c_Property_DevicePath => ‚Beschattung.Aktor Büro‘,
c_Property_TimeOpening => 15,
c_Property_TimeClosing => 15,
c_Property_TimePause => 1,
),

Hier die aktuelle Konfiguration des in die IPSLibrary integrierten IPSShadowing:

c_ShadowingDevice_1 => array(
c_Property_ShadowingType => c_ShadowingType_Shutter,
c_Property_Name => ‚Büro‘,
c_Property_Component => ‚IPSComponentShutter_Enocean,36164‘,
c_Property_TimeOpening => 60,
c_Property_TimeClosing => 60,
c_Property_TimePause => 1,
c_Property_TempSensorIndoor => ‚‘,
),

Was kann hier falsch sein?

Hi,

bei der Enocan Ansteuerung war noch ein Fehler drinnen (in IPSComponentShutter_Enocean hat auf Zeile 108 eine „);“ gefehlt);

Mach nochmals ein Update von IPSComponent (Development Repository) und versuchs nochmals…

Hi,

ich habe soweit alle benötigten Module zum Betrieb der Beschattungssteuerung wie beschrieben installiert, bekomme aber dennoch Fehler und kann die Rollladen nicht ansteuern. Ich benutze die Homematic Komponenten und bekomme eine Fehlermeldung beim Ansteuern der Rollladen. Fehlermeldung siehe Anhang.

Wer kann mir helfen bzw. einen Tipp geben?

Bin für jede Hilfe dankbar.

Grüße
Timur

Leider stoße ich bei der Installation von IPSShadowing auf den folgenden Fehler:


Der Part nach: Abort Processing during Error: Undefined index
zeigt nach jeder Ausführung eine andere Jalousie an.

Wohl nicht ganz :wink:

Sollte wohl ‚IPSComponentShutter_Homematic,12345‘ statt ‚IPSComponentShutter_Bad_gross,12345‘ heissen. 12345 durch die ID der jeweiligen Instanz:K1 ersetzen.

Sonst mal Deine config posten.

Gruß
Bruno

Hallo zusammen,

erst mal ein Herzliches Dankeschön für dieses sehr tolle Script! :wink:

Ich habe mir jetzt die 53 Seiten auch quer durchgelesen und habe danach das Wiki durchgelesen. Leider sind mir noch zwei Sachen nicht ganz klar, das spiegelt sich gerade auch im Ergebnis des Scriptes wieder. Der Download hat funktioniert und ich habe auch meine 8 Homematic Rolladen im Konfig File eingetragen. Nur leider können die jeweiligen Klassen von den Homematic Devices nicht gefunden werden wenn ich im Webinterface eine Rollade auswähle und sage herunterfahren:

Dabei habe ich in der Config genau die ID des Devices angegeben:

device.PNG

Was ich nicht verstehe ist die Aussage im Wiki im Bereich „Voraussetzungen“. Dort steht:

Die Instanzen zur Ansteuerung der Beschattungselemente müssen bereits vorhanden sein (zB Homematic Shutter Instanz).

Aber was ist den bitte eine

Homematic Shutter Instanz
brauche ich das Shutter Modul oder kann ich ein Homematic Device direkt angeben?

Gruß

fussi24

ID Instanz-K1 des Rolladen Aktors, gerade geschrieben. Schau mal einen Post drüber :wink:

Hallo Powerfreddy,

ich wusste das ich es irgendwo in den 53 Seiten gelesen hatte, aber nicht mehr wo. Dabei war es wirklich so nah! :wink:

Wenn ich die Homematic Shuter Funktion vor die ID schreibe kann ich die Rolladen manuell bewegen!. Aber ich bekomme immer noch zwei Fehlermeldungen:

Was mich wundert ist, dass das Script immer wieder die Fehlermeldungen schreibt und teilweise die Homematic Devices nicht findet

Das anhalten und in die andere Richtung funktioniert auch nicht und ich bekomme diese Fehlermeldungen:

Da sieht man, dass das Script dann aufeinmal die Klasse (Homematic ID) nicht mehr findet, obwohl ich vorher das herunterfahren erfolgreich starten konnte.

Bringt momentan immer noch Fehlermeldungen, woher weiss ich nicht. Habs auch gestern erst installiert und muss noch testen. Andreas wird das auch lesen, sicher kann er mehr dazu sagen.

aufeinmal die Klasse (Homematic ID) nicht mehr findet,

Vielleicht nochmal komplett löschen und neu installieren, vielleicht sind noch alte Ereignisse drin. Hast Du die neue Version über den neuen BaseLoader ?

Gruß
Bruno

Ich habe es gestern komplett neuaufgesetzt.

Wie bekomme ich den die neue Version des BaseLoaders? Einfach das Script hierzu nochmals aufrufen oder ert alles (von Hand) löschen?

@Fussi24,gantep,Kiste
Postet doch mal Euro Konfiguration, genauer gesagt den Inhalt der Funktion „get_ShadowingConfiguration“ des Files IPSShadowing_Configuration.inc.php

So habe ich meine HomeMatic Aktoren in der IPSShadowing Config angelegt.
gt.

function get_ShadowingConfiguration() {
return array(
c_ShadowingDevice_1 => array(
c_Property_ShadowingType => c_ShadowingType_Jalousie,
c_Property_Name => ‚Wohnzimmer Links‘,
c_Property_Component => ‚IPSComponentShutter_Homematic,28876‘,
c_Property_TimeOpening => 55,
c_Property_TimeClosing => 55,
c_Property_TimeDimoutUp => 2,
c_Property_TimeDimoutDown => 3,
c_Property_TimePause => 1,
c_Property_TempSensorIndoor => ‚‘,
),

    c_ShadowingDevice_2  	=&gt;	array(
  	 c_Property_ShadowingType     =&gt; c_ShadowingType_Jalousie,
           c_Property_Name              =&gt; 'Wohnzimmer Rechts',
           c_Property_Component         =&gt; 'IPSComponentShutter,38318',
           c_Property_TimeOpening       =&gt; 55,
           c_Property_TimeClosing       =&gt; 55,
           c_Property_TimeDimoutUp      =&gt; 2,
           c_Property_TimeDimoutDown    =&gt; 3,
           c_Property_TimePause         =&gt; 1,
           c_Property_TempSensorIndoor  =&gt; '',
  		),

IPSComponentShutter,38318’

–> wie wärs mit

IPSComponentShutter_Homematic,38318’

Hi,
Hatte das mal Testweise geândert. Ich habe aber alles als IPSComponentShutter_Homematic angelegt.
Leider ohne Erfolg die Fehlermeldung bleibt.

Kannst Du nochmals alles posten, die Fehlermeldung in Deinem erstem Post bezieht sicht auf ein Device 6, Deine Config hat aber nur 2 Devices!
Auch ist in Deinem 1. Post mit dem Attachment was nicht Ordnung?

Hallo Andreas,

anbei der Inhalt der Funktion:

function get_ShadowingConfiguration() {
		return array(
			c_ShadowingDevice_1 =>	array(
				c_Property_ShadowingType	=> c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Gaeste WC',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,56480',
				c_Property_TimeOpening		=> 18,
				c_Property_TimeClosing		=> 18,
				c_Property_TimePause		=> 1,
				c_Property_TempSensorIndoor	=> '39719',
				),
			c_ShadowingDevice_2 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Kueche',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,30806',
				c_Property_TimeOpening		=> 	17,
				c_Property_TimeClosing		=> 	17,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '39719',
				),
			c_ShadowingDevice_3 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Wohnzimmer',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,14066',
				c_Property_TimeOpening		=> 	18,
				c_Property_TimeClosing		=> 	18,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
			c_ShadowingDevice_4 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Esszimmer',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,34915',
				c_Property_TimeOpening		=> 	25,
				c_Property_TimeClosing		=> 	24,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
			c_ShadowingDevice_5 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Arbeitszimmer',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,54992',
				c_Property_TimeOpening		=> 	25,
				c_Property_TimeClosing		=> 	24,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
			c_ShadowingDevice_6 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Ankleide',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,39442',
				c_Property_TimeOpening		=> 	25,
				c_Property_TimeClosing		=> 	23,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
			c_ShadowingDevice_7 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Schlafzimmer',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,57047',
				c_Property_TimeOpening		=> 	25,
				c_Property_TimeClosing		=> 	24,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
			c_ShadowingDevice_8 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Rollade Bad',
				c_Property_Component		=> 'IPSComponentShutter_Homematic,27936',
				c_Property_TimeOpening		=> 	17,
				c_Property_TimeClosing		=> 	17,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor => '39719',
				),
	   );

Ich hatte noch zwei Syntax Fehler drin, diese sind nun raus. Nun sehe ich im Log, dass der interne Temperaturfühler (ID 39719) nicht gefunden wird.

Des Weiteren lässt sich die Rollade in der Küche nicht ansteuern, aber selbst mit einem Schalter habe ich ein Problem. Ich muss das Gerät immer zweifach mit dem Schalter ansteuern damit es funktioniert. Vielleicht ist ja die Hardware defekt?!

Hallo Andreas,

jetzt ist mir noch etwas aufgefallen. Wenn ich den Knopf „Alle Öffnen“ benutze. Fahren zwar alle Rolladen (bis auf die Küche) hoch, es wird aber folgende Fehlermeldung generiert:

Gruß

fussi24