Led Lampen mit WLAN Anbindung

Ein Thema das mich immer wieder fasziniert ist die Vernetzung von Gegenständen des Alltags. Meine Wohnzimmerlampe glänzt nicht nur durch hässliche Form sondern auch durch kaltes Licht und Quecksilber im Leuchtmittel. Deshalb ersetze ich nach und nach Kompaktleuchtstofflampen durch LED Lampen. Der Zufall brachte mich zu diesem Lampenset mit WLAN Anbindung (Affiliate) vom Hersteller LimitlessLED. Die Lampen passen in E27 Sockel, haben 6 Watt Leistung und können mit 230V ~  betrieben werden. Die Grundidee ist die Lampen via Smartphone oder auf anderen Wegen einzuschalten, die Farben zu ändern und dimmen.Neben den 3 Lampen werden eine Fernbedienung und was viel interessanter ist einem Controller mit dokumentierter API geliefert. Apps gibt es auch! Pro Fernbedienung und Controller kann man 4 Lampen steuern. Dabei kann man die Parameter Helligkeit, Farbe regeln.

2013-10-15 16.56.18

 

Impressionen

Inbetriebnahme

Lampen

Jede Lampe muß konfiguriert werden. Dabei spielt es keine Rolle, ob man sie der Fernbedienung oder in der App konfiguriert.

Lampe in Fassung drehen und binnen 2 Sekunden nach Anlegen von Spannung auf der Fernbedienung einen Kanal aktivieren – die Lampe ist nun dem entsprechenden Kanal zugewiesen. Die erfolgreiche Zuweisung  wird durch Blinken quittiert. Um die Lampe aus dem Kanal zu lösen innerhalb von 2 Sekunden nach dem Einschalten 5 mal den entsprechenden Kanal auf der Fernbedienung aktivieren.

Controller

Der Controller wird per Micro-USB Kabel mit Spannung versorgt. Ich nutze ein Ladegerät für Smartphones. Nach dem Booten sollte man ein WLAN mit der SSID milight finden. Nun kann man der Anleitung folgen oder was ich als angenehmer per Webinterface konfigurieren. Dazu ins eigene WLAN verbinden und http://192.168.0.100/home.html aufrufen – ob die IP immer die gleiche ist kann ich nicht sagen. Hier muß in den STA Interface Settings das eigene WLAN konfiguriert werden.

App

Momentan nutze ich die in der Anleitung vorgeschlagene App Es gibt auch noch eine puristischere Version mit
Anbindung an Tasker – die  ohne Anpassungen leider nicht läuft.

LED Lampen ansteuern

Beim Hersteller gibt es eine Dokumentation.  Die Beispiele sind leider ein wenig inkonsistent, da irgendwann die Portnummer von 50000 auf 8899 umgestellt wurde.

Die Lampen werden per UDP Kommandos gesteuert. Dabei werden immer 3 Byte übertragen.

Byte 1 ist das Kommando an welches immer der Suffix 0x00  0x55 angehängt werden muß.

In PHP kann mit diesen Zeilen alle Kanäle einschalten:

<?php
define("CONTROLLER_IP", "192.168.0.100");
function executeCommand( $ip, $command, $suffix1=00, $suffix2='55'){
	fwrite(fsockopen("udp://$ip", 8899), chr(hexdec($command)) . chr(hexdec($suffix1)) . chr(hexdec($suffix2)));
}
 
executeCommand(CONTROLLER_IP, 42);

Wer php5-cli installiert hat kann das Script auch auf der Kommandozeile nutzen. Für Freunde der Bash gibt es auch ein Script (geklaut bei Smileytechadventures)

#!/bin/bash 
 
if [ -z "$1" ] ; then 
    echo "You must enter a parameter: "  
    echo "  e.g. $0 allon" 
    exit 1 
fi 
 
incmd="$1" 
ipaddress="192.168.0.201" 
portnum="50000" 
 
allon="\x35\00\x55" 
alloff="\x39\00\x55" 
zone1on="\x38\00\x55" 
zone1off="\x3B\00\x55" 
zone2on="\x3D\00\x55" 
zone2off="\x33\00\x55" 
zone3on="\x37\00\x55" 
zone3off="\x3A\00\x55" 
zone4on="\x32\00\x55" 
zone4off="\x36\00\x55" 
 
eval incmd=\$$incmd 
 
echo -n -e "$incmd" >/dev/udp/"$ipaddress"/"$portnum"

Ein wenig Heimautomatisierung ist auch schnell betrieben. Dieses Skript prüft, ob die Sonne untergegangen ist und schaltet in diesem Fall alle Lampen ein.

