IPSShadowing - eine Beschattungssteuerung

Hallo,

Auf die Schnelle habe ich bei einem HM-Aktor die Anschlüsse für auf und ab vertauscht, und der Aktor ist nicht gerade gut zugänglich. Im Verzeichnis „D:\IP-Symcon\scripts\IPSLibrary\app\core\IPSComponent\IPSComponentShutter“ habe ich eine neue *IPSComponentShutter_HomematicReverse.class.php angelegt, den Inhalt der regulären Homematic.class.php genommen und in Zeile 37 $reverseControl=true geändert.

Ich bekomme immer die Fehlermeldung

Error: Class ‚IPSComponentShutter_HomematicReverse‘ not found.

muss ich die Klasse noch irgendwo registrieren?
nette Grüße
Sven

Hab´s schon - geht einfacher in der configuration - nach der Aktor-ID noch „true“ als Parameter…

Guten Abend zusammen, ich möchte einen Fensterkontakt einbinden da ich gerne beim öffnen der Balkontür den Rollo automatisch hoch fahren und beim schließen die Automatik wieder setzten will.
Kann mir da jemand eine Hilfe geben? Muss ich das über ein Skript lösen? Wenn ja wie kann ich die Automatik beim schließen der Tür wieder setzten?
Danke schon mal für die Hilfe.

Guten Abend, das obige Problem habe ich mittlerweile erledigt.

Allerdings habe ich seit heute eine Markise und mir erschließt sich das Programm für die Anwesenheit nicht?
Im Wiki finde ich keine genaueren Infos darüber…Was genau macht das Programm?
In der Config habe ich eine Boolean angegeben die den Wert true liefert bei Anwesenheit aber es tut sich nix wenn ich im Programm z.B. auf 50% einstelle.

Kann mich bitte hier jemand Aufklären?
Vielen Dank

Halo,
ich habe eine Frage zu den Temperaturprofilen für die Beschattung.
Kann ich die Werte dafür in den Variablenprofilen anpassen, damit die Steuerung andere Werte verwendet. Ich würde gerne den Wert für innen kleiner einstellen können, also nicht erst bei innen >=22° sondern schon bei 21°

Ein Nachteil ist vermutlich, dass das Variablenprofil bei einer Aktualisierung überschrieben wird, oder?

Gruß
Christian

ja, Anpassung des Variabenprofiles ist die einzige Möglichkeit und ein Update überschreibt Dir diese Änderungen wieder…

Andreas, magst Du nicht evtl. in einem der kommenden Updates eine größere Temp-Range mitliefern ?

Ich wär schwer begeistert davon ! Wohl nicht nur ich :slight_smile:

Da würde ich mich anschließen.
Vor allem nach unten ist es zu knapp gefasst.

Gruß
Christian

Hallo Andreas,

ich hätte noch einen Change Request.
Als es die Tage so heiß war, habe ich festgestellt, dass die Rollläden morgens bereits um kurz nach 7 auf 75% hoch gefahren sind (Temperaturprogramm), obwohl diese zu 100% geschlossen waren. Aus meiner Sicht macht es keinen Sinn, dass das Temperaturprogramm an dieser Stelle aktiv wird. Die Rollläden dürfen sich nur bewegen, wenn die aktuelle Position < Temperatur-Position ist.
Ich könnte das jetzt natürlich übersteuern, fände es aber besser, wenn es in den Standard mit rein käme.

Grüße

jevico

Hallo,

ich möchte ebenfalls gerne einen Wunsch äußern:

Drei meiner Rohrmotoren haben den Geist aufgegeben. Nun habe ich diese gegen neue Motoren ausgetauscht. Leider sind die original verbauten Motoren nicht mehr lieferbar, sondern nur noch die Folgemodelle. Diese haben jetzt aber einen Softanlauf, d.h. die ersten 10cm fährt der Motor langsamer als den restlichen Weg. Somit passt die prozentuale Zuordnung überhaupt nicht zur rellen Position. Wenn ich nun dies durch „Manipulation“ der Fahrzeit ausgleiche, fährt der Motor, je nachdem ob er von oben kommt oder von unten, bei gleicher prozentualer Einstellung eine völlig andere Position an.

Wäre es möglich, zusätzlich zur momentanen Berechnung der Fahrzeit, noch eine Möglichkeit integrieren, die Fahrzeit der prozentualen Position zuzuordenen. Zum Beispiel:


Position_25% = 20 Sekunden
Position_50% = 34 Sekunden
Position_75% = 42 Sekunden

