IWY-Light / MiLight

Zur gleichen Zeit, als Phillips seine HUE-Leuchten auf den Markt gebracht hat, haben auch andere Firmen ähnliche Systeme auf den Markt gebracht. Diese Seite beschreibt, wie ich IWY-Light-Lampen mit passendem Controller von einem Lync Client ansteuere und meinen Status sichtbar mache.

Hinweis: Mittlerweile gibt es auch eine IWY Master, in der der WLAN-Teil mit in der Lampe verbaut ist. Diese habe ich noch nicht getestet.

Lampen, Controller und Steuerung

Zuerst habe ich mich mal an die offizielle Anleitung gehalten und eine LED in die Lampenfassung geschraubt und angelernt. Die LED-leuchten sind mit 9W sehr hell aber die Bauart ist auch bedingt durch die Kühlkörper recht lang. Nebendran im Vergleich eine einfache LED-Lampe, die etwas die Abmessungen einer klassischen "Birne" hat. Die Leuchte wird schon kräftig warm wobei das vielleicht durch das Netzteil verursacht wird.

Die Leuchten, in der Sie die Lampe einbauen wollen, muss also entsprechend groß sein. Sobald die Lampe mit Strom versorgt wird, hat man 2 Sekunden Zeit auf der Fernsteuerung einen der vier "Kanaltaster" zu drücken und damit die LED diesem Kanal zuzuordnen. Vorher muss man natürlich in die Fernsteuerung erst einmal 2x AAA-Batterien einlegen. Aber damit ist ein erster Funktionstest und das Anlernen der LEDs an bis zu vier unterschiedliche Kanäle möglich. Wie ich später feststellen durfte, ist der Lernvorgang je Steuerungsgerät vorzunehmen und kann dabei auch andere Kanäle nutzen, d.h. die vier Kanäle der WiFi-Bridge sind andere Kanäle und die Lampe kann an mehrere Geräte angelernt werden. Eine Lampe kann bis zu fünf Sender erlernen. Ein Sender kann eine unbegrenzte Anzahl an Lampen steuern. Beim "Entlernen" einer Lampe werden alle gelernten Steuerungen entfernt.

Nach Rückfrage mit IWY hat jeder Sender einen Art Gerätecode den er mit einem Kanal sendet. Eine Lampe lernt also den individuellen Controller + Kanal. Wer also mehrere Controller verbaut, kann auch mehrere Lampen individuell steuern.

Aber es ist nicht so, dass die Lampen eine IP-Adresse oder sogar per WiFi angesteuert werden. Zumindest die Fernsteuerung kann mehrere Lampen, die in bis zu vier Kanäle gruppiert sind, bezüglich der Helligkeit und Farbe steuern bzw. den Lampen ein Programm mitteilen, dass Sie selbst verschiedene Farbspiele wiedergeben.

Die genutzte Funktechnik zwischen dem Controller und den LEDs nutzt das kostenfreie 2,4GHz Band mit einem proprietären Protokoll. Andere "Haussysteme" auf der Frequenz sind wohl nicht kompatibel, was aber auch als Schutz angesehen werden kann. Laut IWY sendet aber jede Lampe einen empfangenen Befehl selbst noch mal aus (ähnlich wie Zigbee, Z-Wave), so dass auch Lampe gehorchen, die nicht in direkt den Befehl empfangen können. Dennoch sollten sie dies nicht überstrapazieren. Es gibt keinen Rückkanal, ob ein Befehl umgesetzt wurde.

 

Technisch muss die Lampe natürlich noch in eine Fassung, die idealerweise nicht geschaltet wird. Ohne Strom kann die Lampe nicht per Funk eingeschaltet werden. Im Wohnungsbereich ist sie vielleicht nicht optimal als Birne für die Regelbeleuchtung zu verwenden. Als Signalleuchte muss man sich auch eine passende Halterung mit E27 Socken suchen, was nicht so einfach erscheint. Die meisten Stehleuchte/Schreibtischleuchten haben entweder E14-Fassungen, sind schon mit LEDs bestückt oder haben einen eingebauten Touch-Dimmer. Insofern ist etwas Suchen und Phantasie angesagt oder man nutzt einen nackten Tisch/Standleuchtenfuß und baut selbst etwas drum.

