Aus Linux-Magazin 11/2018

Aus dem Alltag eines Sysadmin: Hue-Helligkeitssteuerung am Raspi

Abbildung 1: Im Gehäuse wohnt ein Raspberry Pi Zero, heraus schaut ein 7-Segment-Display. Rechts oben im Bild ist die eingespannte Platine des Helligkeitssensors zu sehen.

Seit seinem Trådfri-Smarthome-Artikel vor rund einem Jahr bekommt Sysadmin-Kolumnist Charly Mails mit zwei Fragen: Geht das auch mit dem Hue-System von Philips? Und: Lässt sich das auch mit einem normalen Helligkeitssensor bewerkstelligen? Zweimal: ja!

In der Ausgabe 07/2017 beschrieb ich, wie ich in meinem Wohnzimmer smartes Licht mit Ikeas Trådfri-System per Linux steuere. Je dämmriger es wird, desto heller regele ich die Leuchten. Zwei Ausgaben später hat dann Martin Loschwitz erklärt, wie er mit einem Raspberry Pi und einem Sendemodul Hue- und andere Zigbee-Geräte steuert [1].

Jetzt lege ich wieder nach, und zwar ohne Zigbee-Modul, dafür erwarte ich, dass eine Hue-Bridge vorhanden ist, die bei Martins Ansatz entfallen kann. Und weil nicht jeder eine Photovoltaik-Anlage auf dem Dach hat, setze ich diesmal einen simplen Helligkeitssensor in Szene.

Los geht’s: Zuerst finde ich heraus, wie die IP-Adresse meiner Hue-Bridge lautet: 10.0.0.8. Dann drücke ich den Knopf auf der Bridge und gebe auf einer Konsole

curl --data "{\"devicetype\": \"huewz\"}" http://10.0.0.8/api

ein. Der String »huewz« (für “Hue Wohnzimmer”) ist frei wählbar. Dabei erhalte ich eine Ausgabe wie:

[{"success":{"username":"T3VGtGWmFUgJwHufxkudY1bizvqoZMhCSqu1ySwm"}}]

Die unaussprechliche Zeichenkette ist ein Authentifizierungsstring, den ich künftig bei jedem Aufruf angeben muss. Eine (unübersichtliche) Liste aller angeschlossenen Geräte liefert mir das Kommando:

curl --request GET 10.0.0.8/api/T3VGtGWmFUgJwHufxkudY1bizvqoZMhCSqu1ySwm

Brauche ich nur Informationen über Lampen, so hänge ich »/lights« an das Kommando an oder »/lights/1«, »/lights/2« und so weiter pro Leuchtmittel. Das folgende Kommando schaltet Lampe 1 auf mittlere Helligkeit (Wert 125):

curl --request PUT --data "{\"bri\":125}" 10.0.0.8/api/T3VGtGWmFUgJwHufxkudY1bizvqoZMhCSqu1ySwm/lights/1/state

Als Helligkeitssensor benutze ich ein 2-Euro-Modul namens BH 1750 (etwa von [2]). Das schließe ich an den I2C-Bus eines Raspberry Pi an (Abbildung 1). Ich benutze das Modell Zero W mit WLAN – es muss ja mit der Bridge kommunizieren.

Lux-Auge

Raspian bringt fast alles Notwendige mit, nur einige Pakete muss ich nachholen:

sudo apt install build-essential wiringpi i2c-tools python-smbus

Das Programm in Listing 1 liest den Sensor aus. Ich kompiliere und taufe es »lux«:

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

Wer »lux« ausführt, kriegt den aktuellen Photosensor-Messwert in Lux geliefert. Abhängig davon kann er nun seine smarten Leuchten regeln.

Listing 1

lux.c

01 #include <wiringPiI2C.h>
02 #include <stdio.h>
03 int main (void) {
04   int handle = wiringPiI2CSetup(0x23) ;
05   wiringPiI2CWrite(handle,0x10);
06   sleep(1);
07   int word=wiringPiI2CReadReg16(handle,0x00);
08   int lux=((word & 0xff00)>>8) | ((word & 0x00ff)<<8);
09   printf("%d \n",lux);
10   return 0 ;
11 }

Infos

  1. M. Loschwitz, “Zigbee-Geräte mit dem Raspberry Pi steuern”: Linux-Magazin 09/17, S. 76
  2. Debo BH 1750: https://www.reichelt.de/entwicklerboards-digitaler-lichtsensor-debo-bh-1750-p224217.html
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben