Hallo,
ich habe mich an meinem ersten Modul für FHEM versucht und stelle es euch hier zur Verfügung. Bei Fragen, Anregungen und Problemen einfach melden.
Ein kleiner Dank geht an herrmannj, desen WifiLight-Modul ich als Grundlage nutzen durfte. Am Ende habe ich zwar so gut wie nichts übernommen, aber es hat mir dennoch viel geholfen, den Aufbau von FHEM-Modulen zu verstehen.
Aktuelle Version hier: https://github.com/thaliondrambor/32_YeeLight.pmGruß
thaliondrambor
###### Under Construction ######Anleitung für 32_YeeLight.pm0 - VorwortMit diesem Modul lassen sich die WLAN-fähigen Lampen der Firma Xiaomi, welche unter dem Namen Yeelight verkauft werden, steuern.
Zum aktuellen Zeitpunkt gibt es folgende Lampen:
- LED Bulb Color Wifi - getestet und voll kompatibel
- LED Bulb White Wifi - kompatibel, aber nur Helligkeit einstellbar
- LED Lightstrip Color Wifi - kompatibel
- LED Desk Lamp - wahrscheinlich kompatibel, aber keine Farbe
- LED Deckenlampe - angekündigt und wahrscheinlich kompatibel
Vorteil der Lampen sind der geringe Preis (im Vergleich zu anderen smarten Lampen) und der wirklich große und gut durchdachte Funktionsumfang. Außerdem gibt es einen Betatest für die Sprachsteuerung mit Alexa.
1 - Einrichten der LampenBeim erstmaligen Einrichten der Lampen werden diese in das WLAN eingebunden. Dafür ist ein Smartphone, die Yeelight oder MiHome App und ein Mi-Account nötig. Es gibt beide Apps sowohl für IPhone als auch für Android, wobei die Apps für Android schneller laufen und mehr Funktionsumfang haben.
Die App erkennt neue Lampen und man kann diese durch Auswählen des WLANs und Eingeben des Passwortes in das WLAN integrieren. Es ist empfehlenswert gleich ein Firmware-Update der Lampen durchzuführen. Der aktuelle Stand (22.12.16) der LED Bulb Color Wifi ist die Version 1.4.1_45. Mit dieser ist die Funktionalität mit dem Modul voll gegeben. Erfahrungen mit früheren Versionen sind mir nicht bekannt.
Wichtig: in den Einstellungen der Lampe muss über die App der
Developer Mode aktiviert werden, ansonsten ist ein steuern über FHEM nicht möglich.
Hinweis: Durch diese Einstellung wird die Kommunikation der Lampe auf unverschlüsselt umgestellt.
Damit ist die Grundeinrichtung der Lampe beendet.
Sollte das WLAN der Lampe nicht mehr findbar sein, so kann sie zurückgesetzt werden in dem man die Lampe je 5 mal für je 3 Sekunden an- und ausschaltet (5 x Aus - 3sek warten - Ein -3sek warten).
2 - Einrichten in FHEMBevor das Modul installiert werden kann, solltet ihr das CPAN-Modul JSON::XS auf eurem System installieren, wenn es nicht bereits vorhanden ist. Dieses wird zwangsweise benötigt. Dies geschiet bei einem Linux-System z.B. durch folgende Eingabe:
sudo cpan install JSON::XS
Anschließend muss das Modul auf Github heruntergeladen und in FHEM eingebunden werden.
Die 32_YeeLight.pm gibt es hier:
https://github.com/thaliondrambor/32_YeeLight.pm. Diese herunterladen, in euren FHEM-Ordner kopieren und mit
reload 32_YeeLight.pm
oder durch einen Neustart von FHEM "installieren".
Nun ist das Modul einsatzbereit.
3 - Define - Anlegen der LampenDie Lampen werden mit folgendem Befehl angelegt:
define [NAME] YeeLight [IP]
z.B.: define SchlafzimmerLicht YeeLight 192.168.0.15
4 - Set - Steuern der LampenFolgende Befehle stehen zur Auswahl:
- on
- off
- toggle
- bright
- hsv
- hue
- sat
- rgb
- dimup
- dimdown
- color
- ct
- start_cf
- stop_cf
- scene
- name
- default
- reopen
- statusrequest
on - BefehlMit diesem Befehl kann die Lampe eingeschaltet werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Die Farbwerte und Helligkeit, die die Lampe nach dem Einschaltbefehl hat, hängt vom gespeicherten default-value ab. Standartmäßig ist dieser Weiß mit 6500K Farbtemperatur und 100% Helligkeit. Diesen Wert kann man über die App oder FHEM mittels dem Befehl "default" ändern.
Nur über die App kann man auch einstellen, dass jedesmal wenn die Lampe ausgeschaltet wird, der Zustand vor dem Ausschalten als default gespeichert wird.
Syntax und Beispiele:
set [NAME] on <RAMP>
set SchlafzimmerLicht on -> Lampe wird sofort eingeschaltet oder wird heller innerhalb <defaultramp> ms
set SchlafzimmerLicht on 0 -> Lampe wird sofort eingeschaltet, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht on 5000 -> Lampe wird heller innerhalb von 5s
off - BefehlMit diesem Befehl kann die Lampe ausgeschaltet werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] off <RAMP>
set SchlafzimmerLicht off -> Lampe wird sofort ausgeschaltet oder wird dunkler innerhalb <defaultramp> ms
set SchlafzimmerLicht off 0 -> Lampe wird sofort ausgeschaltet, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht on 5000 -> Lampe wird dunkler innerhalb von 5s
off - BefehlMit diesem Befehl kann die Lampe ausgeschaltet werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] off <RAMP>
set SchlafzimmerLicht off -> Lampe wird sofort ausgeschaltet oder wird dunkler innerhalb <defaultramp> ms
set SchlafzimmerLicht off 0 -> Lampe wird sofort ausgeschaltet, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht off 5000 -> Lampe wird dunkler innerhalb von 5s
toggle - BefehlMit diesem Befehl kann der Zustand der Lampe gewechselt werden (entspricht on/off-Befehl). Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] toggle <RAMP>
set SchlafzimmerLicht toggle -> Lampe wird sofort an/ausgeschaltet oder wird heller/dunkler innerhalb <defaultramp> ms
set SchlafzimmerLicht toggle 0 -> Lampe wird sofort an-/ausgeschaltet, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht toggle 5000 -> Lampe wird heller/dunkler innerhalb von 5s
bright - BefehlMit diesem Befehl kann die Helligkeit der Lampe von 0-100% geändert werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet. Eine Helligkeit von 0% führt den off-Befehl aus.
Syntax und Beispiele:
set [NAME] bright [BRIGHT] <RAMP>
set SchlafzimmerLicht bright 50 -> Helligkeit der Lampe wird sofort auf 50% gestellt oder wird heller/dunkler bis 50% innerhalb <defaultramp> ms
set SchlafzimmerLicht bright 0 -> Helligkeit der Lampe wird sofort auf 50% gestellt, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht bright 5000 -> Helligkeit der Lampe wird heller/dunkler bis 50% innerhalb von 5s
hsv - BefehlMit diesem Befehl kann die Farbe der Lampe im HSV-Farbraum eingestellt werden. Dabei ist der Hellwert (value) immer 100%, der Farbwert (hue) kann von 0-359 und die Sättigung (saturation) von 0-100 eingestellt werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] hsv [HUE] [SAT] <RAMP>
set SchlafzimmerLicht hsv 120 100 -> die Farbe der Lampe wird sofort auf Grün gestellt oder ändert sich zu Grün innerhalb <defaultramp> ms
set SchlafzimmerLicht hsv 180 100 0 -> die Farbe der Lampe wird sofort auf Cyan gestellt, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht hsv 20 75 5000 -> die Farbe der Lampe ändert sich zu einem Braunton innerhalb von 5s
hue - BefehlMit diesem Befehl kann der Farbwert (hue) der Lampe im HSV-Farbraum von 0-359 eingestellt werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] hue [HUE] <RAMP>
set SchlafzimmerLicht hue 320 -> der Farbwert der Lampe wird sofort auf 320 gestellt oder ändert sich zu 320 innerhalb <defaultramp> ms
set SchlafzimmerLicht hue 45 0 -> der Farbwert der Lampe wird sofort auf 45 gestellt, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht hue 160 5000 -> der Farbewert der Lampe ändert sich zu 160 innerhalb von 5s
sat - BefehlMit diesem Befehl kann die Sättigung (sat) der Lampe im HSV-Farbraum von 0-100 eingestellt werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Syntax und Beispiele:
set [NAME] sat [SAT] <RAMP>
set SchlafzimmerLicht sat 50 -> die Sättigung der Lampe wird sofort auf 50 gestellt oder ändert sich zu 320 innerhalb <defaultramp> ms
set SchlafzimmerLicht sat 20 0 -> die Sättigung der Lampe wird sofort auf 20 gestellt, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht sat 100 5000 -> die Sättigung der Lampe ändert sich zu 100 innerhalb von 5s
rgb - BefehlMit diesem Befehl kann die Farbe der Lampe im RGB-Farbraum eingestellt werden. Der RGB-Wert kann dabei als Hex-Wert ("000000" - "FFFFFF") oder einzeln für Rot, Gelb und Grün (0 - 255) angegeben werden. Als optionaler Parameter kann eine Rampenzeit (in Millisekunden, mindestens 30ms oder 0) angegeben werden, welche die Lampe vom Ist-Zustand innerhalb der Zeit zum Soll-Zustand überführt. Ohne Angabe des Parameters wird die Zeit aus dem
Attribut defaultramp genommen. Ist dieses auch nicht gesetzt, wird die Zeit 0 angenommen und sofort geschaltet.
Bei einem RGB-Wert von "000000" bzw "0 0 0" wird die Lampe ausgeschaltet.
Syntax und Beispiele:
set [NAME] rgb [RRGGBB] <RAMP> oder set [NAME] rgb [RED] [GREEN] [BLUE] <RAMP>
set SchlafzimmerLicht rgb 00FF00 oder set SchlafzimmerLicht rgb 0 255 0 -> die Farbe der Lampe wird sofort auf Grün gestellt oder ändert sich zu Grün innerhalb <defaultramp> ms
set SchlafzimmerLicht rgb 00FFFF 0 oder set SchlafzimmerLicht rgb 0 255 255 -> die Farbe der Lampe wird sofort auf Cyan gestellt, auch mit gesetzem Attribut <defaultramp>
set SchlafzimmerLicht rgb D86C36 5000 oder set SchlafzimmerLicht rgb 216 108 54 5000 ->die Farbe der Lampe ändert sich zu einem Braunton innerhalb von 5s
### TODO ###
dimup
dimdown
color
ct
start_cf
stop_cf
scene
name
default
reopen
statusrequest
5 - ReadingsMomentan spiegeln die Readings nur den Zustand der Lampen wieder. Diese ergeben sich aus den entsprechenden Set-Befehlen (oder durch das Steuern über die App).
Wenn das Reading "color_mode" auf "HSV" steht, dann entsprechen die Werte von "hue", "saturation" und "bright" dem aktuellen Zustand der Lampe. Die Readings "ct" und "rgb", "rgb_red", "rgb_green", "rgb_blue" entsprechend dem Zustand, den die Lampe hatte, als der entsprechende Farbmodus zuletzt an war. Das gilt auch, wenn "color_mode" auf "RGB" bzw "ct" steht.
6 - AttributeFolgende Attribute stehen zur Verfügung:
defaultramp - AttributMit diesem Attribut kann die Dauer der "Änderungsrampe" in Millisekunden angegeben werden. Dieser Wert ist immer dann wirksam, wenn kein anderer Wert im Befehl angegeben wird. Die Mindestdauer beträgt 30ms.
Hinweis: Wenn das Attribut "defaultramp" gesetzt ist und ein Befehl trotzdem sofort ausgeführt werden soll, dann muss als Rampendauer 0 im Befehl angegeben werden.
7 - SonstigesEs gibt zwei versteckte Befehle, welche nur genutzt werden sollten, wenn man weiß, wie die API der Lampen funktioniert. Diese sind nicht per Dropdown-Menü verfügbar, sondern müssen über die Kommandozeile eingegeben werden.
Diese lauten:
raw - BefehlMit diesem Befehl kann ein Kommando direkt an die Lampe geschickt werden ohne das er vorher vom Modul verarbeitet wird (ausser das Anhängen von "\r\n"). Genauere Infos über die gültigen Kommandos gibt es hier:
www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdfSyntax und Beispiele:
set [NAME] raw [COMMAND]
set SchlafzimmerLicht raw {"id":1,"method":"set_power","params":["off","smooth",3000]} -> entspricht set SchlafzimmerLicht off 3000
flush - BefehlGesendete, empfangene und fehlerhafte Kommandos werden in Warteschlangen gespeichert (SendQueue, AnsQueue, ErrQueue). Anschließend werden sie verarbeitet und, wenn sie erfolgreich abgearbeitet wurden, gelöscht. Die Warteschlangen kann man sich z.B. über folgenden Befehl ansehen:
list [NAME]
Ein Leeren der Listen ist über den Befehl "flush" möglich. Dabei werden die gelöschten Befehle ab einem Verbose-Level von 4 in den Log geschrieben. Beim Löschen der Gerätedefinition und Herunterfahren von FHEM wird der Befehl automatisch ausgeführt.
Syntax und Beispiele:
set [NAME] flush
set SchlafzimmerLicht flush
00 - EntwicklungUnter
https://github.com/thaliondrambor/32_YeeLight.pm/tree/devel gibt es einen wenig getesteten Entwicklungsstand. Wenn beim Testen geholfen wird, freue ich mich sehr.
Folgende Änderungen gibt es im Devel-Branch:
04 - Set - Steuern der Lampenblink - BefehlMit diesem Befehl kann die Lampe blinken. Werden keine weiteren Parameter angegeben, blinkt die Lampe 3 mal für je 1s (entspricht 1 Hz) in der aktuellen Farbe. Danach geht sie wieder in den vorherigen Zustand zurück. Mit dem ersten Parameter, kann eingestellt werden, wie oft die Lampe blinken soll. Der zweite Parameter gibt den Farbmodus vor. Dabei gibt es die Wahl zwischen "1" (RGB) und "2" (CT). Der dritte Parameter ist dann die Farbe. Entweder in Hex für RGB "000001" - "FFFFFF" oder als Farbtemperatur für CT "1700" - "6500". Der vierte Parameter gibt die Zeit eines Blinkvorganges in Millisekunden an und muss mindestens 100 ms betragen.
Syntax und Beispiele:
set [NAME] blink <COUNT> <MODE> <COLOR> <TIME>
set SchlafzimmerLicht blink -> Lampe blinkt 3 mal in der aktuellen Farbe oder der letzten Farbe, wenn die Lampe aus ist, für insgesamt 3s und geht dann wieder in den Ausgangszustand
set SchlafzimmerLicht blink 5 -> Lampe blinkt 5 mal in der aktuellen Farbe oder der letzten Farbe, wenn die Lampe aus ist, für insgesamt 3s und geht dann wieder in den Ausgangszustand
set SchlafzimmerLicht blink 10 1 FF0000 100 -> Lampe blinkt 4 mal in der Farbe Rot für insgesamt 1s (entspricht 10Hz) und geht dann wieder in den Ausgangszustand
set SchlafzimmerLicht blink 4 2 3500 5000 -> Lampe blinkt 4 mal mit eine Farbtemperatur von 3500 K für insgesamt 20s (entspricht 0,2Hz) und geht dann wieder in den Ausgangszustand
on-for-timer, off-for-timer, intervalsDiese Befehle sind aus der SetExtensions.pm entnommen und werden wie von anderen Modulen bekannt ausgeführt.
Syntax und Beispiele:
set [NAME] on-for-timer [TIME]
set SchlafzimmerLicht on-for-timer 120 -> Lampe ist für 120 Sekunden an (es wird defaultramp genutzt)
set [NAME] off-for-timer [TIME]
set SchlafzimmerLicht off-for-timer 180 -> Lampe ist für 180 Sekunden aus (es wird defaultramp genutzt)
set [NAME] intervals [INTERVAL1] <INTERVAL2> ...
set SchlafzimmerLicht intervals 07:00-08:00 16:30-18:00 -> Lampe wird 07:00 Uhr und 16:30 Uhr eingeschaltet und 08:00 Uhr und 18:00 Uhr ausgeschaltet (es wird defaultramp genutzt)
Anleitung für 32_YeeLightBridge.pm1 - Einrichten in FHEM und Define der BridgeDie 32_YeeLightBridge.pm und die 32_YeeLight.pm aus dem Devel-Branch herunterladen (
https://github.com/thaliondrambor/32_YeeLight.pm/tree/devel), in euren FHEM-Ordner packen. Da sich relevanter Code im Define-Teil geändert hat, bitte einen Neustart von FHEM durchführen mit:
shutdown restart
Die Bridge wird wie folgt definiert:
define [NAME] YeeLightBridge
Hinweis: Beide Dateien (YeeLight und YeeLightBridge) müssen aus dem Devel-Branch geholt werden, ansonsten kann es zu Problemen kommen.
Hinweis: Es kann nur eine Bridge definiert werden.
2 - Funktion der BridgeDie Bridge hört im Netzwerk auf Multicast-Nachrichten der Lampen. Diese werden gesendet, wenn die Lampen hardware-seitig eingeschaltet werden (Spannung) und im Anschluss in regelmäßigen Abständen. Außerdem ist es mit einer Such-Nachricht möglich, dass aktiv der Multicast angefordert wird, was leider im Modul noch nicht funktioniert.
Über die Multicast-Nachrichten können weitere Informationen bezogen werden, die über einen normalen StatusRequest nicht erhältlich sind. Dies sind:
- ID - eine einzigartige Identifizierungskennung
- IP - musste bis jetzt z.B. über den Router gesucht werden
- FW-VER - die aktuelle Firmware-Version
- MODEL - das Lampenmodel (z.B. color)
- support - unterstütze Methoden
Über die ID werden bereits definierte Geräte gesucht. Wird eines gefunden, so werden alle Daten überprüft und aktualisiert. Die Aktualisierung der IP-Adresse kann mit dem
Attribut updateIP (dazu mehr später) unterbunden werden.
Wenn kein Gerät unter der ID gefunden wird, dann wird nach der IP-Adresse gesucht. Wird hier ein Gerät gefunden, so werden auch wieder die Daten aktualisiert. Durch das
Attribut updateIP wird im Umkehrschluss hierbei nicht die ID geändert.
Wird auch mittels der IP-Adresse kein Gerät gefunden, dann wird ein neues angelegt (wenn autocreate aktiv ist). Der Name lautet dann: YeeLight_[ID] oder YeeLight_[NAME], wenn der Name in der Lampe schonmal mit dem "set name"-Befehl gesetzt wurde.
3 - Set - Steuern der BridgePlatzhalter
4 - Attribute Folgende Attribute stehen zur Verfügung:
- defaultramp
- updateIP
- timeout
- keepAlive
defaultrampDas Attribut "defaultramp" hat die selbe Funktion, wie schon bei den Lampen selber, gilt aber für alle Lampen. Dabei gilt folgende Priorität: Wird eine Rampenzeit im Befehl angegeben, so hat diese immer Vorrang. Fehlt diese, so wird die Rampenzeit aus dem Attribut "defaultramp" des Devices genutzt. Wenn auch dieses nicht gesetzt ist, so wird die Rampenzeit aus dem Attribut "defaultramp" der Bridge genutzt. Wenn auch dieses fehlt, dann beträgt die Rampenzeit "0" und es werden alle Befehle sofort ausgeführt. Es gilt also
Befehl > Device > Bridge > 0.
updateIPMit dem Attribut "updateIP" kann verhindert werden, dass ein von Hand angelegtes Device durch die Bridge eine andere IP oder ID bekommt. Standartmäßig (wenn das Attribut nicht gesetzt ist) ist diese Funktion aktiviert. Dadurch werden die Lampen durch die ID identifiziert und die IP angepasst, wenn sie z.B. durch den DHCP geändert wurde.
Das Attribut kann sowohl in der Bridge, als auch im Device selber gesetzt werden, wobei das Attribut im Device Vorrang hat. "0" bedeutet, dass keine Aktualisierung stattfindet. Bei "1" wird die IP/ID aktualisiert.
timeoutMit dem Attribut "timeout" kann eingestellt werden, nach wie vielen Sekunden ohne Antwort auf einen gesendeten Befehl, die Verbindung als "disconnected" gilt. Der Timeout beträgt ohne das Attribut 3 Sekunden. Das Attribut kann sowohl in der Bridge, als auch im Device selber angelegt werden, wobei das Attribut im Device Vorrang hat. Ist der Timeout auf "0" gestellt, so werden fehlende Rückmeldungen die Lampe nie auf "disconnected" setzen. Die Nachricht, welche nicht innerhalb des Timeouts beantwortet wurde, wird in der ErrorQueue gespeichert. Hat die Lampe den Status "disconnected" so können keine Befehle an die Lampe gesendet werden, außer "reopen".
keepAliveWenn keine Befehle an die Lampe gesendet werden, kann es sehr lange dauern, bis erkannt wird, dass die Lampe nicht mehr erreichbar ist. Deswegen kann mit dem Attribut "keepAlive" ein regelmäßiges Signal an die Lampe gesendet werden. Der minimale Zeitabstand für zwei keepAlive beträgt 60 Sekunden. Das Attribut kann sowohl in der Bridge, als auch im Device selber angelegt werden, wobei das Attribut im Device Vorrang hat. Ist das Attribut nicht gesetzt, so wird kein regelmäßiges Signal gesendet (entspricht keepAlive = 0). Zum Erkennen von gestörten Verbindungen, wird dabei das Attribut "timeout" genutzt. Sollte dieses auf "0" gestellt sein, so kann auch mit "keepAlive" keine Störung erkannt werden.
Das gesendete Signal ist ein StatusRequest, so dass so auch eine regelmäßige Statusabfrage möglich ist. Wobei die Readings der Lampen im Normalfall sowie so aktuell sind.