IPSLight

Ist es möglich die Dimmer Module so einrichten dass nur der Dimmwert geschaltet wird?

Also wenn Dimmer auf Null dann Aktor off. Speziell bei den FS20 Dimmern.

Aktuell ist das noch nicht möglich, prinzipiell gefällt mit die Idee aber. Problem ist hier nur wie man das Ganze in IPSLight integriert …

Eine Möglichkeit zur Umsetzung wäre, dass Du Dir selber eine Variable anlegst und im ActionScript die entsprechende API Ansteuerung von IPSLight verwendest.

evtl wäre ein ansatz dieser:

Status = Helligkeit

if Status = 0 then
dimmen auf 0
bei fs20 oder ähnlichen dann Switch auf false

else

switch auf true
dimmen auf eingestellten wert.

Hallo Habe mich gestern auch mal mit der IPS Light Steuerung befasst. Eine Hammer Sache! Hatte sowas ähnliches auch zuvor. Allerdings total unkonfortabel und unflexibel. Im Ansatz hats gepasst. Aber hätte ich dieses IPS Light Add On etwas eher ausprobiert wäre mir sehr viel Zeit erspart geblieben.

Kurzum hier noch ein paar Erweiterungen, die noch gefehlt haben:

IPSComponentDimmer_FS20

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

   /**
    * @class IPSComponentDimmer_Homematic
    *
    * Definiert ein IPSComponentDimmer_FS20 Object, das ein IPSComponentDimmer Object für FS20 implementiert.
    *
    * @author Andreas Brauneis
    * @version
    * Version 2.50.1, 31.01.2012<br/>
    */

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

	class IPSComponentDimmer_FS20 extends IPSComponentDimmer {

		private $instanceId;

		/**
		 * @public
		 *
		 * Initialisierung eines IPSComponentDimmer_FS20 Objektes
		 *
		 * @param integer $instanceId InstanceId des FS20 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 IPSModuleDimmer $module Module Object an das das aufgetretene Event weitergeleitet werden soll
		 */
		public function HandleEvent($variable, $value, IPSModuleDimmer $module){
		}

		/**
		 * @public
		 *
		 * Zustand Setzen
		 *
		 * @param integer $power Geräte Power
		 * @param integer $level Wert für Dimmer Einstellung (Wertebereich 0-100)
		 */
		public function SetState($power, $level) {
			// Zeit in Sekunden wie schnell der Aktor dimmmen soll
		   $DimspeedSec = 2;
			if (!$power) {
				FS20_SetIntensity ($this->instanceId, 0, $DimspeedSec);
				// Wartezeit um den Aktor auf OFF zu Schalten
				// IPS_Sleep wird in Millisekunden angegeben, darum * 1000
				IPS_Sleep ($DimspeedSec*1000);
				FS20_SwitchMode	($this->instanceId, false);
			} else {
				// 100% Helligkeit Entsprechen bei FS20 dem Wert 16
				$levelFS20 = round($level / 100 * 16);
				FS20_SetIntensity ($this->instanceId, $levelFS20, $DimspeedSec);
			}

		}

		/**
		 * @public
		 *
		 * Liefert aktuellen Level des Dimmers
		 *
		 * @return integer aktueller Dimmer Level
		 */
		public function GetLevel() {
			return GetValue(IPS_GetVariableIDByName('Intensität', $this->instanceId));
		}

		/**
		 * @public
		 *
		 * Liefert aktuellen Power Zustand des Dimmers
		 *
		 * @return boolean Gerätezustand On/Off des Dimmers
		 */
		public function GetPower() {
			return GetValue(IPS_GetVariableIDByName('Intensität', $this->instanceId)) > 0;
		}

	}

	/** @}*/
?>

Und hier der Z-Wave Dimmmer

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

   /**
    * @class IPSComponentDimmer_Homematic
    *
    * Definiert ein IPSComponentDimmer_Z-Wave Object, das ein IPSComponentDimmer Object für Z-Wave implementiert.
    *
    * @author Andreas Brauneis
    * @version
    * Version 2.50.1, 31.01.2012<br/>
    */

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

	class IPSComponentDimmer_ZW extends IPSComponentDimmer {

		private $instanceId;
	
		/**
		 * @public
		 *
		 * Initialisierung eines IPSComponentDimmer_ZW Objektes
		 *
		 * @param integer $instanceId InstanceId des Z-Wave 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 IPSModuleDimmer $module Module Object an das das aufgetretene Event weitergeleitet werden soll
		 */
		public function HandleEvent($variable, $value, IPSModuleDimmer $module){
		}

		/**
		 * @public
		 *
		 * Zustand Setzen 
		 *
		 * @param integer $power Geräte Power
		 * @param integer $level Wert für Dimmer Einstellung (Wertebereich 0-100)
		 */
		public function SetState($power, $level) {
			if (!$power) {
				ZW_DimSet($this->instanceId, 0);
			} else {
				$levelZW = $level;
				ZW_DimSet($this->instanceId, $levelZW);
			}
			
		}

		/**
		 * @public
		 *
		 * Liefert aktuellen Level des Dimmers
		 *
		 * @return integer aktueller Dimmer Level
		 */
		public function GetLevel() {
			return GetValue(IPS_GetVariableIDByName('Intensity', $this->instanceId));
		}

		/**
		 * @public
		 *
		 * Liefert aktuellen Power Zustand des Dimmers
		 *
		 * @return boolean Gerätezustand On/Off des Dimmers
		 */
		public function GetPower() {
			return GetValue(IPS_GetVariableIDByName('Intensity', $this->instanceId)) > 0;
		}

	}

	/** @}*/
