IPSShadowing - eine Beschattungssteuerung

Hallo Andreas,

da hat sich noch ein Fehler in dein Modul eingeschlichen. Du hast die class nicht umbenannt, sondern dort noch den alten Namen drin. Ich habe IPSComponentShutter_Enocean jetzt komplett durch IPSComponentShutter_EnoceanShutter in der Datei ersetzt.

Dann läuft alles einwandfrei.

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

   /**
    * @class IPSComponentShutter_EnoceanShutter
    *
    * Definiert ein IPSComponentShutter_EnoceanShutter 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_EnoceanShutter extends IPSComponentShutter {

        private $instanceId;

        /**
         * @public
         *
         * Initialisierung eines IPSComponentShutter_EnoceanShutter 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);
        }
    }

    /** @}*/
?>

Gruß
Matthias

PS: Leider hat IPSymcon nicht implementiert, dass sich die Shutter per Zeitvorgabe steuern lassen. Geht nur Auf, Stop, Ab, wobei das Protokoll vom FBS14 eine Zeitangabe vorsieht :slight_smile:

OK, danke, habs korrigiert

Hallo,

erst einmal sehr großes Lob für die tolle Arbeit hier.
Das Modul lässt erstmal keine großen Wünsche offen.

Ich habe das Modul erfolgreich installieren und konfigurieren können. Es läuft auch alles soweit prima, bis auf die Beschattung.
Ich nutze IP Symcon in Verbindung mit einer Busch-Jäger KNX Installation und meine Jalousieaktoren haben folgende Gruppenadressen verfügbar:

  • Fahren (Auf oder Ab)
  • Stop
  • Rückmeldung Position
  • Fahren auf Position
  • Lamellenstellung

Heißt also, ich kann die Lamellen durch senden eines 1-Byte Telegramms auf die GA auf die gewünschte Position stellen (0=offen, 255=geschlossen). Im Modul wird dies ja (wenn ich es richtig gesehen habe) über Laufzeiten gemacht (2 Sekunden auf bzw. 3 Sekunden ab).

Meine Frage ist nun wie ich die Lamellenverstellung elegant in das Beschattunsmodul integrieren könnte?

Vielen Dank schon mal im Voraus!

Eine Möglichkeit wäre in der Konfiguration den Type Shutter zu verwenden und die Lamellenstellung in den Callbackfunktionen zu machen.

Elegant geht das aber vermutlich nicht, da das Module keine Stellung der Lamellen unterstützt…

Hallo Andreas,

vielen Dank für die schnelle Rückmeldung.
Ich werde das mal versuchen und bescheid geben ob es funktioniert hat.

Gruß,
Thomas

Guten Morgen zusammen,

nachdem Guten Morgen,
nachdem die KNX-Rolladenposition durch Neuorganisation der Prioritätenliste auf Eis gelegt wurde, habe ich nun zwei weitere Fragen, die hoffentlich kurz zu beantworten sind.

1.) Gibt es eine Möglichkeit, in IPSShadowing einzelne Profile für alle Beschattungselemente zu deaktivieren (will sagen: z.Bsp. Sonnenstandssteuerung global aus)?
2.) Nach einem Stromausfall wird im Sonnenstandprofil das Bild IPSShadowing_Azimuth.gif nicht mehr angezeigt, da es in /usr/share/symcon/media auf dem Pi nicht mehr vorhande ist. Wie kann die Erstellung manuell getriggert werden?

Gruss aus EU,

Jörg

Guten Morgen,

in der IPS Library wird die aktuelle Version mit 2.50.22 angezeigt.

Nach einer Änderung im Config-File war eine Neuinstallation notwendig. Hierbei tauchte allerdings im Logfile in der ersten Zeile „Set Version IPSShadowing=2.50.17 (Installing)“ und in der letzten Zeile „Set Version IPSShadowing=2.50.17 (Installed)“ auf…

In der Datei InstalledModules.ini ist „IPSShadowing=2.50.17|2.50.22|2.50.17|OK|https://raw.githubusercontent.com/brownson/IPSLibrary/Development/“ zu finden.

Ich bitte um Hilfe, die Unstimmigkeit (?) aufzulösen.

Gruss aus EU,

Jörg

Guten Morgen,

ich habe das Modul seit einigen Monaten am Start. Allerdings habe ich immer wieder das Problem, dass einige (von meinen 17 Rolläden) ab und zu nicht (oder nur halb) hoch- bzw. runterfahren. Es handelt sich dabei um immer andere Rolläden.

Folgendes wurde schon geändert:

  • Umstellung von WHS auf Raspberry
  • Anzahl der auszuführenden Skripte wurde erhöht
  • Umlaute und Sonderzeichen wurden ersetzt
  • Modul wurde aktualisiert und läuft auf der Beta Version 4.0

Trotzdem funktioniert es nicht einwandfrei. Hat jemand noch eine Idee, woran es liegen könnte?
Ich bin langsam am Verzweifeln :confused:

