IPSShadowing - eine Beschattungssteuerung

Gerne :slight_smile:

Bsp.

Rollade runter:

EIB_Switch(51369 /*[Erdgeschoss\Wohnzimmer\Rollade 4 Wohnen Kamin]*/, true);

Rollade hoch:

EIB_Switch(51369 /*[Erdgeschoss\Wohnzimmer\Rollade 4 Wohnen Kamin]*/, false);

Rollade auf Beschattung setzten

<?

EIB_Switch(51369 /*[Erdgeschoss\Wohnzimmer\Rollade 4 Wohnen Kamin]*/, true); // Rollade runter

IPS_Sleep(12000); // Wartezeit in Millisekunden

EIB_Switch(28731 /*[Erdgeschoss\Wohnzimmer\Rollade 4 Wohnen Kamin Stopp]*/, false); // Rollade Stopp
?>

Das heisst zu einer Rollade gibt es zwei Instancen. in diesem Fall 51369 für Auf und Ab und 28731 für den Stopp Befehl.

Brauchst Du noch mehr Info´s??

Grüsse

Daniel

Funktioniert die Beschattung über Sonnenstand und Temperatur jetzt auch mit Rolläden ?

@muckel

ja, sollte sie - Du kannst über die Programme einstellen, dass die Beschattung auf 75%, 90% oder geschlossen werden sobald das Temperatur Profil anspricht.

@dboom

Hab mal eine EIB Komponente programmiert, die auch 2 Relaise unterstützt.


c_Property_Component => 'IPSComponentShutter_EIB,12345,67890,true',  

12345 ist die Instanze ID des Relaise zum Steuern des Moters
67890 ist die Instanze ID des Relaise zum Steuern der Richtung
mit dem letzten Parameter kannst Du noch die Richtung umkehren

bei Dir also vermutlich:


IPSComponentShutter_EIB,28731,51369,false

Update von IPSComponent nicht vergessen…

Grumpf… installation IPSShadowing

Abort Processing during Error: array_key_exists() expects parameter 2 to be array, null given
   Error in Script C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSShadowing\IPSShadowing_ProfileManager.class.php on Line 124

ich komme da net weiter

Kommt der Fehler bei jedem Installations Versuch?
Hattest Du vorher einen anderen Fehler?
Versuch mal alle Profile aus Program.IPSLibrary.data.modules.IPSShadowing.profiles zu löschen

Wenn das auch nichts nützt muss ich die Installation auch noch mal von 0 auf Testen. Zwischenzeitlich kannst Du die Zeile „$profileManager->CorrectDeletedDeviceProfiles()“ mal auskommentieren, Du mußt dadurch aber alle Profile in den Elementen manuell setzen…

So einfach nochmal installiert, und siehe da … man ist das ein geiles Teil geworden.

RIESEN RESPEKT und DANKE ! :loveips:

So erste Euphorie vorbei…

In Wiki such ich mir nen Wolf.

Ein Rolladen auf Manuell setzten per Skript, bzw wieder auf Automatik. Ging früher mit ChangeSetting blablabla.

Hi,

Manuelle Ansteuerung der Automatik geht folgendermaßen (siehe auch IPSShadowing_ChangeSettings.ips.php):


	IPSUtils_Include ("IPSShadowing.inc.php", "IPSLibrary::app::modules::IPSShadowing");
	$device = new IPSShadowing_Device(12345);
	$device->ChangeSetting(67890, true);

12345 ist die ID des Beschattungselementes, zu finden unter „Program.IPSLibrary.data.modules.IPSShadowing.Devices“
67890 ist die ID der Variable mit Namen „Automatic“

Analog kann man auch andere Parameter des Beschattungselementes ändern (Profile, Programme, …).

Hallo zusammen,
ich habe hier ein Problem:

Wenn ich versuche einen Rolladen zu bewegen kommt folgende Fehlermeldung:

Fatal error: Call to undefined function IPSUtils_Include() in [Libary\IPSLibary\app\modules\IPSShadowing\IPSShadowing] on line 46

Ich komm nicht weiter.

Es sind auch mehrere Skripts rot markiert die alle die selbe Fehlermeldung bringen.
Ich hab alles nach WIKI installiert und hat alles super geklappt, leider lässt er mich nichts einstellen.

Ich hoffe Ihr könnt mir helfen.
Danke

Sorry, aber ich verstehs einfach nicht :confused:

Ich hab für jeden Befehl für jedes Fenster ein unterschiedliches Script.
Also insgesamt 12 Fenster und jeweils 3 unterschiedliche Scripts (für rauf, runter, stop), in summe also 36 unterschiedliche Scripts, die jeweils auf das gleiche virtuelle port die unterschiedlichen befehle sendet…
Ich hab aber null Plan, wie ich das einbinden kann…

