Startseite>Smarte Leuchtmittel helligkeitsabhängig ansteuern mit dem RasPi
Aus Raspberry Pi Geek 02/2019

Smarte Leuchtmittel helligkeitsabhängig ansteuern mit dem RasPi

© olegdudko, 123RF

Es werde Licht

Charly Kühnast

Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

In Wohnzimmern finden sich oft zwei Arten von Beleuchtungen: Deckenleuchten oder Fluter erzeugen helles Licht zum Lesen der Kärtchen beim Trivial-Pursuit-Abend oder dem Absaugen der Chipskrümel vom Sofa. Leuchten mit niedriger Wattzahl auf Tischen, Kommoden, in Regalen oder auf Fensterbrettern sorgen für ein gemütliches Ambiente beim Kuscheln oder vor der Glotze.

Ein smartes, also per App steuerbares Lichtsystem sorgt dabei dafür, dass man die Leuchten nicht täglich abklappern oder eine Familienpackung Zeitschaltuhren einsetzen muss. Aber auch das schlaue Licht will gelegentlich nachgeregelt werden – heller bei fortschreitender Dämmerung, warmweißes zum Candle-Light-Dinner.

Ein RasPi eignet sich ideal dazu, die Lichtsteuerung weitgehend zu automatisieren. Er steuert dabei die Smartlight-Systeme von Ikea und Philips per Software, wozu er mit einem preiswerten Lux-Sensor eine automatische Helligkeitsnachführung vornimmt.

@Ö:Besitzen Sie schon ein Ikea- oder Philips-Hue-Lichtsystem, das Sie mit einer Handy-App steuern, dann verfügen Sie bereits über eine dieser beiden Steuerzentralen (Abbildung 1). Ikea nennt das Gerät Gateway, bei Philips heißt es Bridge.

Abbildung 1: Gateway und Bridge stellen den Vermittler zwischen den Leuchten und dem Smartphone beziehungsweise dem RasPi dar.

Abbildung 1: Gateway und Bridge stellen den Vermittler zwischen den Leuchten und dem Smartphone beziehungsweise dem RasPi dar.

Beide hängen im heimischen Netzwerk und kommunizieren darüber mit der App. Per ZigBee verteilen sie Kommandos an die Leuchtmittel. Zum Philips-System gibt es eine dokumentierte API, Ikea hat eine solche zumindest angekündigt. Derweil behelfen wir uns mit einer speziellen Bibliothek – dazu später mehr.

Vorbereitung

Bevor es losgeht, müssen Sie zwei Vorarbeiten erledigen. Zum einen aktivieren Sie den I2C-Bus des RasPi, der den Lux-Sensor ausliest, zum anderen installieren Sie noch einige benötigte Software-Pakete nach (Listing 1, die ersten zwei Zeilen).

Um den I2C-Bus zu aktivieren, starten Sie das Programm Raspi-config (Listing 1, letzte Zeile). Es erscheint ein Menü, in dem Sie die Interfacing Options auswählen und dort I2C aktivieren (Abbildung 2).

Listing 1

$ sudo apt update
$ sudo apt install wiringpi i2c-tools python-smbus bc curl build-essential libtool autoconf automake python-pip
$ sudo raspi-config
Abbildung 2: Um den Lichtsensor zu verwenden, m&uuml;ssen Sie vorab den I<sup>2</sup>C-Bus &uuml;ber Raspi-config aktivieren.

Abbildung 2: Um den Lichtsensor zu verwenden, müssen Sie vorab den I2C-Bus über Raspi-config aktivieren.

Lux-Sensor

Um die Umgebungshelligkeit zu messen, benutzen wir in diesem Projekt einen Lux-Sensor vom Typ BH1750. Er kostet bei den üblichen Verdächtigen wie etwa Amazon unter 3 Euro (Abbildung 3).

Abbildung 3: Unser freundlicher Pi-rat h&auml;lt die Vorderseite des Lux-Sensors BH1750 in die Kamera.

Abbildung 3: Unser freundlicher Pi-rat hält die Vorderseite des Lux-Sensors BH1750 in die Kamera.

Das lichtempfindliche Bauteil des Sensors besteht aus dem kleinen schwarzen Rechteck über dem Schriftzug “BH1750”. Der Platine liegt eine Stiftsockelleiste bei, die Sie selbst anlöten müssen. Wie Sie die fünf Pins mit dem RasPi verbinden, zeigt die Tabelle “Anschlüsse”, das fertige Konstrukt sehen Sie in Abbildung 4.

BH1750

RasPi

Anmerkung

VCC

Pin 1

3,3V (Power)

GND

Pin 6

GND (Ground)

SCL

Pin 5

GPIO3 (SCL1)

SDA

Pin 3

GPIO2 (SDA1)

ADDR

Pin 9

GND (Ground)

Abbildung 4: &Uuml;ber f&uuml;nf Kabel verbinden Sie den Lichtst&auml;rkesensor mit dem RasPi.

Abbildung 4: Über fünf Kabel verbinden Sie den Lichtstärkesensor mit dem RasPi.

Ob der Sensor mit dem I2C-Bus spricht, finden Sie über das Kommando i2cdetect -y 1 heraus. Die Ausgabe sollte der aus Abbildung 5 entsprechen, die Adresse 0x23h repräsentiert unseren Sensor.

Abbildung 5: Raspbian hat den Lichtsensor am I<sup>2</sup>C-Bus erkannt und liefert eine entsprechende R&uuml;ckmeldung.

Abbildung 5: Raspbian hat den Lichtsensor am I2C-Bus erkannt und liefert eine entsprechende Rückmeldung.

Ein kleines C-Programm liest den Sensor aus und schreibt den Messwert in Lux auf die Konsole. Erstellen Sie zunächst eine Datei lux.c mit dem Inhalt aus Listing 2. Mit den beiden Kommandos aus Listing 3 kompilieren Sie die Datei, benennen das daraus entstandene Programm in lux um und machen es zum Ausführen bereit. Starten Sie es anschließend, erhalten Sie als Ausgabe den Helligkeitswert in Lux als ganzzahligen Wert, zum Beispiel 114.

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
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland