Perl Modul zur Steuerung von Ikea Tradfri Geräten

Ikea Tradfri ist günstig und eine Insellösung und braucht keine Internetverbindung. Warum nicht auch Tradfri mit meinem Tommatic Projekt steuern?
Leider gibt es auch hier keine offizielle API. Aber Glenn de Haan's GitHub "IKEA Tradfri COAP Docs" hilft weiter.

Diese Dokumentation ist dir Grundlage meiner Umsetzung in Perl-Klassen.

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 die fixen Werte von Tradfri aber auch über den xyY- und HSV-Farbraum - in Abhängigkeit der verwendeten Geräte - unterstützt.

Im Gegensatz zu meinen Perl-Modulen für Tradfri und Hue kommt dieses Perl-Modul nicht ohne Hilfe eines Coap-Client mit DTLS aus. In Debian gibt es ein Paket mit einem Coap-Client, dieser unterstützt zurzeit aber kein DTLS. Daher muss der Coap-Client aus anderer Quelle bezogen werden.
Die Installation des Coap-Client ist nachfolgend beschrieben.

Verwendung

Abhängigkeiten

Perl-Module
  • JSON::Parse 'parse_json'
Sonstiges
  • Coap-Client mit DTLS

Installation Coap-Client mit DTLS

git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
cd libcoap
./autogen.sh
./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
make
make install

Versionen ausgeben

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

print "Version Tratfri.pm: ".$TSS::Ikea::Tradfri::VERSION."\n";
print "Version Light.pm  : ".$TSS::Ikea::Tradfri::Light::VERSION."\n";
print "Version Plug.pm   : ".$TSS::Ikea::Tradfri::Plug::VERSION."\n";
print "Version Group.pm  : ".$TSS::Ikea::Tradfri::Group::VERSION."\n";
print "Version Remote.pm : ".$TSS::Ikea::Tradfri::Remote::VERSION."\n";
print "Version Common.pm : ".$TSS::Ikea::Tradfri::Common::VERSION."\n";

Preshared Key im Tradfri Gateway anlegen

Um mit einem Tradfri Gateway 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.

Wird ein Preshared Key nicht benutzt, so wird er nach 6 Wochen ungültig.

Als <IP-Adresse> wird die IP-Adresse des Tradfri Gateways, als <Benutzername> ein beliebiger Name und als <Gatewaycode> der Gatewaycode, der auf dem Gateway aufgedruckt ist, angegeben.

#!/usr/bin/perl

use TSS::Philips::Hue;