IPSUtils_Include() in [Libary\IPSLibary\app\modules\IPSShadowing\IPSShadowing

Mach doch mal einige Screenshots von Deiner IPS-Structure, irgendwas kommt mir da komisch vor…

Poste auch mal Deinen Inhalt der Datei __autoload.php

@gdfde

ok, war vielleicht etwas schlecht formuliert, hier mal ein Ansatz von einer der zahlreichen Möglichkeiten.

Mach Dir eine eigene Komponente:


<?
	IPSUtils_Include ('IPSComponentShutter.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentShutter');

	class IPSComponentShutter_gdfde extends IPSComponentShutter {

		private $instanceId;
		private $port

		public function __construct($instanceId) {
			$this->instanceId     = IPSUtil_ObjectIDByPath($instanceId);
			$this->port           = 11111;
		}

		public function HandleEvent($variable, $value, IPSModuleShutter $module){
		}

		public function GetComponentParams() {
			return get_class($this).','.$this->instanceId;
		}

		public function MoveUp(){
			switch ($this->instanceId) {
				case 1: /*Fenster 1*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				case 2: /*Fenster 2*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				default:
			}  
		}

		public function MoveDown(){
			switch ($this->instanceId) {
				case 1: /*Fenster 1*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				case 2: /*Fenster 2*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				default:
			}  
		}

		public function Stop() {
			switch ($this->instanceId) {
				case 1: /*Fenster 1*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				case 2: /*Fenster 2*/
					COMPort_SendText($this->port /*[Serial Port]*/, chr(0x7F).chr(0xF2).chr(0xFA)....);  
					break;
				default:
			}  
		}

	}

?>

und benütze sie dann in der Beschattungssteuerung


c_Property_Component => 'IPSComponentShutter_gdfde,1',  
...
c_Property_Component => 'IPSComponentShutter_gdfde,2',  

Ich habs hinbekommen :smiley:

Problem war wohl das ich das aktuelle IPS Update noch nicht Installiert hatte.
Nach dem Update funktioniert alles tadelllos.

Vielen Dank nochmal. :loveips:

Hallo Brownson, bei mir würde es wohl reichen, die aktuelle Behanglänge = Position zu synchronisieren (bidirectional).

Daüf nehm ich die Position der jew. Einheit.

Auch bei mir mit EIB ist 0% Offen und 100% geschlossen !

Super, vielen vielen vielen Dank, jetzt habs sogar ich verstanden :slight_smile:

Ich hab jetzt eine component angelegt und das IPSshadowing neu instaliert.
leider funktionierts nicht, wenn ich einen rolladen ansteuern will, kommt folgende fehlermeldung:

@gdfde
Wo befindet sich Deine Ansteuerungsdatei (muß ebenfalls unter …\IPSComponent\IPSComponentShutter\ liegen)
Welchen Namen hat die Datei (IPSComponentShutter_Somfy.class.php müßte sie heißen).

Neuinstallation ist bei diesen Dingen nicht erforderlich…

@djtark

ich brauch Name der Variablen, die Synchronisiert werden soll + Wertebereich der Variablen!

Hi Andreas,

lag natürlich daran, dass ich die Dateinamen und Pfade nicht ausgewählt habe, sondern IPS vorgeben liess.

So weit so gut, jetzt kommt aber dieser Fehler:

Die IPSComponentShutter_Somfy.class.php sieht so aus:

<?
	/**@addtogroup ipscomponent
	 * @{
	 *
 	 *
	 * @file          IPSComponentShutter_Homematic.class.php
	 * @author        Andreas Brauneis
	 *
	 *
	 */

   /**
    * @class IPSComponentShutter_Homematic
    *
    * Definiert ein IPSComponentShutter_Homematic Object, das ein IPSComponentShutter Object f¸r Homematic implementiert.
    *
    * @author Andreas Brauneis
    * @version
    * Version 2.50.1, 31.01.2012<br/>
    */

	IPSUtils_Include ('IPSComponentShutter.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentShutter');

	class IPSComponentShutter_Somfy extends IPSComponentShutter {

		private $instanceId;
		private $port;

		/**
		 * @public
		 *
		 * Initialisierung eines IPSComponentShutter_Homematic Objektes
		 *
		 * @param integer $instanceId InstanceId des Homematic Devices
		 */


		public function __construct($instanceId) {
			$this->instanceId = IPSUtil_ObjectIDByPath($instanceId);
			$this->port       = 15437;
		}

		/**
		 * @public
		 *
		 * Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event
		 * an das entsprechende Module zu leiten.
		 *
		 * @param integer $variable ID der auslˆsenden Variable
		 * @param string $value Wert der Variable
		 * @param IPSModuleShutter $module Module Object an das das aufgetretene Event weitergeleitet werden soll
		 */
		public function HandleEvent($variable, $value, IPSModuleShutter $module){
		}

		/**
		 * @public
		 *
		 * Funktion liefert String IPSComponent Constructor String.
		 * String kann dazu ben¸tzt werden, das Object mit der IPSComponent::CreateObjectByParams
		 * wieder neu zu erzeugen.
		 *
		 * @return string Parameter String des IPSComponent Object
		 */
		public function GetComponentParams() {
			return get_class($this).','.$this->instanceId;
		}

		/**
		 * @public
		 *
		 * Hinauffahren der Beschattung
		 */
		public function MoveUp(){
			switch ($this->instanceId) {
				case 1: /*Kueche*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF6).chr(0xFE).chr(0x05).chr(0xDA));
				   break;
				case 2: /*WC EG*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF3).chr(0xFE).chr(0x05).chr(0xD7));
				   break;
				default:
			}
		}

		/**
		 * @public
		 *
		 * Hinunterfahren der Beschattung
		 */
		public function MoveDown(){
			switch ($this->instanceId) {
				case 1: /*Kueche*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF6).chr(0xFD).chr(0x05).chr(0xD9));
				   break;
				case 2: /*WC EG*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF3).chr(0xFD).chr(0x05).chr(0xD6));
				   break;
				default:
			}
		}

		/**
		 * @public
		 *
		 * Stop
		 */
		public function Stop() {
			switch ($this->instanceId) {
				case 1: /*Kueche*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF6).chr(0xFC).chr(0x05).chr(0xD8));
				   break;
				case 2: /*WC EG*/
				   COMPort_SendText($this->port, chr(0x7F).chr(0xF2).chr(0xFA).chr(0x0E).chr(0x73).chr(0xFA).chr(0x00).chr(0x00).chr(0x00).chr(0xF3).chr(0xFC).chr(0x05).chr(0xD5));
				   break;
				default:
		}
	}

	/** @}*/
?>