?>

Wäre toll wenn da jemand nochmal drüber schauen will. Dass da auch kein Fehler drin ist. Funktion habe ich getestet und ist OK. Dann können wir das mit in die Sammlung aufnehmen.

habe gerade gemerkt, dass bei meinen beiden Modulen im Log die ON - OFF Zustände vertauscht sind.
Ich mach mich nochmal drüber. Ist bestimmt nur ne kleinigkeit.

PS: Kann man das Log eigentlich auf Deutsch stellen?

Bestünde die Möglichkeit das Script so umzuschreiben,
dass in dem Ordner Switches für jeden Raum ein Dummymodul angelegt wird, in dem dann die Switches drin sind?

also ähnlich wie in diesem Screenshot.

Und in der Logdatei könnte dann auch das Dummy Modul stehen, danach der Name der Lampe.

So hätte man dann im Log nicht nur Stehlampe sondern Wohnzimmer Stehlampe

Hallo,

ich habe IPSLight deinstalliert und nun kommen beim betätigen der Aktoren Fehlermeldungen:


kann mir jemand sagen, was die Ursache dafür ist?

LG
Hugo

Hi,

da hat die Deinstallation noch ein leichtes Verbesserungspotential - lösche die zugehörigen Einträge im IPSMessageHandler einfach manuell:

und die entsprechenden Events auch gleich:

Danke, das hats gebracht :slight_smile:

Hallo,

Für z.B. FS20 Dimmer wurde oben ja schon die IPSComponentDimmer_FS20.class.php geposted. Im Prinzip funktioniert das auch alles, wenn ich den Inhalt der neuen *.class.php in eine vorhandene, nicht benötigte *.class.php kopiere und diese dann anspreche. Ist so aber sicher nicht wirklich toll…
Wie geht´s denn nun richtig?
*.class.php im entsprechenden Unterverzeichnis von IPSComponent anlegen (hier z.B. im …IPSComponent\IPSComonentDimmer)
Dann wird die neue *.class.php aber noch nicht erkannt und ist nicht nutzbar. Wie macht man da weiter?

nette Grüße
Sven

Hi,

wichtig ist hier nur, das die Klasse im Dateisystem im richtigen Verzeichnis mit richtigem Filenamen liegt. Eine Registrierung in IPS ist für die Funktion nicht zwingend erforderlich!

Habe auch schon mal einen Wiki Artikel dazu geschrieben…

Danke - trotz suchen hatte ich diesen Wiki-Artikel vorher nicht gefunden.

Wenn ich einen Dimmer im WF darstelle, habe ich z.B. On/Off und darunter den Level-Balken. Wird jetzt der Level auf „0“ gestellt, bleibt das Device noch immer auf „on“ - Wäre es sinnvoll, hier eine Automatik zu installieren?

nette Grüße
Sven

Hallo Sven,

hört sich sinnvoll an, werd ich mir bei Gelegenheit mal ansehen …

:):):):slight_smile:

Bei der Gelegenheit möchte ich gleich mal an die Verbesserungsmöglichkeit aus Post 81 hinweisen.

Dann hätte man bei Helligkeit 0 auf Switch OFF

Ich habs immer noch nicht hinbekommen dass in der Log das ON und OFF richtig dargestellt wird.

Neue Version online:

[ul]
[li]Dimmer State wird nun automatisch auf Off gesetzt, wenn der Level auf 0 gesetzt wird.
[/li][li]Logging für Dimmer korrigiert
[/li][/ul]

Hallo brownson, das ist echt spitze. Bin immer wieder total begeistert von deinen Tools!! :slight_smile:

Wäre noch ganz gut wenn bei Gruppe aus der Dimmer auf 0 gestellt wird und bei Gruppe ein auf 100. ist das möglich?

Gesendet von meinem iPad mit Tapatalk HD

Einers der Konzepte von IPSLight ist, dass die Dimmer nach dem Einschalten wieder auf dem letzten Wert stehen.
Gruppe an, Dimmer auf 100% ist da nicht ganz stimmig.

Du kannst das auch umsetzen, indem Du Dir entsprechende Programme anlegst - dort kannst Du bei jedem Programm genau festlegen, wie die Dimmerwerte sein sollen.

Stimmt auch wieder. Dann bleiben die Werte erhalten.

Gibt s dann noch ne doku wie die programme angelegt werden? Oder ist das einfach so Skript anlegen und darin dann die einzelnen lichter per set value schalten? Das hab ich noch nicht so verstanden.

Gesendet von meinem GT-I9100 mit Tapatalk

Ich meine die Programme, die man in der Konfiguration anlegen kann. Im Example Ordner gibts Beispiele dafür …

Das Klappt super :slight_smile: Danke

Noch eine Verbesserung hätte ich. Und zwar bei Dimmern wird ja standardmäßig das Profil ~Intensity.100 ausgewählt. Wäre da nicht die Möglichkeit z.B. ein eigenen Profil anzulegen das z.B. den namen IPSLightIntensity trägt. Dies könnte dann jeder User nach seinem Belieben anpassen.