Aus Raspberry Pi Geek 02/2019

Smarte Leuchtmittel helligkeitsabhängig ansteuern mit dem RasPi (Seite 2)

Listing 2

#include <wiringPiI2C.h>
#include <stdio.h>
int main (void) {
  int handle = wiringPiI2CSetup(0x23) ;
  wiringPiI2CWrite(handle,0x10);
  sleep(1);
  int word=wiringPiI2CReadReg16(handle,0x00);
  int lux=((word & 0xff00)>>8) | ((word & 0x00ff)<<8);
  printf("%d \n",lux);
  return 0 ;
}

Listing 3

$ cc lux.c -lwiringPi
$ mv a.out lux && chmod 755 lux

Ikea Trådfri ansteuern

Das Ikea-Gateway soll vom RasPi Kommandos entgegennehmen und an die Leuchtmittel durchreichen. Dazu nutzen Sie die Bibliothek Libcoap. Das Constrained Application Protocol CoAP dient zur Maschine-Maschine-Kommunikation. Die Installation erledigen Sie mit den Kommandos aus Listing 4.

Listing 4

$ sudo pip install tqdm
$ 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 && sudo make install

Im nächsten Schritt erzeugen Sie einen Pre-shared Key, mit dem sich der Client dem Gateway gegenüber ausweist (Listing 5, erste Zeile). Der Bezeichner (tradfri-wz) lässt sich frei wählen, die Zeichenkette laskuhgoACBUWHG dient als Sicherheitsschlüssel. Sie finden sie auf einem Aufkleber an der Unterseite des Gateways.

Nach dem Ausführen des Kommandos gibt das Gateway einen Schlüssel zurück (zweite Zeile).Im Beispiel handelt es sich bei der Zeichenkette ANKKUc5tbOAEjIY1 um den Pre-shared Key; den Rest der Rückgabe benötigen Sie nicht. Jetzt besitzen Sie das Werkzeug, um die Leuchtmittel zu steuern.

Listing 5

$ coap-client -m post -u "Client_identity" -k "laskuhgoACBUWHG" -e '{"9090":"tradfri-wz"}' "coaps://10.0.0.42:5684/15011/9063"
{"9091":"ANKKUc5tbOAEjIY1","9029":"1.2.0042"}
$ coap-client -m put -u "tradfri-wz" -k "ANKKUc5tbOAEjIY1" -e '{ "3311": [{ "5850": 0 }] }' "coaps://10.0.0.42:5684/15001/65537"

Die auf Maschine-zu-Maschine-Kommunikation optimierte Libcoap hat eine für Menschen recht sperrige Syntax: Das Kommando aus der letzten Zeile von Listing 5 schaltet beispielsweise ein Leuchtmittel aus. Den Identifikationsstring tradfri-wz kennen Sie bereits, hinter -k gehört der eben generierte Schlüssel.

Die 3311 ist der Code für einen Aktor, in diesem Fall ein Dimmer. Bei 5850 handelt es sich um den Befehl für das Ein- oder Ausschalten, gefolgt von 0 für “aus” oder 1 für “ein”. Das Gateway sprechen Sie unter seiner IP-Adresse (10.0.0.42) über den Port 5684 an.

Die 15001 bedeutet, dass das Kommando ein einzelnes Leuchtmittel anspricht, 15004 würde dagegen eine Gruppe adressieren. Die letzte Zahl 65537 identifiziert das erste angelernte Leuchtmittel, weitere erhalten aufsteigend 65538, 65539 und so fort.

Python-Wrapper

Erfreulicherweise gibt es einen Python-Wrapper, der die Libcoap-Aufrufe wesentlich erleichtert. Sie installieren ihn mit wenigen Kommandos (Listing 6). Anschließend legen Sie im Verzeichnis ikea-smartlight/ eine Datei namens tradfri.cfg an. Sie enthält die IP-Adresse des Gateways, die ID-Zeichenkette des Clients sowie den Pre-shared Key (Listing 7).

Listing 6

$ cd
$ git clone https://github.com/hvanderlaan/ikea-smartlight
$ cd ikea-smartlight

Listing 7

[tradfri]
hubip = 10.0.0.42
apiuser = tradfri-wz
apikey = ANKKUc5tbOAEjIY1

Jetzt stehen simple Kommandos zum Steuern und zur Statusabfrage zur Verfügung. Abbildung 6 zeigt das Resultat eines Aufrufs von tradfri-status.py: Es wurden 13 zu einer Gruppe zusammengefasste Leuchtmittel gefunden. Jedes davon hat, beginnend mit 65537, eine eindeutige ID; in der App lässt sich zusätzlich ein sprechender Name vergeben.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben