12
Feb 2015
Marko

Wifi Led mit raspberry pi schalten

In dieser Anleitung erkläre ich euch wie ihr ein LED-Band mit einem entsprechenden W-Lan Controller verbindet und dieses dann mit eurem Raspberry pi automatisieren könnt.
Am Ende des Artikels gibt es dann noch einige php-Schnipsel für die Bastler unter euch.

Aber eins nach dem anderen:

Eigentlich wollte ich ja nur eine neue Led-Beleuchtung im Wohnzimmer anbringen.
Daher habe ich mir erst einmal ein 5 Meter LED-Band gekauft:

LED Strip Licht Streifen 5m Band Leiste mit 300 LEDs (SMD 3528) inkl. Netzteil & Fernbedienung*

Das Set besteht aus einem 5m Led-Band, einem Empfänger und einer Infrarot-Fernbedienung.

Relativ schnell wurde mir die Fernbedienung zu öde deshalb suchte ich eine Möglichkeit die LED-Beleuchtung via App steuern zu können.

Das Zauberwort heißt LW-12

LAGUTE LW-12 Wifi WLAN LED RGB Strips Controller für iOS, Android System*

Dieses Teil wird einfach anstelle des Infrarot Empfängers an das LED-Band angeschlossen. Der LW-12 eröffnet dann ein W-Lan auf dem Ihr euch einloggen und die LEDs steuern könnt. Mit wenigen Konfigurationsschritten kann sich der LW-12 auch in euer bestehendes W-Lan einloggen, so müsst ihr nicht erst das Netz wechseln bevor ihr das Licht  vom Smartphone steuern könnt.

Apps gibt es für IOS und Android.

Kommen wir nun aber zu dem spannenderen Teil, in dem ich erkläre wie ihr den LW-12 mittels PHP von eurem Raspberry PI aus steuert.

Hierfür habe ich ein zunächst eine PHP-Klasse geschrieben diese ermöglicht es ein LW12 zu steuern. Die Datei findet ihr inter folgendem link (LW12.php)

Ein PHP-Script um ein LW-12 auf weißes licht zu schalten könnte also wie folgt aussehen:
<php
$x = new LW12("192.168.1.123");
$x->fadeTo(100,100,100);

das war es auch schon, ihr müsst natürlich die IP eures LW-12 eintrage.  ROT, GRÜN und BLAU muss jeweils immer als Wert  von 0 – 100 angegeben werden.

Die Methode fadeTo(R,G,B) fadet die Farbe auf den angegebenen Wert, die Methode setColor(R,G,B) setzt die Farbe direkt. Außerdem fadet off()  einfach alles auf 0.

Den rest habe ich direkt in der Datei mit Kommentaren versehen.

Wer es ein wenig flexibler mag kann sich die Datei LW12Controll.php anschauen, dieses Script ermöglicht es die Farben via GET-Request (Browserzeile) oder via Termial zu setzen. z.b.
http(s)://RAPI_IP/lw12Controll.php?ip=LW12_IP&r=100&g=100&b=100

bzw im terminal mit folgenden Parametern

//Parameter 1 = ip vom LW12
//Parameter 2 = ROT-Wert
//Parameter 3 = GRÜN-Wert
//Parameter 4 = BLAU-Wert

php -f lw12Controll.php 192.168.1.123 100 100 100

Eigentlich sollte sich das von alleine erklären, wer Fragen hat ist eingeladen die Kommentarfunktion zu benutzen.

Zwei Besonderheiten gibt es allerdings noch, zum einen speichert das LW12 Script die aktuelle Farbe in einer Textdatei (status.txt) hier müsst ihr via CHMOD Schreibrechte gewähren.

Zum anderen kann man den LW12 mit der APP auch komplett aus schalten, mein Script setzt hingegen nur alle werte auf 0 um das Licht aus zu machen. Ihr müsst also auf jeden Fall darauf achten, dass ihr mit der APP den LW12 eingeschaltet habt sonst lässt sich die Farbe nicht mit PHP setzen. Verbesserungen und Anregungen sind wie immer sehr willkommen.


6 Kommentare zu "Wifi Led mit raspberry pi schalten"

  1. Benji schreibt:

    Hey, thx für dein Script, ich habe mir dein Script auf meinen lokalen Apache Server gelegt und in Zeile 83 der LW12.php auch die IP geändert. Doch jedesmal wenn ich das Script LW12Controll.php aufrufe gibt er mir „string(5) „0,0,0“ “ aus und macht das komplette Licht aus obwohl ich in der App das Licht eingeschaltet habe.
    Weisst du vielleicht was ich da falsch gemacht habe?

    lg Benji

  2. Marko schreibt:

    hi, es ist wichtig dass du R G und B übergibst

    also LW12Controll.php?r=0&g=100&b=0

    ändert die Farbe auf Grün
    die werte sind jeweils von 0 bis 100

  3. Dominik schreibt:

    Hallo, ich würde gerne den Controller per TCP verbinden. Wie sind die Befehle für das Farben setztem?

    („\x56“ . chr($sendR) . chr($sendG) . chr($sendB) . „\xaa“);

    also in die TCP Zeile einfach nur V.A.A.A.a oder habe ich das falsch verstanden?
    Schonmal danke, falls noch eine Antwort kommt:)

  4. Marko schreibt:

    Ich kenne zwei varianten des LW12 sie sehen baugleich aus
    funktionieren aber anders

    probiere mit PHP entweder das:

    fwrite(fsockopen(„tcp://???.???.?.??“, 5000), „\x9D\x62\x05\x00\x00\x00“ . chr($bri) . chr($sendR) . chr($sendG) . chr($sendB) . „\x00\x00\x00\x00\xF0\x60\x10\x10\x10\x 08“);

    ODER:

    fwrite(fsockopen(„tcp://???.???.?.??“, 5577), „\x56“ . chr($sendR) . chr($sendG) . chr($sendB) . „\xaa“);

    ???????? muss natürlich die die IP des LW12 sein

    und vorher
    $sendR = 100;
    $sendG = 100;
    $sendB = 100;

    setzen .. Werte von 0 bis 255 sind erlaubt

  5. HTS schreibt:

    Da ich dieses Gerät nirgends mehr finde: Gibt es Alternativen und wie muss ich das Skript anpassen?

  6. Marko schreibt:

    hi. sorry für die späte Rückmeldung…
    bei Amazon gibt es die Teile noch Suchwort ist „LW12“
    http://amzn.to/2mnEKno

Kommentar verfassen