Vielen Dank.

Gruß,

Bernd

Hallo,

ich habe mir bei einigen Rollläden (HM) ein Skript geschrieben, welches auf das Betätigen der Drehgriffe (HM) an den zugehörigen Fenstern reagiert. Das funktioniert super da, wo ich nur ganz auf fahren will wenn der Griff auf „Offen“ gesetzt wird, denn wenn Tag ist ist der Rolladen eh offen, wenn Nacht ist soll er auf fahren.

Bei einigen möchte ich aber nun auch auf den Zustand „Gekippt“ reagieren. Auch das funktioniert grundsätzlich aber leider fahren die Läden auch bei Tag auf die eingestellten 50% wenn ich das Fenster kippe.

Wie kann ich ermitteln, ob für das angesprochene Device grade Nacht oder Tag gilt damit ich die Fahrt nur ausführen kann, wenn Tag ist? Ich kann zwar pro Device das Profil auslesen aber das bringt mich noch nicht wirklich weiter.

PS: ZUmal ja für jedes Device unterschiedliche Tag/Nacht Zeiten möglich sind.

da gibt es eine Funktion im ProfileManager, man übergibt die 2 zugeordneten Profile und bekommt zurück ob gerade Tag ist.


	$profileManager = new IPSShadowing_ProfileManager();
	
	$isDay               = $profileManager->IsDay($profileIdBgnOfDay, $profileIdEndOfDay);

Super danke.

Hallo zusammen,

ich versuche in IPSShadowing meine Wandtaster für Rollläden so zu integrieren, dass der Status entsprechend im Modul (Webfront) angepasst wird.
Die bisherigen Beiträge habe ich durchgelesen. Den einzigen für mich verwendbaren Hinweis den ich gefunden habe, war die „Manuelle Ansteuerung eines Beschattungselementes“ im WIKI. Jedoch fehlt mir hierzu der Ansatz, wie ich das in meinem Skript umsetzten soll, da ich mich noch ganz am Anfang der Einarbeitung befinde :).

Als Aktoren für die Rollläden habe ich FSB 12 von Eltako im Einsatz (unidirektional) und die Taster sind nur in IPS angelernt.

Aktuell starte ich über den Wandtaster ein Skript. Das Funktioniert soweit für hoch und runter. Jedoch kann ich keine Positionen anfahren,
da der Rollladen immer nur in der jeweiligen Endposition stoppt. Das stoppen über den Taster ist nicht möglich.

Super wäre wenn ich die Rollläden durch erneutes betätigen des Tasters stoppen könnte.

Wenn die Position (…, 25%, 50%, 75%,…) dann noch entsprechende visualisiert würde, wäre genial. Ist es irgendwie möglich hierzu einen Timer zu verwenden.
Ich habe mir das so gedacht: Wenn man den Rollladen herunterfährt und bei „55%“ den Taster dann betätigt, stoppt der Rollladen bei „50%“.
Wird der Taster erst bei „45%“ betätigt , stoppt der Rollladen dann in der nächsten Position, also bei „25%“.

Ist so etwas überhaupt möglich?

<?
// Script "Toggle (manuell)

// True Ereignis bei Variablenänderung des Tasters
$event_on_id = 36520 /*[EMSR-Technik EG-DG\Schlafzimmer\Aktoren\Schlafzimmer - Rolladen\Aktion\Toggle(Manuell)\]*/;
// False Ereignis bei Variablenänderung des Tasters
$event_off_id = 33082 /*[EMSR-Technik EG-DG\Schlafzimmer\Aktoren\Schlafzimmer - Rolladen\Aktion\Toggle(Manuell)\]*/;
// Aktor ID
$aktor_id = 42049 /*[EMSR-Technik EG-DG\Schlafzimmer\Aktoren\Schlafzimmer - Rolladen]*/ ;



if (@$IPS_EVENT == $event_on_id)
{
   ENO_ShutterMovedown($aktor_id); // Aktoren-Zustand ist invertiert!
   SetValueInteger(14027 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device7\Movement]*/, 0);
}
else
{
   ENO_ShutterMoveUP($aktor_id);// Aktoren-Zustand ist invertiert!
   SetValueInteger(14027 /*[Program\IPSLibrary\data\modules\IPSShadowing\Devices\Device7\Movement]*/, 8);
}
?>

Hallo,

Auf BananaPi /Raspbian Jessie treten bei der Installation 2 Probleme auf

  • die Bezeichnung der Räume darf keine Umlaute und kein „ß“ enthalten
  • bei einer umfangreicheren Installation (33 Devices) bricht die Installation ab mit:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 41 bytes) in /usr/share/symcon/scripts/IPSLibrary/install/IPSInstaller/IPSInstaller.inc.php on line 932

nette Grüße
Sven

Hallo,

erstmal großes Lob an die viele Arbeit die du in deine Module steckst!!!
Die Beschattungssteuerung funktioniert bei mir, nach 1-2 Hindernissen, nun wie ich es gerne möchte.

