Perl Modul zur Steuerung von Osram Lightify Geräten

Innerhalb meines Tommatic Projektes wollte ich auch Osram Lightify Geräte steuern. Beim stöbern im Netz bin ich auf Christoph Engelbert GitHub "Documentation of the OSRAM Lightify Binary Protocol for communication between Lightify Gateway and applications" gestoßen.

Diese Dokumentation ist dir Grundlage meiner Umsetzung in Perl-Klassen. Ohne seine hervorragende Arbeit wären die hier vorgestellten Klassen nicht möglich gewesen! Durch Anwendung seiner Dokumentation können meine Klassen direkt mit dem Lightify Gateway kommunizieren und müssen nicht den Umweg über die Cloud nehmen.

Zum gegenwärtigen Zeitpunkt werden Lampen, Gruppen und Steckdosen unterstützt. Bei den Lampen und Gruppen wird neben dem Status auch die Helligkeit, Farbtemperatur und Farbe über den RGBW-Farbraum - in Abhängigkeit der verwendeten Geräte - unterstützt.

Verwendung

Abhängigkeiten

Perl-Module
  • IO::Socket::INET;
  • Time::HiRes 'gettimeofday'

Versionen ausgeben

Die Versionen der Perl-Modulen der Klassen kann wie folgt ausgegeben werden:

#!/usr/bin/perl

use TSS::Osram::Lightify;

print "Version Lightify.pm : ".$TSS::Osram::Lightify::VERSION."\n";
print "Version Light.pm    : ".$TSS::Osram::Lightify::Light::VERSION."\n";
print "Version Plug.pm     : ".$TSS::Osram::Lightify::Plug::VERSION."\n";
print "Version Group.pm    : ".$TSS::Osram::Lightify::Group::VERSION."\n";
print "Version Common.pm   : ".$TSS::Osram::Lightify::Common::VERSION."\n";

Erzeugen einer Instanz der Klasse TSS::Osram::Lightify

Um mit einem Lightify Gateway zu kommunizieren muss eine Instanz der Klasse TSS::Osram::Lightify erzeugt werden.

Als <IP-Adresse> wird die IP-Adresse des Osram Lightify Gateway eingetragen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

Aufbau der Geräte-IDs

Zur Unterscheidung zu welcher Klasse ein Gerät gehört wird der Lightify Gateway internen ID ein Präfix vorangestellt:

<Präfix><Lightify Gateway internen ID>

Die folgenden Präfixe sind vorhanden:

oll  = Lampen (l=light)
olp = Steckdosen (p=Plug)
olg = Gruppen (g=group)

Die Klasse TSS::Osram::Lightify

Die TSS::Osram::Lightify Klasse bündelt alle Methoden um Lampen, Gruppen und Steckdosen über den Lightify Gateway zu steuern.

Attribute

Die Klasse TSS::Osram::Lightify besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

print "Fehlermeldung :'".$gobjGateway->{"error"}."'\n";
print "IP-Adresse    :'".$gobjGateway->{"host"}."'\n";

$gobjGateway->{"error"}> enthält eine Fehlermeldung nach dem ein Fehler aufgetreten ist.

$gobjGateway->{"host"}> enthält die IP-Adresse des Lightify Gateways.

Gesamtstatus aller Geräte ausgeben

Mit der Methode $gobjGateway->listObjects() werden alle Lampen, Gruppen und Steckdosen aus dem Lightify Gateway ausgelesen.