#!/usr/bin/php
<?php define("CONTROLLER_IP", "192.168.0.100"); define("ZEIT_FUER_BETT", "23:59"); function executeCommand( $ip, $command, $suffix1=00, $suffix2='55'){ fwrite(fsockopen("udp://$ip", 8899), chr(hexdec($command)) . chr(hexdec($suffix1)) . chr(hexdec($suffix2))); } function getIp(){ return file_get_contents("http://icanhazip.com/"); } function getLatLongByIp($ip){ $geoplugin = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip) ); if ( is_numeric($geoplugin['geoplugin_latitude']) && is_numeric($geoplugin['geoplugin_longitude']) ) { $ret['lat']= $geoplugin['geoplugin_latitude']; $ret['lon']=$geoplugin['geoplugin_longitude']; return $ret; } } $ret= getLatLongByIp(getIp()); $dateSunset=date_sunset(time(), SUNFUNCS_RET_TIMESTAMP,$ret['lat'], $ret['lon'], 90, 1); $dateSunrise=date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $ret['lat'], $ret['lon'], 90, 1); //Zu einer festen Uhrzeit ausschalten if(date("H:i")>= date(ZEIT_FUER_BETT)){
echo "schlafen";
	executeCommand(CONTROLLER_IP, 41);
	exit;
}  
//Nach Sonnenuntergang und vor Aufgang
if ( time() >=$dateSunset && $dateSunset >$dateSunrise){
 
	executeCommand(CONTROLLER_IP, 42);
}else {
	executeCommand(CONTROLLER_IP, 41);
}

Das kleine Skript fühlt sich auf kleinen Linuxrechnern im eigenen Netzwerk sehr wohl und sollte per Cronjob alle 1 Minuten angestoßen werden.

*/1 *    * * *   /home/pi/sunrise.php

Inzwischen habe ich die Lampen seit einer Woche in Betrieb und viel Spaß damit. Die Lichtausbeute ist ausreichend, der Stromverbrauch in Ordnung. Der Preis ist mit 99 EUR schon sehr happig, aber es macht auch sehr sehr viel Spaß Skripte für die Lampen zu schreiben.