Die Berechnung wäre dann:


aktuelle Position = 75 %
Zielposition = 25 %
somit:
42 Sekunden - 20 Sekunden = 22 Sekunden Fahrzeit nach oben

Diese Vorgehensweise könnte auch die Unterschiede des Aufrolldurchmessers eines Rolladens umgehen.

Gruß Proxima

+1 von mir.

Löst leider nicht alle Probleme - fährt man zB von 0 auf 100%, dann ist die Positionanzeige während der Fahrt noch immer falsch.

Aber der Ansatz ist schon mal nicht so schlecht - muss nochmals drüber schlafen, eine gute Lösung ist aber leider relativ aufwendig …

Moin !

da ich meine Rolladen schon prozentgenau anfahren kann (über LCN-Komponenten) - gibt es eine Möglichkeit, diese Methode in dieses tolle Modul einzubauen ? Wahrscheinlich müsste man dazu ja eine Funktion zum Anfahren wohl ändern - aber das finde ich nicht… oder strickt man das bei den custom-Funktionen rein ? (BeforeActivateShutter)

Ich hätte da noch mal Frage :o

Fahre ich häufiger den Rolladen rauf und runter, so stimmen die Positionen nicht mehr so richtig - meistens ergeben sich Abweichungen nach oben: D.h. die Visu denkt, der Rolladen ist höher als er eigentlich ist.

Das ist nicht so schlimm - bis man den Rolladen öffnen will: Führt man dann das Hochfahren aus, dann bleibt der Rolalden manchmal 10-20cm unten.

Kann man das Script dahingehend ändern, dass das Hochfahren zur Position 0 (und nur zu der Position) ein paar Sekunden länger dauert ?

Hallo Leute,

zuerst einmal vielen Dank an alle, die ihre wertvolle Freizeit in die Entwicklung der tollen IPS-Module stecken.

Nun aber zu meinem Thema.
Wir haben neu gebaut und sämmtliche Fenster mit Raffstores versehen.
Die Ansteuerung erfolgt über Homematic-Jalousieaktoren (wired).

Nun habe ich mich soweit durchgewurschtelt um das IPSShadowing-Modul zu nutzen.

Hierbei ergeben sich nun aber noch folgende Probleme wo ich Eure Hilfe benötige:

  1. Die Stellung der Lamellen bei der Beschattung ist, egal was ich bei „c_Property_TimeDimoutUp“ einstelle, immer wagerecht. (wenn ich von „Abdunkeln“ auf „Beschattung“ gehe, teilweise sogar negativ). Egal was ich bei c_Property_TimeDimoutUp eingebe.
    Ist das ein Float-Wert oder kann ich hier nur auf eine Sekunde genau einstellen?

  2. sehe ich das richtig, dass ich bei jeglicher Änderung an der IPSShadowing_Configuration und anschließender „Installation“ immer auch alle Masken wieder neu aufbauen muss weil sich die „baseID´s“ ändern?

Vielen Dank schon mal an alle
Gruß Jens

Hallo,

ich habe da auch noch mal eine Frage. Ich nutze Digitalstrom Aktoren für meine Rollläden.

Um im Sinne von Digitalstrom zu bleiben, müsste ich meine Rollläden nicht über Zeit auf zB 25% fahren, sondern ich müsste als Instanz den dsRoom, also die Szene für den Raum verwenden.
Das habe ich derzeit auch so gemacht für offen und geschlossen funktioniert das so.

Ich habe dazu in IPSComponentShutter_digitalstrom folgendes eingetragen


	public function MoveUp(){
			//DS_ShutterMoveUp($this->instanceId);
			DS_CallScene($this->instanceId,5);
		}

		/**
		 * @public
		 *
		 * Hinunterfahren der Beschattung
		 */
		public function MoveDown(){
			//DS_ShutterMoveDown($this->instanceId);
			DS_CallScene($this->instanceId,0);
		}

Damit werden alle Rollläden des Raumes geöffnet oder geschlossen.

Was müsste ich nun tun, um alle Rollläden bei zB der Temperatursteuerung auf 25% zu fahren. Dies entspricht einem Aufruf der Szene 17

DS_CallScene($this->instanceId,17);

Als instanceID habe ich auch die Szenen angelegt, und nicht die einzelnen Rolläden.

Gibt es dazu eine Lösung, oder muss ich doch wieder die einzelnen Rollläden dafür anlegen.

Danke und Gruß
Christian