Die Methode $gobjGateway->listObjects() gibt einen Pointer auf ein Array mit Objekten aller Geräte zurück. Werden diese Objekte im scalaren Kontext verwendet, so werden alle Statusattribute der einzelnen Objekte als String ausgegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gprtarrDevices=$gobjGateway->listObjects();
if (! defined($gprtarrDevices)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

foreach my $tobjDevice ( @{$gprtarrDevices} ) { print $tobjDevice."\n"; }

Beispielausgabe der Geräte-Objekte im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />
<datapoint deviceid='oll0123456789abcdff' name='Schlafzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='10.87.62.30' group='olg0200' online='1' status='0' brightness='16' ct='3000' rgbw='255,191,78,255' />
...

Gesamtstatus eines Gerätes ausgeben

Die Methode $gobjGateway->getDeviceInfo("<Geräte-ID>") liest das durch die Geräte-ID angegebene Gerät aus dem Lightify Gateway aus.

Auch hier wird ein Objekt, welches das Gerät repräsentiert, zurück gegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />

Alle Geräte ein- / ausschalten

Die Methode $gobjGateway->setPowerAll("<0=aus / 1=ein>") schaltet alle Lampen und Steckdosen ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gstrResult=$gobjGateway->setPowerAll("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='' status='0' />

Alle Lampen ein- / ausschalten

Die Methode $gobjGateway->setPowerAllLights("<0=aus / 1=ein>") schaltet nur alle Lampen ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gstrResult=$gobjGateway->setPowerAllLights("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='' status='0' />

Alle Steckdosen ein- / ausschalten

Die Methode $gobjGateway->setPowerAllPlugs("<0=aus / 1=ein>") schaltet nur alle Steckdosen ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gstrResult=$gobjGateway->setPowerAllPlugs("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='' status='0' />

Alle Gruppen ein- / ausschalten

Die Methode $gobjGateway->setPowerAllGroups("<0=aus / 1=ein>") schaltet nur alle Gruppen ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gstrResult=$gobjGateway->setPowerAllGroups("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='' status='0' />

Ein Gerät ein- / ausschalten

Die Methode $gobjGateway->setPower("<Geräte-ID>","<0=aus / 1=ein>") schaltet die durch die Geräte-ID angegebene Lampe, Steckdose oder Gruppe ein bzw. aus.

Hier wird wieder ein Objekt, welches das Gerät repräsentiert, zurück gegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->setPower("<Geräte-ID>","<0=aus / 1=ein>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />

Helligkeit eines Gerätes ändern

Die Methode $gobjGateway->setBrightness("<Geräte-ID>","<0-100>") ändert die Helligkeit der durch die Geräte-ID angegebene Lampe oder Gruppe.

Hier wird wieder ein Objekt, welches das Gerät repräsentiert, zurück gegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->setBrightness("<Geräte-ID>","<0-100>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />

Farbtemperatur eines Gerätes ändern

Die Methode $gobjGateway->setCT("<Geräte-ID>","<6500-2200>") ändert die Farbtemperatur der durch die Geräte-ID angegebene Lampe oder Gruppe.

Diese Methode ist nur bei Lampen oder Gruppen wirksam, welche die Einstellung der Farbtemperatur unterstützen.

Hier wird wieder ein Objekt, welches das Gerät repräsentiert, zurück gegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->setCT("<Geräte-ID>","<6500-2200>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />

Farbe eines Gerätes über den RGBW-Wert ändern

Die Methode $gobjGateway->setRGBW("<Geräte-ID>","<0-255,0-255,0-255,0-255>") ändert die Farbe der durch die Geräte-ID angegebene Lampe oder Gruppe.

Diese Methode ist nur bei Lampen oder Gruppen wirksam, welche die Einstellung der Farbe unterstützen.

Hier wird wieder ein Objekt, welches das Gerät repräsentiert, zurück gegeben.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->setRGBW("<Geräte-ID>","<0-255,0-255,0-255,0-255>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='oll0123456789abcdef' name='Wohnzimmer' devicetype='bulb:rgb,tunable_white,dimmable' version='1.2.5.10' group='olg0100' online='1' status='0' brightness='23' ct='4000' rgbw='16,18,255,255' />

Die Klasse TSS::Osram::Lightify::Light

Die TSS::Osram::Lightify::Light Klasse bündelt alle Attribute und Methoden um Lampen über den Lightify Gateway zu steuern.

Attribute

Die Klasse TSS::Osram::Lightify::Light besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Fehlertext      : ".$gobjObject->{"error"}."\n";
print "Gateway         : ".$gobjObject->{"gateway"}."\n"; # Übergeordnetes Objekt TSS::Osram::Lightify
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n" if (defined($gobjDevice->{"devicetype"}));
print "Datenqualität   : ".$gobjDevice->{"quality"}."\n";
print "Firmwareversion : ".$gobjDevice->{"version"}."\n" if (defined($gobjDevice->{"version"}));
print "Onlinestatus    : ".$gobjDevice->{"online"}."\n";
print "Gruppen-ID      : ".$gobjDevice->{"group"}."\n" if (defined($gobjDevice->{"group"}));
print "Power-Status    : ".$gobjDevice->{"status"}."\n";
print "Helligkeit      : ".$gobjDevice->{"brightness"}."\n";
print "Farbtemperatur  : ".$gobjDevice->{"temperature"}."\n";
print "Rotwert         : ".$gobjDevice->{"red"}."\n";
print "Grünwert        : ".$gobjDevice->{"green"}."\n";
print "Blauwert        : ".$gobjDevice->{"blue"}."\n";
print "Weisswert       : ".$gobjDevice->{"alpha"}."\n";

Einige der Attribute sind optional und nur vorhanden, wenn die Lampe diese unterstützen.

Methoden zur Statusausgabe

Neben den Attributen besitzt die Klasse TSS::Osram::Lightify::Light auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Name        : ".$gobjDevice->name()."\n";
print "Device-ID   : ".$gobjDevice->deviceid()."\n";
print "Devicetype  : ".$gobjDevice->devicetype()."\n";
print "Version     : ".$gobjDevice->version()."\n";
print "Online      : ".$gobjDevice->online()."\n";
print "Gruppe      : ".$gobjDevice->group()."\n";
print "Status      : ".$gobjDevice->status()."\n";
print "Brightness  : ".$gobjDevice->brightness()."\n";
print "Temperature : ".$gobjDevice->temperature()."\n";
print "Color       : ".$gobjDevice->rgbw()."\n";
print "Devicestate : ".$gobjDevice->devicestate()."\n";

Alle Geräteinformationen neu einlesen

Durch die Methode $gobjObject->devicestate() werden alle Informationen der Lampe neu eingelesen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gintResult=$gobjObject->readDeviceInfo();
if (! defined($gintResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

Die Lampe ein- / ausschalten

Die Methode $gobjObject->setPower("<0=aus / 1=ein>") schaltet die Lampe ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setPower("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='oll0123456789abcdef' status='0' />

Helligkeit der Lampe ändern

Die Methode $gobjObject->setBrightness("<0-100>") ändert die Helligkeit der Lampe.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setBrightness("<0-100>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='oll0123456789abcdef' brightness='80' />

Farbtemperatur der Lampe ändern

Die Methode $gobjObject->setCT("<6500-2200>") ändert die Farbtemperatur der Lampe.

Diese Methode ist nur bei Lampen welche die Einstellung der Farbtemperatur unterstützen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setCT("<6500-2200>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='oll0123456789abcdef' ct='6500' />

Farbe der Lampe über den RGBW-Wert ändern

Die Methode $gobjObject->setRGBW("<0-255,0-255,0-255,0-255>") ändert die Farbe der Lampe.

Diese Methode ist nur bei Lampen wirksam, welche die Einstellung der Farbe unterstützen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setRGBW("<0-255,0-255,0-255,0-255>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='oll0123456789abcdef' rgbw='255,255,255,255' />

Die Klasse TSS::Osram::Lightify::Plug

Die TSS::Osram::Lightify::Plug Klasse bündelt alle Attribute und Methoden um Steckdosen über den Lightify Gateway zu steuern.

Attribute

Die Klasse TSS::Osram::Lightify::Plug besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Fehlertext      : ".$gobjObject->{"error"}."\n";
print "Gateway         : ".$gobjObject->{"gateway"}."\n"; # Übergeordnetes Objekt TSS::Osram::Lightify
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n" if (defined($gprtarrDevices->[0]->{"devicetype"}));
print "Datenqualität   : ".$gobjDevice->{"quality"}."\n";
print "Firmwareversion : ".$gobjDevice->{"version"}."\n" if (defined($gprtarrDevices->[0]->{"version"}));
print "Onlinestatus    : ".$gobjDevice->{"online"}."\n";
print "Gruppen-ID      : ".$gobjDevice->{"group"}."\n" if (defined($gprtarrDevices->[0]->{"group"}));
print "Power-Status    : ".$gobjDevice->{"status"}."\n";

Einige der Attribute sind optional und nur vorhanden, wenn die Steckdose diese unterstützen.

Methoden zur Statusausgabe

Neben den Attributen besitzt die Klasse TSS::Osram::Lightify::Plug auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Name        : ".$gobjDevice->name()."\n";
print "Device-ID   : ".$gobjDevice->deviceid()."\n";
print "Devicetype  : ".$gobjDevice->devicetype()."\n";
print "Version     : ".$gobjDevice->version()."\n";
print "Online      : ".$gobjDevice->online()."\n";
print "Gruppe      : ".$gobjDevice->group()."\n";
print "Status      : ".$gobjDevice->status()."\n";
print "Devicestate : ".$gobjDevice->devicestate()."\n";

Alle Geräteinformationen neu einlesen

Durch die Methode $gobjObject->devicestate() werden alle Informationen der Steckdose neu eingelesen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gintResult=$gobjObject->readDeviceInfo();
if (! defined($gintResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

Die Steckdose ein- / ausschalten

Die Methode $gobjObject->setPower("<0=aus / 1=ein>") schaltet die Steckdose ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setPower("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='olp0123456789abcdef' status='0' />

Die Klasse TSS::Osram::Lightify::Group

Die TSS::Osram::Lightify::Group Klasse bündelt alle Attribute und Methoden um Gruppen über den Lightify Gateway zu steuern.

Attribute

Die Klasse TSS::Osram::Lightify::Group besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Fehlertext      : ".$gobjObject->{"error"}."\n";
print "Gateway         : ".$gobjObject->{"gateway"}."\n"; # Übergeordnetes Objekt TSS::Osram::Lightify
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n" if (defined($gobjDevice->{"devicetype"}));
print "Datenqualität   : ".$gobjDevice->{"quality"}."\n";
print "Firmwareversion : ".$gobjDevice->{"version"}."\n" if (defined($gobjDevice->{"version"}));
print "Onlinestatus    : ".$gobjDevice->{"online"}."\n";
print "Gruppen-ID      : ".$gobjDevice->{"group"}."\n" if (defined($gobjDevice->{"group"}));
print "Power-Status    : ".$gobjDevice->{"status"}."\n";
print "Helligkeit      : ".$gobjDevice->{"brightness"}."\n";
print "Farbtemperatur  : ".$gobjDevice->{"temperature"}."\n";
print "Rotwert         : ".$gobjDevice->{"red"}."\n";
print "Grünwert        : ".$gobjDevice->{"green"}."\n";
print "Blauwert        : ".$gobjDevice->{"blue"}."\n";
print "Weisswert       : ".$gobjDevice->{"alpha"}."\n";

Einige der Attribute sind optional und nur vorhanden, wenn die Gruppe diese unterstützen.

Neben den Attributen besitzt die Klasse TSS::Osram::Lightify::Group auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

print "Name        : ".$gobjDevice->name()."\n";
print "Device-ID   : ".$gobjDevice->deviceid()."\n";
print "Devicetype  : ".$gobjDevice->devicetype()."\n";
print "Version     : ".$gobjDevice->version()."\n";
print "Online      : ".$gobjDevice->online()."\n";
print "Gruppe      : ".$gobjDevice->group()."\n";
print "Status      : ".$gobjDevice->status()."\n";
print "Brightness  : ".$gobjDevice->brightness()."\n";
print "Temperature : ".$gobjDevice->temperature()."\n";
print "Color       : ".$gobjDevice->rgbw()."\n";
print "Devicestate : ".$gobjDevice->devicestate()."\n";

Alle Geräteinformationen neu einlesen

Durch die Methode $gobjObject->devicestate() werden alle Informationen der Gruppe neu eingelesen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gintResult=$gobjObject->readDeviceInfo();
if (! defined($gintResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

Die Gruppe ein- / ausschalten

Die Methode $gobjObject->setPower("<0=aus / 1=ein>") schaltet die Gruppe ein bzw. aus.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setPower("<0=aus / 1=ein>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='olg0100' status='0' />

Helligkeit der Gruppe ändern

Die Methode $gobjObject->setBrightness("<0-100>") ändert die Helligkeit der Gruppe.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setBrightness("<0-100>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='olg0100' brightness='80' />

Farbtemperatur der Gruppe ändern

Die Methode $gobjObject->setCT("<6500-2200>") ändert die Farbtemperatur der Gruppe.

Diese Methode ist nur bei Gruppen wirksam, welche die Einstellung der Farbtemperatur unterstützen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setCT("<6500-2200>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='olg0100' ct='6500' />

Farbe der Gruppe über den RGBW-Wert ändern

Die Methode $gobjObject->setRGBW("<0-255,0-255,0-255,0-255>") ändert die Farbe der Gruppe.

Diese Methode ist nur bei Gruppen wirksam, welche die Einstellung der Farbe unterstützen.

#!/usr/bin/perl

use TSS::Osram::Lightify;

my $gobjGateway = TSS::Osram::Lightify->new( host => "<IP-Adresse>" );

my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }

my $gstrResult=$gobjObject->setRGBW("<0-255,0-255,0-255,0-255>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='olg0100' rgbw='255,0,0,255' />

Copyright & Gewährleistung

Copyright (C) 2019 Thomas Schütz-Schneider

Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.

Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, siehe <https://www.gnu.org/licenses/>.

Download

(Checksum 3248544616)