IPSLight

Hallo,

ich habe einen KNX/EIB Dimmer und wie es scheint, ist die Rückmeldung fürs Dimmen auch hier nicht implementiert.

Ist das kurzfristig geplant? Wie macht Ihr das mit dem Synchron halten? Könnt Ihr ggf einen Tipp geben, an welcher Stelle man da selber mal Hand anlegen könnte?

Vielen Dank
hhhc

Könnte mir jemand einen Tipp geben wie ich den Status in IPSLight bekomme, wenn ich z.B. DMX per Script schalte und dabei keine IPSLight Funktion benutze? Hintergrund: Ich möchte Leuchten per Script beim Eind- und Ausschalten dimmen, was mit IPSLight nicht geht.

Im Script sieht das etwas so aus:

	    DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 1, 255, 2);
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 2, 255, 2);
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 3, 255, 2);

Was muss ich da einbauen das IPSLight das mitbekommt?

LG
Tom

Eine Funktion zur Synchronisation für RGB Werte steht derzeit noch gar nicht zur Verfügung, eine Implementierung könnte so aussehen:


		public function SynchronizeRGB($switchName, $deviceState, $deviceLevel, $deviceRGB) {
			IPSLogger_Trc(__file__, 'Received StateChange from Light '.$switchName.', State='.$deviceState.', Level='.$deviceLevel', RGB='.$deviceRGB);
			$switchId    = IPS_GetVariableIDByName($switchName, $this->switchCategoryId);
			$levelId     = IPS_GetVariableIDByName($switchName.IPSLIGHT_DEVICE_LEVEL, $this->switchCategoryId);
			$rgbId       = IPS_GetVariableIDByName($switchName.IPSLIGHT_DEVICE_RGB, $this->switchCategoryId);

			$lightConfig = IPSLight_GetLightConfiguration();
			$deviceType  = $lightConfig[$switchName][IPSLIGHT_TYPE];

			if (IPSLight_BeforeSynchronizeSwitch($switchId, $deviceState)) {
				if (GetValue($switchId)<>$deviceState or GetValue($levelId)<>$deviceLevel or GetValue($rgbId)<>$deviceRGB) {
					IPSLogger_Inf(__file__, 'Synchronize StateChange from Light '.$switchName.', State='.($deviceState?'On':'Off').', Level='.$deviceLevel.', RGB='.$deviceRGB);
					SetValue($switchId, $deviceState);
					SetValue($levelId,  $deviceLevel);
					SetValue($rgbId,    $deviceRGB);
					$this->SynchronizeGroupsBySwitch($switchId);
					$this->SynchronizeProgramsBySwitch($switchId);
				}
			}
			IPSLight_AfterSynchronizeSwitch($switchId, $deviceState);
		}

Füge diese Funktion mal in die Datei IPSLight_Manager.class.php ein (zB hinter SynchronizeDimmer).

Aufrufen kannst Du das zB so:


	IPSUtils_Include ("IPSLight.inc.php",          "IPSLibrary::app::modules::IPSLight");
	$lightManager = new IPSLight_Manager();
	$lightManager->SynchronizeRGB($deviceIdent, $state /*On/Off*/, 100 /*Dimmer Value*/, $rgb /*RGB Value*/);

Falls es klappt, nehme ich es in IPSLight auf …

@hhcc

Rückmeldung Dimmer ist vorhanden:


    IPSUtils_Include ("IPSLight.inc.php",          "IPSLibrary::app::modules::IPSLight");
    $lightManager = new IPSLight_Manager();
    $lightManager->SynchronizeDimmer($deviceIdent, $state /*On/Off*/, $level/*Dimmer Value*/);  

Hallo Andreas,

nach einfügen in die iPSLight_Manager.class.php bekomme ich folgende Fehlermeldung:

Parse error:  syntax error, unexpected '', RGB='' (T_CONSTANT_ENCAPSED_STRING) in [Program\IPSLibrary\app\modules\IPSLight\IPSLight_Manager] on line 562
Abort Processing during Fatal-Error: syntax error, unexpected '', RGB='' (T_CONSTANT_ENCAPSED_STRING)
   Error in Script C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSLight\IPSLight_Manager.class.php on Line 562

In Zeile 562 der iPSLight_Manager.class.php steht:

IPSLogger_Trc(__file__, 'Received StateChange from Light '.$switchName.', State='.$deviceState.', Level='.$deviceLevel', RGB='.$deviceRGB);

LG
Tom

Hallo
Sollter eher
Level=’.$deviceLevel.’
heissen.

Gesendet von meinem iPad mit Tapatalk HD

Vielen Dank! Fehlermeldung ist weg.

Leider fehlt mir der Ansatz wie ich:

    IPSUtils_Include ("IPSLight.inc.php",          "IPSLibrary::app::modules::IPSLight"); 
    $lightManager = new IPSLight_Manager(); 
    $lightManager->SynchronizeDimmer($deviceIdent, $state /*On/Off*/, $level/*Dimmer Value*/);

in das folgende Script einbauen muss:

IPSUtils_Include ('IPSLight.inc.php', 'IPSLibrary::app::modules::IPSLight');

$taste_1 = GetValue(12000 /*[Flur OG und Treppenhaus\Tastsensor 3-fach OG Flur\Taste 1\Value]*/); //kurz an Tag

if ($taste_1 == true)
    {
//===Licht an =======
	  DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 1, 255, 2); //Rot in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 2, 255, 2); //Grün in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 3, 255, 2); //Blau in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 4, 255, 2); //Weiß in 2 Sekunden auf 255
  else
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 0, 0, 4); //alle Kanäle (1-4) in 4 Sekunden auf 0
   }