Ich weiß nicht wer für IPSComponent zuständig ist, aber „IPSComponentShutter_Enocean“ müsste folgendermaßen angepasst werden, damit es wieder funktioniert:

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

   /**
    * @class IPSComponentShutter_Enocean
    *
    * Definiert ein IPSComponentShutter_Enocean Object, das ein IPSComponentShutter Object für Enocean 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_Enocean extends IPSComponentShutter {

		private $instanceId;
		private $isRunningId;

		/**
		 * @public
		 *
		 * Initialisierung eines IPSComponentShutter_Enocean Objektes
		 *
		 * @param integer $instanceId InstanceId des Enocean Devices
		 */
		public function __construct($instanceId) {
			$this->instanceId = IPSUtil_ObjectIDByPath($instanceId);
			$this->isRunningId  = @IPS_GetObjectIDByIdent('runningMode', $this->instanceId);
			if($this->isRunningId===false) {
				$this->isRunningId = IPS_CreateVariable(1 /*Integer*/);
				IPS_SetParent($this->isRunningId, $this->instanceId);
				IPS_SetName($this->isRunningId, 'RunningMode');
				IPS_SetIdent($this->isRunningId, 'runningMode');
				IPS_SetInfo($this->isRunningId, "This Variable was created by Script IPSComponentShutter_Enocean");
			}
		}

		/**
		 * @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
		 *
		 * 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){
			$name = IPS_GetName($variable);
			throw new IPSComponentException('Event Handling NOT supported for Variable '.$variable.'('.$name.')');
		}

		/**
		 * @public
		 *
		 * Hinauffahren der Beschattung
		 */
		public function MoveUp(){
			if(!GetValue($this->isRunningId)) {
				ENO_ShutterMoveUp($this->instanceId);
				SetValue($this->isRunningId, 1);
			}
		}

		/**
		 * @public
		 *
		 * Hinunterfahren der Beschattung
		 */
		public function MoveDown(){
			if(!GetValue($this->isRunningId)) {
				ENO_ShutterMoveDown($this->instanceId);
				SetValue($this->isRunningId, 2);
			}
		}

		/**
		 * @public
		 *
		 * Stop
		 */
		public function Stop() {
			$running = GetValue($this->isRunningId);
			if($running != 0) {
				 ENO_ShutterStop($this->instanceId);
				
				SetValue($this->isRunningId, 0);
			}
		}
	}

	/** @}*/
?>

Verändert sind nur die Up/Down/Stop-Befehle

@Hagbard

das Handling mit iSRunning kann dann eigentlich komplett raus - ode?


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

   /**
    * @class IPSComponentShutter_Enocean
    *
    * Definiert ein IPSComponentShutter_Enocean Object, das ein IPSComponentShutter Object für Enocean 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_Enocean extends IPSComponentShutter {

        private $instanceId;

        /**
         * @public
         *
         * Initialisierung eines IPSComponentShutter_Enocean Objektes
         *
         * @param integer $instanceId InstanceId des Enocean Devices
         */
        public function __construct($instanceId) {
            $this->instanceId = IPSUtil_ObjectIDByPath($instanceId);
        }

        /**
         * @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
         *
         * 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){
            $name = IPS_GetName($variable);
            throw new IPSComponentException('Event Handling NOT supported for Variable '.$variable.'('.$name.')');
        }

        /**
         * @public
         *
         * Hinauffahren der Beschattung
         */
        public function MoveUp(){
            ENO_ShutterMoveUp($this->instanceId);
        }

        /**
         * @public
         *
         * Hinunterfahren der Beschattung
         */
        public function MoveDown(){
            ENO_ShutterMoveDown($this->instanceId);
        }

        /**
         * @public
         *
         * Stop
         */
        public function Stop() {
            ENO_ShutterStop($this->instanceId);
        }
    }

    /** @}*/
?> 

@Jensner

Stellung der Lamellen kann man leider derzeit nur im Sekundentakt einstellen, liegt am internen Timer der Steuerung.

Installation ist nur notwendig, wenn Du neue Devices hinzufügst, bei einer Änderung von Properties ist keine Installation erforderlich.

@TomW

aktuell gibt es da keine Möglichkeit, da die komplette Ansteuerung zeitgesteuert abläuft. Ein Umbau ist zwar sicher möglich, aber nicht ganz so einfach.

Bei dem Problem mit der Ansteuerung kannst Du Dich derzeit nur mit den Fahrzeiten spielen, zumindest bei meinen Homematic Aktoren klappt das ohne Probleme.