Allerdings die Temperaturgeschichte noch nicht.
Du beziehtst die Raumtemperatur für das Profil ja auf der Configuration, also dem da IPSSHADOWING_TEMPSENSORINDOOR

So, jetzt habe ich den nicht beschalten, da ich ja verschiedene und vor allem abgetrennte Räum habe, wo die einzelnen Elemente je nach IHREM Raumsensor arbeiten sollen.

Wie kann ich denn das realisieren?

In Verwendung:

IPS 3.x
Homematic CCU mit entsprechenden Komponenten (Wired, Funk)

Besten Dank im Voraus!
LG Daniel

Hallo Andreas,

darf ich dich dich fragen wie du die Funktion Regensensors gebaut hast? Auf deinem Github Account finde ich nichts zu IPSShadowing. Reicht es einfach ne Verzögerung einzubauen, z.B. wenn es 15min nicht mehr regent das Rollo hochfährt? Oder baust du da noch weitere „Sperren“ mit ein?

Vielen Dank!

Basti

@baba

ich hab derzeit keinen Regensensor in Betrieb, Rollo sollte wieder hochfahren sobald der Regen aufhört. Verzögerung realisiert Du am besten mit dem Sensor selbst.

@mue_dan

In der Konfiguration ist pro Device ein eigener Temperatursensor vorgesehen, der eine höhere Prioriät als der globale Sensor hat.


             c_Property_TempSensorIndoor  => 12345,
 

@swooper

Der Fehler passiert beim Auslesen der akutelle Webfront Konfiguration, Dein Webfront scheint schon so groß zu sein, dass es beim Auslesen der Struktur zu einem OutOfMemory kommt.

Sonderzeichen bei den Namen sollten erlaubt sein, beim DeviceName in der Config darst Du keine verwenden!

@tkg

Manuelle Ansteuerung der Beschattung kannst Du über folgende Aufrufe realisieren:

Schließen:


    IPSUtils_Include('IPSShadowing.inc.php', 'IPSLibrary::app::modules::IPSShadowing');
 
    $device = new IPSShadowing_Device(12345);
    $deviceActive = $device->MoveByControl(c_MovementId_Closed);

Öffnen:


    IPSUtils_Include('IPSShadowing.inc.php', 'IPSLibrary::app::modules::IPSShadowing');
 
    $device = new IPSShadowing_Device(12345);
    $deviceActive = $device->MoveByControl(c_MovementId_Opened);

usw…

Hallo Andreas,

habe ich eigentlich für jedes Device eingetragen und wird auch im Webfront bei „Beschattungselemente“ einwandfrei angezeigt - Aussen- wie Innentemperatur.

Beim Temperaturprofil wird allerdings „nicht vorhanden“ angezeigt!?!

	function get_ShadowingConfiguration() {
		return array(
			c_ShadowingDevice_1 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Wohnzimmer links',
				c_Property_Component		=> 'IPSComponentShutter_Dummy,12345',
				c_Property_TimeOpening		=> 	35,
				c_Property_TimeClosing		=> 	35,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '23269',
				),
			c_ShadowingDevice_2 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Wohnzimmer rechts',
				c_Property_Component		=> 'IPSComponentShutter_Dummy,12346',
				c_Property_TimeOpening		=> 	35,
				c_Property_TimeClosing		=> 	35,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '23269',
				),
			c_ShadowingDevice_3 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Buero Marina',
				c_Property_Component		=> 'IPSComponentShutter_Dummy,12347',
				c_Property_TimeOpening		=> 	35,
				c_Property_TimeClosing		=> 	35,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '28385',
				),
			c_ShadowingDevice_4 =>	array(
				c_Property_ShadowingType	=> 	c_ShadowingType_Shutter,
				c_Property_Name				=> 'Schlafzimmer',
				c_Property_Component		=> 'IPSComponentShutter_Dummy,12348',
				c_Property_TimeOpening		=> 	35,
				c_Property_TimeClosing		=> 	35,
				c_Property_TimePause		=> 	1,
				c_Property_TempSensorIndoor	=> '10164',
				),
	   );

Noch ne Idee worans haken könnte?
Modul gelöscht, neu geladen, installiert, usw. habe ich schon mehrfach.

Wenn du dich fragen solltest, warum ich mit Dummy Instanzen rumfahre…hat mir mit Homematic Konfig nie so richtig das gemacht was ich wollte. Jetzt lass ich den Dummy die Position anfahren und wenn der fertig ist, fährt der Shutter einfach nach. Bei manueller Bedienung über Taster nehme ich IPSShadowing in den manuellen Betrieb und ändere dort die Position gar nicht. Schalte ich wieder auf Auto, fährt der Rolladen ganz nach oben und von dort die alte Position wieder an.

Alsoooo bis auf die Temperaturgeschichte wärs schon eine richtig wunderbare Sache :slight_smile:

lg Daniel