Um in meinem Tommatic Projekt die Steuerung von Philips Hue Geräten über die Hue Bridge zu ermöglichen habe ich mich mit der Hue API beschäftigt. Die dabei entstandenen Perl-Klassen können auch ohne Tommatic zur Kommunikation mit der Hue Bridge verwendet werden.
Zum gegenwärtigen Zeitpunkt werden Lampen, Gruppen (Räume, Zonen) und Steckdosen unterstützt. Bei den Lampen und Gruppen wird neben dem Status auch die Helligkeit, Farbtemperatur und Farbe über den xyY oder den HSV-Farbraum - in Abhängigkeit der verwendeten Geräte - unterstützt.
Die Versionen der Perl-Modulen der Klassen kann wie folgt ausgegeben werden:
#!/usr/bin/perl
use TSS::Philips::Hue;
print "Version Hue.pm : ".$TSS::Philips::Hue::VERSION."\n";
print "Version Light.pm : ".$TSS::Philips::Hue::Light::VERSION."\n";
print "Version Group.pm : ".$TSS::Philips::Hue::Group::VERSION."\n";
print "Version Common.pm: ".$TSS::Philips::Hue::Common::VERSION."\n";
Um mit einer Hue Bridge kommunizieren zu können muss ein Benutzer vorhanden und dessen Preshared Key bekannt sein.
Ist noch kein Benutzer angelegt oder der Preshared Key nicht bekannt, so kann mit dem folgenden Snippet ein Benutzer angelegt werden.
Vor dem Ausführen des Snippets muss die Taste der Bridge kurz gedrückt werden.
Als <IP-Adresse> wird die IP-Adresse der Philips Hue Bridge und als <Benutzername> ein beliebiger Name eingetragen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
username => "<Benutzername>",
presharedkey => "" );
print "Presared Key: ".$gobjGateway->{"presharedkey"}."\n";
Als Ergebnis wird der Preshared Key des Benutzers ausgegeben. Dieser Preshared Key wird dann bei jeder Kommunikation mit der Bridge angegeben.
Um mit einer Hue Bridge zu kommunizieren muss eine Instanz der Klasse TSS::Philips:Hue erzeugt werden.
Als <IP-Adresse> wird die IP-Adresse der Philips Hue Bridge und als <Preshared Key> der zuvor einmal erstellte Preshared Key eingetragen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
username => "",
presharedkey => "<Preshared Key>" );
Zur Unterscheidung zu welcher Klasse ein Gerät gehört wird der Hue Bridge internen ID ein Präfix vorangestellt:
<Präfix><Hue Bridge internen ID>
Die folgenden Präfixe sind vorhanden:
phl = Lampen (l=light)
php = Steckdosen (p=Plug)
phg = Gruppen (g=group)
Die TSS::Philips::Hue Klasse bündelt alle Methoden um Lampen, Gruppen und Steckdosen über die Hue Bridge zu steuern.
Die Klasse TSS::Philips:Hue besitzt die folgenden Attribute:
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
print "Fehlermeldung :'".$gobjGateway->{"error"}."'\n";
print "IP-Adresse :'".$gobjGateway->{"host"}."'\n";
print "Benutzername :'".$gobjGateway->{"username"}."'\n";
print "Preshared Key :'".$gobjGateway->{"presharedkey"}."'\n";
$gobjGateway->{"error"}> enthält eine Fehlermeldung nach dem ein Fehler aufgetreten ist.
$gobjGateway->{"host"}> enthält die IP-Adresse der Hue Bridge.
$gobjGateway->{"username"} wird nur beim Anlegen eines neuen Benutzers in der Hue Bridge angegeben. Für die Kommunikation mit einem vorhandenen Preshared Key muss kein Benutzername angegeben werden.
$gobjGateway->{"presharedkey"} enthält den Preshared Key zur Kommunikation mit der Hue Bridge.
Mit der Methode $gobjGateway->listObjects() werden alle Lampen, Gruppen und Steckdosen aus der Hue Bridge 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::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
<datapoint deviceid='phl2' name='Schlafzimmer' devicetype='LCA001' online='0' status='0' brightness='131' ct='500' xyY='0.5266,0.4133,131' hsv='8418,140,254' />
...
Die Methode $gobjGateway->getDeviceInfo("<Geräte-ID>") liest das durch die Geräte-ID angegebene Gerät aus der Hue Bridge aus.
Auch hier wird ein Objekt, welches das Gerät repräsentiert, zurück gegeben.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die Methode $gobjGateway->setPowerAll("<0=aus / 1=ein>") schaltet alle Lampen und Steckdosen ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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' />
Die Methode $gobjGateway->setPowerAllLights("<0=aus / 1=ein>") schaltet nur alle Lampen ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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' />
Die Methode $gobjGateway->setPowerAllPlugs("<0=aus / 1=ein>") schaltet nur alle Steckdosen ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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' />
Die Methode $gobjGateway->setPowerAllGroups("<0=aus / 1=ein>") schaltet nur alle Gruppen ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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' />
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::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die Methode $gobjGateway->setBrightness("<Geräte-ID>","<0-254>") ä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::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->setBrightness("<Geräte-ID>","<0-254>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "$gobjObject\n";
Beispielausgabe des Geräte-Objektes im scalaren Kontext:
<datapoint deviceid='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die Methode $gobjGateway->setCT("<Geräte-ID>","<153-500>") ä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::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->setCT("<Geräte-ID>","<153-500>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "$gobjObject\n";
Beispielausgabe des Geräte-Objektes im scalaren Kontext:
<datapoint deviceid='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die Methode $gobjGateway->setXYY("<Geräte-ID>","<0.0000-1.0000,0.0000-1.0000,0-254>") ä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::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->setXYY("<Geräte-ID>","<0.0000-1.0000,0.0000-1.0000,0-254>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "$gobjObject\n";
Beispielausgabe des Geräte-Objektes im scalaren Kontext:
<datapoint deviceid='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die Methode $gobjGateway->setHsv("<Geräte-ID>","<0-65535,0-254,0-254>") ä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. Die Hue Bridge gibt zwar für alle Geräte, bei denen die Farbe geändert werden kann, einen HSV-Wert zurück. Es lassen sich jedoch nicht alle Lampen über den HSV-Wert einstellen. Besonders bei Fremdherstellern ist die Einstellung über den xyY-Wert sicherer.
Hier wird wieder ein Objekt, welches das Gerät repräsentiert, zurück gegeben.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->setHsv("<Geräte-ID>","<0-65535,0-254,0-254>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "$gobjObject\n";
Beispielausgabe des Geräte-Objektes im scalaren Kontext:
<datapoint deviceid='phl1' name='Wohnzimmer' devicetype='TRADFRI bulb E27 CWS opal 600lm' online='0' status='0' brightness='131' ct='345' xyY='0.4444,0.4065,131' hsv='8418,140,254' />
Die TSS::Philips::Hue::Light Klasse bündelt alle Attribute und Methoden um Lampen und Steckdosen über die Hue Bridge zu steuern.
Die Klasse TSS::Philips:Hue::Light besitzt die folgenden Attribute:
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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::Philips::Hue
print "Geräte-ID : ".$gobjObject->{"deviceid"}."\n";
print "Gerätetyp : ".$gobjObject->{"type"}."\n";
print "Gerätename : ".$gobjObject->{"name"}."\n";
print "Gerätebezeichnung : ".$gobjObject->{"devicetype"}."\n";
print "Hersteller : ".$gobjObject->{"manufacturername"}."\n";
print "Produktname : ".$gobjObject->{"productname"}."\n";
print "Eindeutige ID : ".$gobjObject->{"uniqueid"}."\n";
print "Softwareversion : ".$gobjObject->{"version"}."\n";
print "Onlinestatus : ".$gobjObject->{"online"}."\n";
print "Power-Status : ".$gobjObject->{"status"}."\n";
print "Helligkeit : ".$gobjObject->{"brightness"}."\n" if (defined($gobjObject->{"brightness"}));
print "Farbton : ".$gobjObject->{"hue"}."\n" if (defined($gobjObject->{"hue"}));
print "Sättigung : ".$gobjObject->{"saturation"}."\n" if (defined($gobjObject->{"saturation"}));
print "Effekt : ".$gobjObject->{"effect"}."\n" if (defined($gobjObject->{"effect"}));
print "Alarm : ".$gobjObject->{"alert"}."\n" if (defined($gobjObject->{"alert"}));
print "Modus : ".$gobjObject->{"mode"}."\n" if (defined($gobjObject->{"mode"}));
print "Farbe X : ".$gobjObject->{"colorx"}."\n" if (defined($gobjObject->{"colorx"}));
print "Farbe Y : ".$gobjObject->{"colory"}."\n" if (defined($gobjObject->{"colory"}));
print "Farbtempeatur : ".$gobjObject->{"ct"}."\n" if (defined($gobjObject->{"ct"}));
print "Letzte Farbeinstellung : ".$gobjObject->{"colormode"}."\n" if (defined($gobjObject->{"colormode"}));
Einige der Attribute sind optional und nur vorhanden, wenn die Lampe oder die Steckdose diese unterstützen.
Neben den Attributen besitzt die Klasse TSS::Philips:Hue::Light auch Funktionen um einen Status abzufragen:
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "Gerätename : ".$gobjObject->name()."\n";
print "Geräte-ID : ".$gobjObject->deviceid()."\n";
print "Gerätetyp : ".$gobjObject->devicetype()."\n";
print "Version : ".$gobjObject->version()."\n";
print "Onlinestatus : ".$gobjObject->online()."\n";
print "Power-Status : ".$gobjObject->status()."\n";
print "Helligkeit : ".$gobjObject->brightness()."\n";
print "Farbtempeatur : ".$gobjObject->ct()."\n";
print "Farbe xxY : ".$gobjObject->xyy()."\n";
print "Farbe HSV : ".$gobjObject->hsv()."\n";
print "Gesamtstatus : ".$gobjObject->devicestate()."\n";
Durch die Methode $gobjObject->devicestate() werden alle Informationen der Lampe oder Steckdose neu eingelesen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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 Methode $gobjObject->setPower("<0=aus / 1=ein>") schaltet das Gerät ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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='phl1' status='0' />
Die Methode $gobjObject->setBrightness("<0-254>") ändert die Helligkeit des Gerätes.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setBrightness("<0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phl1' brightness='131' />
Die Methode $gobjObject->setCT("<153-500>") ändert die Farbtemperatur des Gerätes.
Diese Methode ist nur bei Lampen oder Gruppen wirksam, welche die Einstellung der Farbtemperatur unterstützen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setCT("<153-500>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phl1' ct='347' />
Die Methode $gobjObject->setXYY("<0.0000-1.0000,0.0000-1.0000,0-254>") ändert die Farbe des Gerätes.
Diese Methode ist nur bei Lampen wirksam, welche die Einstellung der Farbe unterstützen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setXYY("<0.0000-1.0000,0.0000-1.0000,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phl1' xyY='0.4452,0.4068,131' />
Die Methode $gobjObject->setHsv("<0-65535,0-254,0-254>") ändert die Farbe des Gerätes.
Diese Methode ist nur bei Lampen wirksam, welche die Einstellung der Farbe unterstützen. Die Hue Bridge gibt zwar für alle Geräte, bei denen die Farbe geändert werden kann, einen HSV-Wert zurück. Es lassen sich jedoch nicht alle Lampen über den HSV-Wert einstellen. Besonders bei Fremdherstellern ist die Einstellung über den xyY-Wert sicherer.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setHsv("<0-65535,0-254,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phl1' hsv='0,254,63' />
Die TSS::Philips::Hue::Group Klasse bündelt alle Attribute und Methoden um Gruppen über die Hue Bridge zu steuern.
Die Klasse TSS::Philips:Hue::Group besitzt die folgenden Attribute:
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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::Philips::Hue
print "Geräte-ID : ".$gobjObject->{"deviceid"}."\n";
print "Gerätebezeichnung : ".$gobjObject->{"name"}."\n";
print "Gerätetyp : ".$gobjObject->{"devicetype"}."\n";
print "Gerätename : ".$gobjObject->{"name"}."\n";
print "Automatisches löschen : ".$gobjObject->{"recycle"}."\n";
print "Zugeordnete Lampen : ".join(" ,",@{$gobjObject->{"lights"}})."\n";
print "Zugeordnete Sensoren : ".join(" ,",@{$gobjObject->{"sensors"}})."\n";
print "Status aller Lampen : ".$gobjObject->{"state_all"}."\n";
print "Power-Status : ".$gobjObject->{"status"}."\n";
print "Helligkeit : ".$gobjObject->{"brightness"}."\n" if (defined($gobjObject->{"brightness"}));
print "Farbton : ".$gobjObject->{"hue"}."\n" if (defined($gobjObject->{"hue"}));
print "Sättigung : ".$gobjObject->{"saturation"}."\n" if (defined($gobjObject->{"saturation"}));
print "Effekt : ".$gobjObject->{"effect"}."\n" if (defined($gobjObject->{"effect"}));
print "Alarm : ".$gobjObject->{"alert"}."\n" if (defined($gobjObject->{"alert"}));
print "Farbe X : ".$gobjObject->{"colorx"}."\n" if (defined($gobjObject->{"colorx"}));
print "Farbe Y : ".$gobjObject->{"colory"}."\n" if (defined($gobjObject->{"colory"}));
print "Farbtempeatur : ".$gobjObject->{"ct"}."\n" if (defined($gobjObject->{"ct"}));
print "Letzte Farbeinstellung : ".$gobjObject->{"colormode"}."\n" if (defined($gobjObject->{"colormode"}));
Einige der Attribute sind optional und nur vorhanden, wenn die Gruppe diese unterstützen.
Neben den Attributen besitzt die Klasse TSS::Philips:Hue::Group auch Funktionen um einen Status abzufragen:
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
print "Gerätename : ".$gobjObject->name()."\n";
print "Geräte-ID : ".$gobjObject->deviceid()."\n";
print "Gerätetyp : ".$gobjObject->devicetype()."\n";
print "Status aller Lampen : ".$gobjObject->status_all()."\n";
print "Power-Status : ".$gobjObject->status()."\n";
print "Helligkeit : ".$gobjObject->brightness()."\n";
print "Farbtempeatur : ".$gobjObject->ct()."\n";
print "Farbe xxY : ".$gobjObject->xyy()."\n";
print "Farbe HSV : ".$gobjObject->hsv()."\n";
print "Gesamtstatus : ".$gobjObject->devicestate()."\n";
Durch die Methode $gobjObject->devicestate() werden alle Informationen der Gruppe neu eingelesen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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 Methode $gobjObject->setPower("<0=aus / 1=ein>") schaltet die Gruppe ein bzw. aus.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
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='phg1' status='0' />
Die Methode $gobjObject->setBrightness("<0-254>") ändert die Helligkeit der Gruppe.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setBrightness("<0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phg1' brightness='131' />
Die Methode $gobjObject->setCT("<153-500>") ändert die Farbtemperatur der Gruppe.
Diese Methode ist nur bei Gruppen wirksam, welche die Einstellung der Farbtemperatur unterstützen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setCT("<153-500>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phg1' ct='347' />
Die Methode $gobjObject->setXYY("<0.0000-1.0000,0.0000-1.0000,0-254>") ändert die Farbe der Gruppe.
Diese Methode ist nur bei Gruppen wirksam, welche die Einstellung der Farbe unterstützen.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setXYY("<0.0000-1.0000,0.0000-1.0000,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phg1' xyY='0.4452,0.4068,131' />
Die Methode $gobjObject->setHsv("<0-65535,0-254,0-254>") ändert die Farbe der Gruppe.
Diese Methode ist nur bei Lampen wirksam, welche die Einstellung der Farbe unterstützen. Die Hue Bridge gibt zwar für alle Geräte, bei denen die Farbe geändert werden kann, einen HSV-Wert zurück. Es lassen sich jedoch nicht alle Lampen über den HSV-Wert einstellen. Besonders bei Fremdherstellern ist die Einstellung über den xyY-Wert sicherer.
#!/usr/bin/perl
use TSS::Philips::Hue;
my $gobjGateway = TSS::Philips::Hue->new( host => "<IP-Adresse>",
presharedkey => "<Preshared Key>" );
my $gobjObject=$gobjGateway->getDeviceInfo("<Geräte-ID>");
if (! defined($gobjObject)) { print "Fehler:'".$gobjGateway->{"error"}."'\n"; exit(1); }
my $gstrResult=$gobjObject->setHsv("<0-65535,0-254,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }
print "$gstrResult\n";
Beispielausgabe:
<datapoint deviceid='phg1' hsv='0,254,63' />
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/>.