my $gobjGateway = TSS::Philips::Hue->new( host => <IP-Adresse>, 
                                          username => <Benutzername>,
                                          gatewaycode => <Gatewaycode>,
                                          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 dem Gateway angegeben.

Erzeugen einer Instanz der Klasse TSS::Ikea::Tradfri

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

Als <IP-Adresse> wird die IP-Adresse des Ikea Tradfri Gateway, als <Benutzername> der ausgewählte Name und als <Preshared Key> der zugehörige Preshared Key eingetragen.

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

Aufbau der Geräte-IDs

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

<Präfix><Tradfri Gateway internen ID>

Die folgenden Präfixe sind vorhanden:

itfl  = Lampen (l=light)
itfp = Steckdosen (p=Plug)
itfg = Gruppen (g=group)
itfr  = Fernbedienungen (r=remote)

Die Klasse TSS::Ikea::Tradfri

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

Attribute

Die Klasse TSS::Ikea::Tradfri besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

print "Fehlermeldung :'".$gobjGateway->{"error"}."'\n";
print "IP-Adresse    :'".$gobjGateway->{"host"}."'\n";
print "Benutzername  :'".$gobjGateway->{"username"}."'\n";
print "Gateway-Code  :'".$gobjGateway->{"gatewaycode"}."'\n";
print "Gateway-Key   :'".$gobjGateway->{"presharedkey"}."'\n";
print "Geräteliste   :'".$gobjGateway->{"devices"}."'\n";

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

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

$gobjGateway->{"username"} enthält den Benutzername des Tradfri Gateway Benutzer.

$gobjGateway->{"gatewaycode"} wird nur beim Anlegen eines neuen Benutzers im Tradfri Gateway angegeben. Für die Kommunikation mit einem vorhandenen Preshared Key muss der Gatewaycode nicht agegeben werden.

$gobjGateway->{"presharedkey"} enthält den Preshared Key zur Kommunikation mit dem Tradfri Gateway.

$gobjGateway->{"devices"} enthält ein Hash mit allen Tradfri-IDs (Key) und Typ (Value). Gruppen werden hier nicht abgelegt. Die Tradfri-Id's werden ohne Präfix (it[x]) abgelegt.

Gesamtstatus aller Geräte ausgeben

Mit der Methode $gobjGateway->listObjects() werden alle Lampen, Gruppen und Steckdosen aus dem Tradfri 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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />
<datapoint deviceid='itfl12346' name='Schlafzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />
...

Gesamtstatus eines Gerätes ausgeben

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

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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' />

Alle Lampen ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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' />

Alle Steckdosen ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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' />

Alle Gruppen ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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' />

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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

Helligkeit eines Gerätes ändern

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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

Farbtemperatur eines Gerätes über Fixe Tradfri Werte ändern

Die Methode $gobjGateway->setTemperature("<Geräte-ID>","<1-3>") ä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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

Farbtemperatur eines Gerätes ändern

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 Farbe unterstützen.

Mit dieser Methode wird die Änderung der Farbtemperatur über den ct-Wert emuliert, da Tradfri nur 3 fixe Farbtemperaturen kennt.
Hierzu wird eine Übersetzung von ct-Werten in den xyY-Farbraum vorgenommen.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

Farbe eines Gerätes über Fixe Tradfri Werte ändern

Die Methode $gobjGateway->setColor("<Geräte-ID>","<1-20>") ä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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "$gobjObject\n";

Beispielausgabe des Geräte-Objektes im scalaren Kontext:

<datapoint deviceid='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

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

Die Methode $gobjGateway->setXYY("<Geräte-ID>","<0-65535,0-65535,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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

my $gobjObject=$gobjGateway->setXYY("<Geräte-ID>","<0-65535,0-65535,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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

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

Die Methode $gobjGateway->setHsv("<Geräte-ID>","<0-65535,0-65279,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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

my $gobjObject=$gobjGateway->setHsv("<Geräte-ID>","<0-65535,0-65279,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='itfl12345' name='Wohnzimmer' devicetype='bulb:color,tunable_white,dimmable' online='1' status='1' brightness='66' temperature='2' color='5' xyY='9830,3932,133' hsv='65535,65279,75' />

Die Klasse TSS::Ikea::Tradfri::Light

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

Attribute

Die Klasse TSS::Ikea::Tradfri::Light besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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::Ikea::Tradfri
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n";
print "Anmeldedatum    : ".$gobjDevice->{"created"}."\n";
print "Onlinestatus    : ".$gobjDevice->{"online"}."\n";
print "Letzter kontakt : ".$gobjDevice->{"lastseen"}."\n";
print "Update Status   : ".$gobjDevice->{"updatestate"}."\n";
print "Zugriffstyp     : ".$gobjDevice->{"accessorytype"}."\n";
print "Hersteller      : ".$gobjDevice->{"manufactor"}."\n";
print "Seriennummer    : ".$gobjDevice->{"serialno"}."\n";
print "Firmwareversion : ".$gobjDevice->{"version"}."\n";
print "Stromquelle     : ".$gobjDevice->{"powersource"}."\n";
print "Batteriestand   : ".$gobjDevice->{"batterylevel"}."\n" if (defined($gobjDevice->{"batterylevel"}));
print "Power-Status    : ".$gobjDevice->{"status"}."\n";
print "Helligkeit      : ".$gobjDevice->{"brightness"}."\n";
print "Farbton         : ".$gobjDevice->{"hue"}."\n";
print "Sättigung       : ".$gobjDevice->{"saturation"}."\n";
print "Farbe X         : ".$gobjDevice->{"colorx"}."\n";
print "Farbe Y         : ".$gobjDevice->{"colory"}."\n";
print "Farbe in HEX    : ".$gobjDevice->{"colorhex"}."\n";
print "Subdevice-ID    : ".$gobjDevice->{"subdeviceid"}."\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::Ikea::Tradfri::Light auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "Name           : ".$gobjDevice->name()."\n";
print  "Deviceid      : ".$gobjDevice->deviceid()."\n";
print  "Devicetype    : ".$gobjDevice->devicetype()."\n";
print  "Version       : ".$gobjDevice->version()."\n";
print  "Online        : ".$gobjDevice->online()."\n";
print  "Status        : ".$gobjDevice->status()."\n";
print  "Brightness    : ".$gobjDevice->brightness()."\n";
print  "Temperature   : ".$gobjDevice->temperature()."\n";
print  "Color         : ".$gobjDevice->color()."\n";
print  "Temperaturect : ".$gobjDevice->ct()."\n";
print  "Color xyY     : ".$gobjDevice->xyy()."\n";
print  "Color HSV     : ".$gobjDevice->hsv()."\n";
print  "Batterylevel  : ".$gobjDevice->batterylevel()."\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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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 Lampe ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' status='0' />

Helligkeit der Lampe ändern

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' brightness='80' />

Farbtemperatur der Lampe über Fixe Tradfri Werte ändern

Die Methode $gobjObject->setTemperature("<1-3>") ändert die Farbtemperatur der Lampe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

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

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' temperature='3' />

Farbtemperatur der Lampe ändern

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

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

Mit dieser Methode wird die Änderung der Farbtemperatur über den ct-Wert emuliert, da Tradfri nur 3 fixe Farbtemperaturen kennt.
Hierzu wird eine Übersetzung von ct-Werten in den xyY-Farbraum vorgenommen.

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' ct='153' />

Farbe der Lampe über Fixe Tradfri Werte ändern

Die Methode $gobjObject->setColor("<1-20>") ändert die Farbe der Lampe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

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

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' color='5' />

Farbe der Lampe über den xyY-Wert ändern

Die Methode $gobjObject->setXYY("<0-65535,0-65535,0-254>") ändert die Farbe der Lampe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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-65535,0-65535,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' xyY='9830,3932,133' />

Farbe der Lampe über den HSV-Wert ändern

Die Methode $gobjObject->setHsv("<0-65535,0-65279,0-254>") ändert die Farbe der Lampe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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-65279,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' hsv='43690,65279,75' />

Die Klasse TSS::Ikea::Tradfri::Plug

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

Attribute

Die Klasse TSS::Ikea::Tradfri::Plug besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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::Ikea::Tradfri
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n";
print "Anmeldedatum    : ".$gobjDevice->{"created"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Onlinestatus    : ".$gobjDevice->{"online"}."\n";
print "Letzter kontakt : ".$gobjDevice->{"lastseen"}."\n";
print "Update Status   : ".$gobjDevice->{"updatestate"}."\n";
print "Zugriffstyp     : ".$gobjDevice->{"accessorytype"}."\n";
print "Hersteller      : ".$gobjDevice->{"manufactor"}."\n";
print "Seriennummer    : ".$gobjDevice->{"serialno"}."\n";
print "Firmwareversion : ".$gobjDevice->{"version"}."\n";
print "Stromquelle     : ".$gobjDevice->{"powersource"}."\n";
print "Batteriestand   : ".$gobjDevice->{"batterylevel"}."\n" if (defined($gobjDevice->{"batterylevel"}));
print "Power-Status    : ".$gobjDevice->{"status"}."\n";
print "Subdevice-ID    : ".$gobjDevice->{"subdeviceid"}."\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::Ikea::Tradfri::Plug auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "Name        : ".$gobjDevice->name()."\n";
print "Deviceid    : ".$gobjDevice->deviceid()."\n";
print "Devicetype  : ".$gobjDevice->devicetype()."\n";
print "Version     : ".$gobjDevice->version()."\n";
print "Online      : ".$gobjDevice->online()."\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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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 Steckdose ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfp12345' status='0' />

Die Klasse TSS::Ikea::Tradfri::Group

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

Attribute

Die Klasse TSS::Ikea::Tradfri::Group besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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::Ikea::Tradfri
print "Name              : ".$gobjDevice->{"name"}."\n";
print "Gerätetyp         : ".$gobjDevice->{"devicetype"}."\n";
print "Anmeldedatum      : ".$gobjDevice->{"created"}."\n";
print "Geräte-ID         : ".$gobjDevice->{"deviceid"}."\n";
print "Power-Status      : ".$gobjDevice->{"status"}."\n";
print "Aktiven Szene     : ".$gobjDevice->{"scene"}."\n";
print "Geräte-IDs        : ".join(", ",@{$gobjDevice->{"devices"}})."\n";
print "Farbtemperatur    : ".$gobjDevice->{"temperature"}."\n" if (defined($gobjDevice->{"temperature"}));
print "Farbtemperatur ct : ".$gobjDevice->{"ct"}."\n" if (defined($gobjDevice->{"ct"}));
print "Farbe             : ".$gobjDevice->{"color"}."\n" if (defined($gobjDevice->{"color"}));
print "Farbe HSV-Wert    : ".$gobjDevice->{"hsv"}."\n" if (defined($gobjDevice->{"hsv"}));
print "Farbe xyY-Wert    : ".$gobjDevice->{"xyy"}."\n" if (defined($gobjDevice->{"xyy"}));

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

Neben den Attributen besitzt die Klasse TSS::Ikea::Tradfri::Group auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "Name              : ".$gobjDevice->name()."\n";
print "Deviceid          : ".$gobjDevice->deviceid()."\n";
print "Devicetype        : ".$gobjDevice->devicetype()."\n";
print "Status            : ".$gobjDevice->status()."\n";
print "Brightness        : ".$gobjDevice->brightness()."\n";
print "Scene             : ".$gobjDevice->scene()."\n";
print "Devices           : ".$gobjDevice->devices()."\n";
print "Devicestate       : ".$gobjDevice->devicestate()."\n";
print "Farbtemperatur    : ".$gobjDevice->temperature()."\n";
print "Farbtemperatur ct : ".$gobjDevice->ct()."\n";
print "Farbe             : ".$gobjDevice->color()."\n";
print "Farbe xyY-Wert    : ".$gobjDevice->xyy()."\n";
print "Farbe HSV-Wert    : ".$gobjDevice->hsv()."\n";

Alle Geräteinformationen neu einlesen

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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 Gruppe ein- / ausschalten

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfg12345' status='0' />

Helligkeit der Gruppe ändern

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfg12345' brightness='80' />

Farbtemperatur der Gruppe über Fixe Tradfri Werte ändern

Die Methode $gobjObject->setTemperature("<1-3>") ändert die Farbtemperatur der Gruppe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

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

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' temperature='3' />

Farbtemperatur der Gruppe ändern

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

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

Mit dieser Methode wird die Änderung der Farbtemperatur über den ct-Wert emuliert, da Tradfri nur 3 fixe Farbtemperaturen kennt.
Hierzu wird eine Übersetzung von ct-Werten in den xyY-Farbraum vorgenommen.

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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='itfl12345' ct='153' />

Farbe der Gruppe über Fixe Tradfri Werte ändern

Die Methode $gobjObject->setColor("<1-20>") ändert die Farbe der Gruppe.

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

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

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' color='5' />

Farbe der Gruppe über den xyY-Wert ändern

Die Methode $gobjObject->setXYY("<0-65535,0-65535,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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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-65535,0-65535,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' xyY='9830,3932,133' />

Farbe der Gruppe über den HSV-Wert ändern

Die Methode $gobjObject->setHsv("<0-65535,0-65279,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::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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-65279,0-254>");
if (! defined($gstrResult)) { print "Fehler:\"".$gobjGateway->{"error"}."\"\n"; exit(1); }

print "$gstrResult\n";

Beispielausgabe:

<datapoint deviceid='itfl12345' hsv='43690,65279,75' />

Die Klasse TSS::Ikea::Tradfri::Remote

Die TSS::Ikea::Tradfri::Remote Klasse bündelt alle Attribute und Methoden um Fernbedienungen über den Tradfri Gateway zu monitoren.

Attribute

Die Klasse TSS::Ikea::Tradfri::Remote besitzt die folgenden Attribute:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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::Ikea::Tradfri
print "Name            : ".$gobjDevice->{"name"}."\n";
print "Gerätetyp       : ".$gobjDevice->{"devicetype"}."\n";
print "Anmeldedatum    : ".$gobjDevice->{"created"}."\n";
print "Geräte-ID       : ".$gobjDevice->{"deviceid"}."\n";
print "Onlinestatus    : ".$lobjSelf->{"online"}."\n";
print "Letzter kontakt : ".$lobjSelf->{"lastseen"}."\n";
print "Update Status   : ". $lobjSelf->{"updatestate"}."\n";
print "Zugriffstyp     : ".$lobjSelf->{"accessorytype"}."\n";
print "Hersteller      : ".$lobjSelf->{"manufactor"}."\n";
print "Seriennummer    : ".$lobjSelf->{"serialno"}."\n";
print "Firmwareversion : ".$lobjSelf->{"version"}."\n";
print "Stromquelle     : ". $lobjSelf->{"powersource"}."\n";
print " Batteriestand  : ".$lobjSelf->{"batterylevel"}."\n" if(defined($lobjSelf->{"batterylevel"}));

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

Neben den Attributen besitzt die Klasse TSS::Ikea::Tradfri::Remote auch Funktionen um einen Status abzufragen:

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           presharedkey => <Preshared Key> );

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

print "Name             : ".$gobjDevice->name()."\n";
print "Deviceid         : ".$gobjDevice->deviceid()."\n";
print "Devicetype       : ".$gobjDevice->devicetype()."\n";
print "Version ausgeben : ".$gobjDevice->version()."\n";
print "Erreichbarkeit   : ".$gobjDevice->online()."\n";
print "Batteriestand    : ".$gobjDevice->batterylevel()."\n";
print "Devicestate      : ".$gobjDevice->devicestate()."\n";

Alle Geräteinformationen neu einlesen

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

#!/usr/bin/perl

use TSS::Ikea::Tradfri;

my $gobjGateway = TSS::Ikea::Tradfri->new( host => <IP-Adresse>
                                           username => <Benutzername>,
                                           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); }

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 3051106078)