Ich möchte die Synchronisation beim Ein- und auch beim Ausschalten erreichen. Möchte aber auch nicht, dass durch die Synchronisation mit IPSLight das Dimmen unterbrochen wird. Wäre schön wenn Du da ein kurzes Beispiel zum Einbauen in den Script hättest.

LG
Tom

RGB Wert berechnen:
$rgb= $rot256256 + $grün*256 + $blau;

und mit dem entsprechenden Namen des Lichtes in IPSLight synchronisieren (Synchronisieren bedeutet, dass der entsprechende Wert in IPSLight übernommen wird ohne einen Schaltvorgang auszulösen).


IPSUtils_Include ('IPSLight.inc.php', 'IPSLibrary::app::modules::IPSLight');
$lightManager = new IPSLight_Manager(); 
 
$taste_1 = GetValue(12000 /*[Flur OG und Treppenhaus\Tastsensor 3-fach OG Flur\Taste 1\Value]*/); //kurz an Tag
$deviceIdent = 'ConfigNameInIPSLight';

if ($taste_1 == true) {
     //===Licht an =======
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 1, 255, 2); //Rot in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 2, 255, 2); //Grün in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 3, 255, 2); //Blau in 2 Sekunden auf 255
     DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 4, 255, 2); //Weiß in 2 Sekunden auf 255
     $rgb = 255*256*256 /*Red*/ + 255*256 /*Green*/ + 255;
     $lightManager->SynchronizeRGB($deviceIdent, false, 100, $rgb);  
} else {
    DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 0, 0, 4); //alle Kanäle (1-4) in 4 Sekunden auf 0
    $lightManager->SynchronizeRGB($deviceIdent, false, 100, 0);  
}

 

Hallo Andreas,

Danke! das hilft weiter. Der Versuch bringt jedoch Fehlermeldungen:


Warning:  Objekt Flur-DMX62-RGBIPSLIGHT_DEVICE_RGB wurde nicht gefunden in C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSLight\IPSLight_Manager.class.php on line 565

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSLight\IPSLight_Manager.class.php on line 575

Zeile 565:

$rgbId = IPS_GetVariableIDByName($switchName.IPSLIGHT_DEVICE_RGB, $this->switchCategoryId);

Zeile 575:

SetValue($rgbId, $deviceRGB);

Ich hoffe das hilft weiter.

LG Tom

Danke. Testinstallation ist abgebaut und nun warte ich auf den Elektriker. Ca im September kann ich an mein Live system und werde das dann einbauen.
Vielen Dank

Gesendet von meinem iPhone mit Tapatalk

@timloe

sieht so aus als ob der ident des Lichtes nicht vorhanden ist, selben Namen wie in der Config verwenden …

In der Config steht:

'Flur-DMX62-RGB'  =>  array('LED-Flur-RGB', 'All,Flur', 'RGB', 'IPSComponentRGB_DMX,34369'),

Ich habe es mit „Flur-DMX62-RGB“ und auch Versuchsweise mit „LED-Flur-RGB“ vesucht. Beides bringt einen Fehler mit nicht gefundenen Objekt.

Mein Script für das Ausschalten sieht so aus:

IPSUtils_Include ('IPSLight.inc.php', 'IPSLibrary::app::modules::IPSLight');
$lightManager = new IPSLight_Manager();
$deviceIdent = 'Flur-DMX62-RGB';
DMX_Fade(34369 /*[DMX\DMX 62 - Flur]*/, 0, 0, 4);
$lightManager->SynchronizeRGB($deviceIdent, false, 100, 0);

Tom

ok, sorry, falsche Konstante verwendet:


         $rgbId       = IPS_GetVariableIDByName($switchName.IPSLIGHT_DEVICE_COLOR, $this->switchCategoryId);

Ist geklärt. Kommt natürlich in den IPSLight_Manager.

>Wie muss/kann ich das in den Script oben einbauen?

Tom

Super. Die Fehlermeldungen sind nun weg. Die Synchronisation funktioniert auch. Synchronisiert wird #Color und #Level. Am Switch (An/Aus) ändert sich aber nichts. Ist das so richtig oder sollte sich da der Wert auch ändern?

Tom

Hi Andreas,

wo die Tage langsam kürzer werden und dieses Modul wieder mehr in Aktion ist als die Bewässerung wollte ich nur mal fragen, ob das Thema Anwesenheitssimulation noch aktuell ist oder ob es vielleicht schon eine Beta davon zum Spielen gibt?

nette Grüße
Sven

Hallo Andreas,
ich habe IPSLight installiert und dann wieder deinstalliert+Modul gelöscht.

Jetzt erhalte leider immer folgende Fehlermeldung:

Die Fehlermeldung erscheint nicht mehr, wenn ich das Modul lade ohne es zu installieren.
Wie kann ich das IPSLight wieder sauber deinstallieren?

Bei der Deinstallation von IPSLight mit Homematic müssen die zugehörigen Events manuell gelsöcht werden:

In der Konsole zum Skript IPSMessageHandler_Event im Pfad Program.IPSLibrary.app.core.IPSMessageHandler navigieren und dort die Events löschen die Instanzen zeigen die von IPSLight verwendet wurden.

Ok, Danke!

Hallo Andreas

Ich wollte mal Nachfragen wie ich es hinbekomme das meine Homematic Dimmer Ihren Status an IPSLight zurückmelden.
Mir reicht es das die Rückmeldung nur als AN/AUS zurückgemeldet wird.
Ich weiß nur leider nicht wie ich das integrieren kann.

Mfg Stefan