Die Leuchte ist hell aber kein "Rundstrahler" ,d.h. die Abstrahlungsrichtung geht schon "nach vorne" und jede Art "Schirm" sollte natürlich farblos sein.

WiFi-Controller und Leuchte in einem Gehäuse

Im November 2014 habe ich die erste Version der integrierten Version bekommen. Hier ist der WiFI-Knoten (Typ: HF-A11-SMT") direkt in die Leuchte mit integriert, was natürlich noch ein Stück weit einfacher die Umgebung machen kann. Die Leuchte wird eingesteckt und über eine IOS/Android-App kann man sich mit dem WiFi-Gerät verbinden, welches sich als Accesspoint ausgibt. Die Anmeldung erfolgt ohne Kennwort und man kann die Leuchte direkt steuern.

Interessant ist aber auch hier, dass man über die App die Leuchte so umkonfigurieren kann, dass Sie sich als Client in ein bestehende Netzwerk einbindet (WPA, WPA2, 2,4GHz) und dann von ihrem normalen Router auch eine Netzwerkadresse bekommt. Eine Anmeldung mit Zertifikaten oder Benutzername/Kennwort (WPA Enterprise) geht allerdings nicht. Es bietet sich an für solche Leuchten dann eine eigene SSID mit eigenen Zugangsdaten aufzuspannen und vom Hauslan entsprechend abzutrennen.

Die API weicht deutlich von der Ansteuerung über den Wifi Controller ab, aber sind letztlich auch nur AT-Commands, die per UDP an den Port 5577 der Leuchte gesendet werden.

REM Bytesequenz für RGBW Lampe

0x56 [8bit red data]+[8bit green data]+[8bit blue data]+[8bit warm while]+[8bit Status Flags]+[0xAA]
Note: 8bit Status Flags : RGB changed is 0xF0, warm while changed is 0x0F;

RM ByteSequent für RGB LED Controller
[0x56]+[8bit red data]+[8bit green data]+[8bit blue data]+[0xAA]

Für die WiFi-Lampe ist daher ein PowerShell-Sample zum Test ganz schnell erstellt:

param (
   [string]$remoteip   = "192.168.178.49",   # IP to send to 
   [int]$remoteudpport = 8899,               # port to send to
   [int]$sourceudpport = 0                   # SourcePort, 0 uses an available port
)

$udpClient = new-Object system.Net.Sockets.Udpclient($sourceudpport)

# Lampe auf Rot
#$udpClient.Send((0x56, 0xFF, 0x00, 0x00, 0xAA), 5, $remoteip, $remoteudpport) | out-null
$udpClient.Send((0x56, 0xFF, 0x00, 0x00, 0x00,0xFF,0xAA), 7, $remoteip, $remoteudpport) | out-null

Das Skript für die "Wifi Master-Lampe" ist noch nicht fertig.

Diese abgewandelte Version habe ich unten im Lync-Script noch nicht eingebaut.

WiFi Controller

Hinweis:
Meine Tests habe ich mit der Firmware Version 4 gemacht. Es gibt durchaus andere Anbieter, die ähnlich aussehende Controller, eventuell vom gleichen Hersteller vermarkten aber anders funktionieren. Die hier gezeigten Funktionen und Einstellungen müssen mit anderen Geräten nicht funktionieren.

Um das Werbeversprechen "Leuchten per WiFi Steuern" zu erfüllen, muss daher ein Controller her, der auf der einen Seite mit den Leuchten spricht und auf der anderen Seite eine Verbindung per WLAN erlaubt oder sich in das Hauslan per WLAN einbucht. Der Controller hat keinen Ethernet-Anschluss und muss sich also per WiFi in ein bestehendes Netzwerk als Client einbuchen oder startet selbst ein WiFi-Netzwerk. Da sich andere Clients aber in der Regel nur in einem WLAN bewegen können, ist der ersten Schritt die Einrichtung des Controllers als Client in einem bestehenden WLAN. WPA2-AES und WPA2-TKIP sind dabei kein Problem. Eine Anmeldung per RADIUS habe ich aber nicht gesehen.

 

Für den Firmeneinsatz müsste dann zumindest ein Zugang per WPA2 eingerichtet werden. Wer unbedingt eine "verkabelte" Version braucht, kann für ca. 25€ einen billigen WiFi-AccessPoint kaufen, der dann ein WPA2 Netz zu der Box aufspannt. Die Lösung beide Seiten, also Client zur Box und Box zu Lampe über Funktechniken zu realisieren ist natürlich für Heimanwender optimal. Man muss keine Strippen ziehen und kann den Controller gut versteckt aber dennoch in Reichweite des WiFi-Routers und der LEDs platzieren.

Die Box hat einen Micro-USB Port, der aber nur zur Stromversorgung (5V, 500mA) dient und am PC nicht als Gerät angemeldet wird. Es ist sicher besser das Gerät daher an einem Ladegerät eines Mobiltelefons zu betreiben. Weiterhin gibt es eine SYS-Led, die im Betrieb blinkt, eine "Link"-LED die eine erfolgreiche Verbindung per WiFi anzeigt und einen RST-Taster, der mit einem 3 Sekunden-Druck die Ausgangseinstellung wieder herstellt. (beide LED Blinken hektisch, wenn die 3 Sek abgelaufen sind.)

Anhand der MAC-Adresse ist zumindest das WiFi-Modul von einer Firma in Shanghai:

  • Hi-flying electronics technology Co.,Ltd
    http://hwaddress.com/mac/ACCF23-000000.html
  • Webseite von Hi Flying
    http://www.hi-flying.com
    Ob die dort angebotenen Firmware aber kompatibel ist, habe ich nicht verifiziert. für einen Bastler kann der Blick mit einem Texteditor aber durchaus interessante Textstellen in solche einer Firmware aufzeigen, z.B. Dateinamen im Filesystem. die dann per Browser angesprochen werden können.

Innen drin ist nicht wirklich viel:

 

Wenn Sie auf Android oder IOS die entsprechende App (Suchen nach "Mi Light") installieren, dann können Sie hierüber die Wifi-Bridge sehr einfach einrichten. Es geht aber auch mit einem PC. Die Wifi-Bridge bietet dein unverschlüsseltes WiFi (SSID = "milight") an, mit dem man sich auf dem iPhone, IPad oder Android verbinden muss. Das Device selbst hat die IP-Adresse "10.10.100.254" und vergibt per DHCP weitere Adressen. Sie können natürlich sich auch mit einem PC verbinden. Die Box lauscht sogar auf HTTP und beim Zugriff per Browser werden Sie nach Anmeldedaten gefragt, die sie aber einfach leer lassen können. Die dann angezeigte Webseite ist aber für nicht Chinesen nicht weiter hilfreich:

Erst wenn Sie die Adresse http://10.10.100.254/EN/management.html eingeben sehen Sie, dass darüber ein Firmware-Update erfolgen kann. Ich weiß ja nicht welchen Chip hier die Hersteller nutzen, aber NMAP ist sich zu 100% sicher, dass es ein 3Com Switch wäre.

Neben den Ports 80 (HTTP) und 53 (DNS) sind sichtbar keine Ports auf. Welche Funktionen über die HTTP-Schnittstelle erreichbar sind, kann ich aktuell nicht sagen, da ich keinen Zugriff auf die Quellen oder das Dateisystem der Box habe und es aktuell auch kein Firmware-Update gibt, in welches man reinschauen könnte. Als HTTP-Server kommt "Server: Ralink HTTPD" zum Einsatz.

Webkonfiguration

Allerdings können Sie sich auch an der Weboberfläche anmelden: Die Zugangsdaten hängen wohl von der Version der Bridge ab.

Anscheinend gibt es unterschiedliche Firmware-Stände von denen einige keine Konfiguration per Browser erlauben. Sie müssen dann auf jeden Fall mit einer APP per UDP konfiguriert werden. Ich kenne nur diese beiden Zugänge und habe keinen Zugriff auf Source Code. Nutzen Sie dann die APP, welche über passende UDP-Pakete die Konfiguration durchführt.

Version Username Kennwort URL Datenport

3

admin

000000

http://192.168.1.100/home.html

50000

4

admin

admin

http://10.10.10.254/home.html

8899

Die bei der Version 4 dann angezeigte chinesische Seite kann oben rechts auf Englisch umgestellt werden. Zuerst ist in den STA-Settings dann der Zugang zum WiFi einzutragen

Vergessen sie nicht hier mit "Apply" die Daten schon zu speichern. Der Browser wird ihnen dann einen Neustart nahelegen. Vorher sollten Sie aber die "Mode Selection" noch auf STA umstellen.

Den Neustart-Button habe ich auf der Weboberfläche aber nicht gesehen und einfach die Stromversorgung kurz unterbrochen. Die anderen Einstellungen sind nicht relevant aber es scheint so zu sein, dass in der Box ein kleiner Ethernet-Chip steckt, der denn per serieller Schnittstelle das Funkmodul zu den Lampen ansteuert. Vermutlich gibt er einfach die Befehle 1:1 durch. Nach dem Neustart findet sich die WiFi-Bridge auch als Client in meiner Fritz!Box.

Damit ist das initiale Setup erst einmal abgeschlossen.

Steuerung mit App und Steuerung

In der Box ist natürlich auch eine klassische "Fernbedienung". Diese nutzt nicht den Controller, sondern sendet direkt die 2,4GHz Pakete an die Lampen. Dazu müssen die Lampen natürlich auch an diesen Controller angelernt werden. Eine Lampe kann durchaus Befehle von mehreren Controllern empfangen.

Natürlich gibt es auch verschiedene "Apps" für IOS und Android, mit der über den Controller die Leuchten auch per Smartphone zu steuern sind:

Die Basisfunktionen sind alles vorhanden, d.h. sie können alle Funktionen der Lampen auch ansteuern. Komplette "Lichtszenen" oder o.ä. sind aktuell noch nicht möglich aber daran wird wohl schon gearbeitet. Software ist ja relativ einfach zu ändern.

Ob ich aber auch Zeitsteuerungen etc. in so einer App erwarte, lasse ich mal dahin gestellt. Da die Lampen selbst keine uhr o.ä., enthalten, müsste das Smartphone die gesamte Seit per WiFi in Funkreichweite sein und die App auch im Hintergrund aktiv werden. Viel interessanter ist da dann doch die Integration des Controllers und der Lampen in ein System wie FHEM und andere. Und dazu komme ich später noch.

Setup per App

Natürlich wollte ich wissen, was passiert, wenn man per APP die Box konfiguriert. Da allerdings mein IPhone per WiFi direkt mit der Box bei der Einrichtung kommuniziert, muss ich mir was überlegen um diese WiFi-Verbindungen mitzuschneiden. Zum Glück kann meine WiFi-Karte (Centrino 6300 AGN) den Monitoring Mode, so dass ich mit NetMon 3.4 die Daten dennoch mitschneiden konnte.

Dazu muss man natürlich den Monitoring-Mode einschalten und darf das Fenster dann während des Mitschnitts nicht mehr schließen.

Und da die App auf dem IPhone die MAC-Adresse der Box ausgibt, konnte ich mit einem Displayfilter in NetMon (WiFi.Data.ClientToAP.BSSID == 0xaccf23084f24) sehr einfach die Pakete filtern. Da sich die Box leider auch als Default Gateway ausgegeben hat, gibt es natürlich immer noch viele Störgeräusche, da so ein IPhone im Hintergrund auch Verbindungen nutzt, die in dem Fall aber mit einem "ICMP not reachable" beendet werden. Insbesondere 16384/UDP (Facetime). Nach kurzer Betrachtung war aber schon gut zu sehen, das das alles über 48899/UDP erfolgt. Die älteren Semester der Leser werden sich an den AT-Befehlssatz von Modems erinnern. Hier mal ein Ablauf mit Kommentaren der UDP Daten.

# Suche nach Geräten über UDP Subnet Broadcastand SourcePort=48899 und DestPort=48899


> "AT+Q"
> "AT+W"
> "Link_Wi-Fi"

# Antwort Das gefundene Gerät antwortet mit einem UDP Pakete und den Nutzdaten.
# Das ist die aktuelle IP-Adresse und die MAC-Adresse der WiFi-Bridge

< 10.10.100.254,ACCF23084F24,

# Konfiguration WiFi: Dann habe ich die WiFi Konfiguration auf dem IPhone gestartet, 
# welches so gesendet wurde.
> "AT+WSCAN."

Antwort mit den gefundenen WiFi APs da 2,5 Sek später in einem Paket

< +ok=..Ch,SSID,BSSID,Security,Siganl(%)W-Mode,ExtCH,NT,WPS,DPID
< ..1,WLAN-8D4467,7c:4f:b5:8d:44:6d,WPA2PSK/AES,55,11b/g/n,ABOVE,In,NO,
< ..8,FC,08:96:d7:49:d2:65,WPA1PSKWPA2PSK/TKIPAES,50,11b/g/n,BELOW,In,NO,
< ..11,FC2,00:1f:1f:f5:6b:0a,WPA2PSK/AES,39,11b/g/n,BELOW,In,NO,......

# Ich habe dann das WLAN "FC" ausgewählt, was mit einem "+OK" quittiert wurde
> AT+WSSSID=FC
< +ok...

# Nun habe ich in der App die Anmeldedaten zu dem WLAN eingegeben und auch
# diese wurden lesbar gesendet. Und mit einem zweiten Paket abgeschlossen

> AT+WSKEY=WPA2PSK,TKIPAES,sehrgeheimeskennwort.
> AT+WSKEY.
< +ok..

# Vermutlich ist das der Eintrag für "Statisch" 
> AT+WMODE=STA
< +ok..

# Die Anforderung zum Reboot ?
> AT+Z
# Wird immer wieder gesendet bis das OK kommt

Alles also kein "Hexenwerk" und unverschlüsselt. Allerdings ist es ja erst mal nur die einmalige Ersteinrichtung. Theoretisch könnte hier jemand natürlich die übertragenen WPA2-Daten mitlauschen. Es gibt aber keinerlei Authentifizierung, so dass man die Konfiguration einfach wieder kaputt schreiben kann oder die Bridge neu startet.

Datensteuerung

Die IWY-Lampen sind anscheinend baugleich mit einer ganzen Menge von LED-Lampen und so finden sich im Internet einige Anleitungen und Tools, mit der die LEDs dann auch gesteuert werden können. In den weiteren Links finden Sie entsprechende Verweise. Die Steuerung der LEDs erfolgt aber nicht über den Port 48899. Früher wurde dazu der Port 50000 genutzt aber meine Box lauscht auf 8899, was aber konfiguriert werden kann.

 

Natürlich kann man hier die Konfiguration auch auf TCP umstellen. Damit blockieren Sie natürlich die verschiedenen APPs, die nur UDP machen. Wenn Sie die Lampen aber für Signalzwecke einsetzen, dann könnte TCP den Vorteil bieten, dass zumindest über den TCP-Handshake geprüft werden kann, dass die WiFi-Bridge auch erreichbar ist. Ob die Befehle per Funk dann aber bei den Lampen angekommen sind, können Sie so dann doch wieder nicht überprüfen.

Auf verschiedenen Webseiten werden verschiedene APIs in den unterschiedlichen Programmiersprachen veröffentlicht.

Die WiFi-Bridge erwartet immer genau drei Byte in einem UDP-Paket.

Sequenz Funktion 

x0<befehl> 0x00 0x55

Startpaket. Damit wird jede Kommunikation eingeleitet und es dient zu:

  • Gruppenauswahl
  • Kanalauswahl
  • Ein, Ausschalten
  • weißes Licht

Die LEDs haben einen "Speicher" mit dem letzten Zustand.
Wird Sie eingeschaltet, dann nimmt sie den letzten Zustand wieder ein.

0x41 = Alle aus 
0x42 = Alle an 
0x43 = Disco Langsamer
0x44 = Disco Schneller
0x45 = Gruppe1 AN
0x46= Gruppe1 AUS
0x47 = Gruppe2 AN
0x48= Gruppe2 AUS
0x49 = Gruppe3 AN
0x4a= Gruppe3 AUS
0x4b = Gruppe4 AN
0x46= Gruppe4 AUS

Über den Aufruf der Funktion "An" wird eine Leuchte angelernt. , die gerade eingeschaltet wurde. Sie können die Leuchte aber auch mit der App in Verbindung mit dem Controller anlernen. Nach diesem Startpaket muss eine 100ms Pause abgewartet werden.

0x4E 0x<Helligkeit> 0x55

Steuert die Helligkeit in den Bereichen 0x02-0x1B.
Vorab muss ein Startpaket gesendet werden.

0x02  dunkel
0x27  ganz hell

0x40 0x<Farbe> 0x55 

Farbe

Hiermit kann Farbe durch ein Byte zwischen 0x00 und 0xFF angegeben werden. Die drei Farb- LEDs sind leider nicht ganz gleich hell, so dass der Farbkreis etwas verschoben ist

Diese Tabelle ist primär als schnelle Nachschlagestelle gedacht. Im Code habe ich mehr Daten kommentiert.

Wer sicher sein will, dass die LEDs auch korrekt anzeigen, sollte die Sequenzen mehrfach senden. Ich konnte mehrfach beobachten, dass ein Befehl auch einmal nicht umgesetzt wurde. Die ganz Technik ist in keinster Weise fehlergesichert. Es könne UDP-Pakete verloren gehen aber auch auf der Funkstrecke zur Lampe kann das Signal gestört sein.

Achtung: Sicherheit: keine

Es versteht sich von selbst, dass Sie die LED nicht für lebenswichtige Signalaufgaben verwenden sollten, denn das gesamte System hat einige technische Einschränkungen, was aufgrund der zwei Funk-Stecken und der Netzwerkeinbindung auch nicht überraschend ist.

  • Fälschen über Lan
    Die WiFi-Bridge nimmt von jedem Client, der die Bridge erreichen kann, entsprechende UDP-Pakete entgegen. Selbst eine Firewall mit SourceIP-Filter ist nur bedingt geeignet, wenn Sie UDP als Protokoll belassen.
    Erst der Wechsel auf TCP, die Platzierung in einem eigenen Subnetz und eine entsprechende Firewall können die LAN-Seite besser absichern
  • Fälschen über Funk
    Aber auch auf der 2,4GHz Funkverbindung zur Lampe wird nicht verschlüsselt. Die Lampe wartet einfach auf passende Befehle, die problemlos auch von anderen Sendern generiert werden können. Dazu muss ein Angreifer zwar in Funkreichweite sein aber jede kompatible Fernbedienung reicht, wenn die Lampe kurz vom Stromnetz getrennt werden kann und so beim Einschalten "lernen" kann.
  • Fehlkonfiguration
    Die Lampe lernt nach Einschalten der Stromversorgung für 2 Sekunden alle Sender, die dann einen "EIN"-senden. Wenn ihre Steuerung diese Sequenz häufig verwendet, dann könnte nach einem Stromausfall bei den Lampen es passieren, dass danach alle auf allen Kanälen angehen.
  • Abhören
    Auch bei einem WPA2-Verfahren kann zumindest ein Client, der im gleichen WLAN angemeldet ist, die Pakete mitlauschen. Auf dem Kabelweg ist es über ARP-Spoofing ebenfalls möglich. Das Mithören auf der Strecke zwischen WiFi Bridge und Lampe ist technisch ebenfalls nicht sonderlich schwer, wenn man einen passenden Empfänger findet.
  • Stören
    Die andere Art einer Störung ist einfach die Überlagerung eines Signals mit einer Störung. Die Übertragung per ISM-Band beruht darauf, dass jeder Sender max. 1% der Bandbreite nutzt und daher Kollisionen ausreichend selten sind. Dieses Verhältnis kann man gezielt verschlechtern.
  • Kein Rückkanal
    Es gibt keinerlei Rückmeldung, ob der Befehl bis zur Lampe angekommen ist und umgesetzt wurde. Sie können das Risiko reduzieren indem Sie einen befehl mehrfach senden aber 100% Sicherheit gibt es nicht. Erst recht nicht, wenn jemand absichtlich dazwischen funkt

Damit ist klar, dass die Lampen keine lebenswichtige Funktionen übernehmen dürfen, sondern rein ergänzend genutzt werden können, die "unkritisch" sind.

UDP-Samples

Ehe ich mehr Arbeit in Code investiert habe, musste ein kleines PowerShell Sample dafür herhalten.

param (
   [string]$remoteip   = "192.168.178.22",   # IP to send to 
   [int]$remoteudpport = 8899,	             # port to send to
   [int]$sourceudpport = 0                   # SourcePort, 0 uses an available port
)

#region Global preferences
set-psdebug -strict
$error.clear()
$bytearray = New-Object Byte[] 3
$udpClient = new-Object system.Net.Sockets.Udpclient($sourceudpport)

# Alle Gruppen auf weiss
read-host "Pres ENTER für white"  | out-null
$udpClient.Send((0xc2, 0x00, 0x55), 3, $remoteip, $remoteudpport) | out-null
Start-Sleep -Milliseconds 100

# Farbe blau
read-host "Pres ENTER für blue"  | out-null
$udpClient.Send((0x42, 0x00, 0x55), 3, $remoteip, $remoteudpport) | out-null
Start-Sleep -Milliseconds 100
$udpClient.Send((0x40, 0xFF, 0x55), 3, $remoteip, $remoteudpport) | out-null
Start-Sleep -Milliseconds 100

read-host "Pres ENTER für Switch all off" | out-null
$udpClient.Send((0x41, 0x00, 0x55), 3, $remoteip, $remoteudpport) | out-null

write-host "IWYLight:Closing UDPSocket"
$udpclient.close()

Generisches PowerShell-Skript

Das hier bereitgestellte Skript ist nicht mehr die Version 1.0. Ich habe verschiedene Ansätze der Parameterübergabe versucht und habe nun meine eigene Logik entworfen, die meinen Anforderungen am besten entgegen kommt. Ein Aufruf setzt eine oder alle Lampen auf eine bestimmte Farbe oder aus. Entsprechend werden nur ein paar Parameter übergeben.

  • Nummer der Gruppe (1-4) oder alle (0)
  • Helligkeit (2-27), Default ist 27
  • Farbe inkl. weiß und schwarz (=aus) oder Muster

Für mich ist natürlich eine PowerShell-Version da Mittel der Wahl. Hier eine etwas aufwändigere Version, die aber immer noch sequentiell arbeitet und noch keinen Status von Lync ausliest.

iwylight.1.0.ps1

Das Skript eignet sich aber wunderbar, um die Lampe schon mal aus PRTG, SCOM o.ä., anzusteuern. 

Lync PowerShell-Script

Folgendes Skript nutzt einen lokal installierten Lync Client um den eigenen Status alle Sekunde auszulesen und eine Änderung an die Lampe zu senden. Die Mühe "Event"-gesteuert zu arbeiten habe ich hier nicht umsetzt.

Das Skript funktioniert nur auf der deutschen Version, da die Statusabfrage einen "String" liefert und keine Enumeration vom Typ "[Microsoft.Lync.Model.ContactAvailability]"

Das Skript pollt einfach alle Sekunde den eigenen Status und setzt bei einer StatusÄnderung die Lampe.

iwyownstatus.1.0.ps1

Die PowerShell-Lösung benötigt das Client SDK 

Microsoft Lync 2013 SDK
http://www.microsoft.com/en-us/download/details.aspx?id=36824

Interessanterweise habe ich in meinem Lync Programmverzeichnis auch eine "Microsoft.Lync.Mode.dll" gefunden aber die konnte ich nicht laden. Das Script ist natürlich nur ein "Proof of concept" und soll die Kombination von PowerShell, Lync Client SDK und IWYLight zeigen.

Wer mag kann daraus gerne auch eine "echte" Windows Applikation für den Tray machen oder eine Lync-DLL, die mit dem Lync Client automatisch gestartet wird.

Sonstiges Apps oder Lösungen

Lehnen sich mal ein Stück zurück und denken Sie, was sie nun mit dem gewonnen wissen anfangen können. Das PowerShell-Skript war ja klar, wenn sie auf die Seite Busylight oder I-Buddy schauen. Vielleicht schaffe ich es zeitlich auch noch eine Tray-App für Windows zu entwickeln. Aber überlegen Sie, was sie noch alles damit anfangen können. Wir haben eine Lösung um Lampen in E27 Fassungen über Ethernet anzusteuern.

  • Mailmelder
    Ein Programm fragt z.B. Outlook, Exchange per EWS oder einen Mailserver per POP4/IMAP4 ab und meldet, wenn neue Mails anlegen
  • Social: Twitter, Facebook, LinkedIn-Melder
    Analog kann ein Programm auch melden, wenn man in den verschiedenen Social-Media-Plattformen erwähnt wird
  • System Monitoring
    Im Computerbereich überwachen Sie hoffentlich ihre Server per System Center, PRTG o.ä. Und hier kann ein erkannter Fehler auch als "Status" gemeldet werden.
  • Lync Response Group Watcher
    Könnte anzeigen, ob jemand in einer Warteschlange "hängt".
  • Presence Board
    Ich habe nicht vor, für 40 Mitarbeiter auch 40 Lampen an die Wand zu schrauben. Aber wenn z.B. eine Maschine oder ein Prozess ihren Status per Lync meldet, dann könnte ein anderer Prozess diesen Status so auch anzeigen
  • Lichtsteuerung
    Die Box selbst kann keine aktive Rolle übernehmen und auf eine App auf dem Smartphone baue ich nicht. Es gibt schon Integrationen für FHEM. Sie könnten mit eine Software aber auch andere Funktionen damit steuern, z.B. eine Ampel für Personenkontrolle oder einfache Beleuchtungssteuerungen. Wir wäre es, wenn ihr PC z.B. per Streaming einen Radiosender hört und die Lampen durch eine Software als Lichtorgel angesteuert werden ?.
  • Meldung und Steuerung durch Haussteuerung
    Da braucht man nur mal bei FHEM zu suchen. Es gibt schon entsprechende Lösungen
    http://forum.fhem.de/index.php?topic=18151.0
    http://forum.fhem.de/index.php/topic,16130.msg124768.html#msg124768

Ich werde aber sicher nicht 24 LEDs auf einen Tannenbaum mit 220V installieren. Da wird schon das Gewicht dagegen sprechen. Jede Lampe hat ca. 118g zzgl. Fassung und Kabel. Aber es ist eine fast normale E27 Lampe. Durch die Netzwerkanbindung können Sie eine Lösung mit einer Software auf dem Client erstellen aber auch mit einem Prozess auf einem Server die Leuchte steuern. Der Controller muss nur irgendwie per WiFi eine Verbindung zum Netzwerk aufbauen und die Lampe in Reichweite des Controllers oder einer anderen Lampe sein, die als Relay agiert.

Weitere Links