20 thoughts on “Led Lampen mit WLAN Anbindung

  1. Der Beitrag ist problematisch. Zum einen duldet der Ubuntuusers-Planet meines Wissens keine Affiliate-Links und zum anderen erscheinen die verlinkten Bilder im Planeten in voller ausskalierter Größe.

  2. Hallo!
    Ich habe ebenfalls die Milight, nur funktioniert bei mir die Steuerung über den Wifi-Controller nicht ganz, sprich die Lampe reagiert nicht. Per Fernbedienung klappt es aber. Über den Admin-Bereich des Wifi-Controllers habe ich alle Server-Adressen auf 10.10.100.254 eingestellt.
    Oder musste man jede Lampe noch mit dem Wifi-Controller synchronisieren?

  3. Hallo,

    Habe seit kurzem auch die Milight und das Problem, dass das steuern per Script nicht funktioniert. Über die App und Fernbedienung klappt es aber. IP und Port habe ich natürlich angepasst. >a href=“http://s30.postimg.org/vo9ptxks1/milight_interface.png“ title=“Hier“> ist ein Link zu den Einstellungen im Webinterface (Was btw. keine Änderungen entgegennimmt). Was mir dabei als erstes auffällt: 8 bit sind nun nicht 3 byte, könnte es evtl. daran liegen? Und wie müsste das (Bash-)Script dann angepasst werden?

    1. Hi Alvaro,

      hast Du bei dem Bashscript die Portnummer angepasst? 3 Byte reichen meinem Kontroller völlig aus :

      All UDP Commands are 3 Bytes. First byte is from the list below, plus a fixed 2 byte suffix of 0x00 (decimal: 0) and 0x55 (decimal: 85)

      i.e. to turn all RGBW COLOR LimitlessLED Smart lights to ON then send the TCP/IP UDP packet of: 0x42 0x00 0x55

      Hast Du die Lampen dem Controller zugewiesen?

      1. Hallo,

        Sorry für die Verspätung, ich war etwas beschäftigt mit anderen Dingen.

        Ich habe die Portnummer in dem Script angepasst (sowohl mit 8899 als auch mit 50000 versucht) und ich kann den Controller von dem PC aus anpingen, grundsätzlich klappt die Verbindung also.

        Außerdem kann ich mit dem Smartphone und der Milight-App die Lampen problemlos steuern, eine Funktion, die ja auch auf die Bridge zurckgreift. Das Script, in dem wie gesagt IP und Port angepasst sind, bewirkt aber schlicht und ergreifend gar nichts. Hättest du noch eine Idee, woran das liegen könnte?

  4. Ich habe das gleiche Problem wie alvaro. Alle Scripte, die man im inzwischen im Web zur Steuerung der Lampen findet, laufen nicht. Ich verwende einen Raspberry Pi und Debian.
    Ein direktes steuern über eine Shell geht: echo -e -n „\x42\x00“ | nc -u -q 1 192.168.1.10 8899 (einschalten) .
    Das Gleiche in einem Bash Script geht nicht (auch nicht echo -e -n „\x42\x00“ | nohup nc -u -q 1 192.168.1.10 8899 & ).
    Dazu kommt, dass ich bei http://192.168.1.10/home.html nur auf einer Seite zum FW update lande. Es ist kein Konfiguration möglich. Habe auch eine Anfrage beim Lieferanten laufen.
    Eventuell gibts ja inzwischen ein neues FW Release…

    Grüße

    Hartmut

    1. auch von mir kurzes Feedback:
      – die V3 Version der Bridge hat andere Kommandos und alles läuft nun wunderbar
      – von der V3 Bridge gibt es min. 2 verschiedene Chargen laut Lieferant.
      – Charge 1 erlaubt den Zugriff auf Konfigurationsdaten
      – Charge 2 erlaubt nur den FW Upgrade, sofern man eine neue FW hat…
      – Richtig gut ist die milight controller SW: http://iqjar.com/jar/home-automation-using-the-raspberry-pi-to-control-the-lights-in-your-home-over-wi-fi/

  5. Hallo!

    Spannendes Kit zu interessantem Preis, daher habe ich auch gleich mal zugeschlagen 🙂 Eine Sache stört mich aber nach dem ersten Test: der Controller ist vom Internet über die App erreichbar!!!!!

    Mit anderen Worten: der Controller sowie die App funken zu einem Server im Internet um sich zu verbinden! Und wer weiß was der Controller im Netzwerk noch so alles tut als nur seine Identität nach hause funken?!

    Das möchte ich gerne unterbinden, mir reicht es völlig wenn ich die Lampen in meinem Intranet steuern kann. Weiß jemand zufällig, welcher Server das ist? Den würde ich dann gern in meiner Firewall blocken…

    Gruß, Patrick

    1. Hallo Patrick,

      wie kommst Du darauf, daß der Controller sich mit einem Server im Internet verbindet? Du kannst dem Controller den Zugang ins Netz verwehren indem Du die MAC Adresse des Geräts in Deinem Router sperrst.

      Viele Grüße,

      Michael

      1. Hallo Michael,
        guter Tipp, danke! Naja, von außen (Handy-Netz) habe ich ja keinen Zugriff auf Geräte meines Netzwerks (z.B. NAS, Router, und eben auch MiLight Controller). Dennoch kann ich mich, nachdem die Geräte einmal im WLAN gekoppelt waren, über die Android App darauf verbinden (steht ja auch in der Anleitung), ohne irgendwelche IP-Adressen einzugeben. Der einzig mögliche Weg dies zu tun, ist dass der MiLight Controller einen Tunnel nach außen zu einem Server bereitstellt und die App diesen Server anfragt um diesen Tunnel zu benutzen und sich mit dem MiLight Controller verbindet. Und genau das möchte ich nicht – wer weiß was der Controller sonst noch so tut?! Dem traue ich (noch) nicht so ganz 😉
        Das doofe ist nur dass der Controller nicht mehr funktioniert (auch nicht im WLAN), sobald man ihn in der Firewall blockt… :-/
        Gruß, Patrick

        1. Guten Morgen,
          Die App merkt sich die IP-Adresse des Geräts. In dem von Dir beschriebenen Szenario könntest Du ja auch über Handy-Netz oder ein anderes WLAN die Lampen bei Dir zuhause steuern. Sperr doch einfach die MAC Adresse des Controllers und schau ob das Teil noch funktioniert. Die MAC bekommst Du mit dem Programm nmap oder einer vergleichbaren App – z.B. Net Scan heraus.

          Grüße,

          Michael

          1. Hi Michael,
            tja, wenn ich die Mac Adresse blockiere, funktioniert die Millight App leider nicht mehr. Ich versuche das nachher mal direkt über UDP, wenn das klappt kann ich auch ohne App leben.
            Gruß, Patrick

      2. Zur Info, die Mi-Light App baut eine Verbindung zu wificontroller.lierda.com auf. Damit hätten wir unseren Server, über den die App den Controller findet 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.