Autor Thema: [32_YeeLight.pm][Devel 32_YeeLightBridge.pm] - Modul für Yeelight Wifi Lampen  (Gelesen 3380 mal)

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
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.pm

Gruß
thaliondrambor


###### Under Construction ######

Anleitung für 32_YeeLight.pm

0 - Vorwort

Mit 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 Lampen

Beim 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 FHEM

Bevor 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 Lampen

Die Lampen werden mit folgendem Befehl angelegt:
define [NAME] YeeLight [IP]
z.B.: define SchlafzimmerLicht YeeLight 192.168.0.15

4 - Set - Steuern der Lampen

Folgende 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Befehl
Mit 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 - Readings

Momentan 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 - Attribute

Folgende Attribute stehen zur Verfügung:
  • defaultramp

defaultramp - Attribut

Mit 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 - Sonstiges

Es 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
  • flush

raw - Befehl
Mit 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.pdf

Syntax und Beispiele:
set [NAME] raw [COMMAND]
set SchlafzimmerLicht raw {"id":1,"method":"set_power","params":["off","smooth",3000]} -> entspricht set SchlafzimmerLicht off 3000

flush - Befehl

Gesendete, 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 - Entwicklung

Unter 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 Lampen

blink - Befehl
Mit 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, intervals
Diese 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.pm

1 - Einrichten in FHEM und Define der Bridge

Die 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 Bridge

Die 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 Bridge

Platzhalter

4 - Attribute

Folgende Attribute stehen zur Verfügung:

  • defaultramp
  • updateIP
  • timeout
  • keepAlive

defaultramp
Das 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.

updateIP
Mit 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.

timeout
Mit 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".

keepAlive
Wenn 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.
« Letzte Änderung: 26 Dezember 2016, 21:07:48 von thaliondrambor »
Gefällt mir Gefällt mir x 5 Hilfreich Hilfreich x 1 Liste anzeigen

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #1 am: 14 Dezember 2016, 23:53:03 »
n'Abend,
das Timing könnte besser nicht sein. Gestern kam meine (erste) Lampe an - heute Abend habe ich dann selbst ein bisschen herumprobiert. Als ich im Forum noch mal deinen anderen Thread gesucht habe, habe ich dann gesehen, dass du das passende Modul schon veröffentlicht hast. Danke! 8)

Allerdings ist das hier dann leider auch schon der erste Bugreport ... schon die Definition
define blabla YeeLight x.x.x.x
lässt FHEM crashen; im Log findet man dann
2016.12.14 23:33:06 1: PERL WARNING: Prototype mismatch: sub main::to_json ($@) vs ($) at /usr/share/perl/5.20/Exporter.pm line 66.
2016.12.14 23:33:06 1: PERL WARNING: Prototype mismatch: sub main::from_json ($@) vs ($) at /usr/share/perl/5.20/Exporter.pm line 66.
Undefined subroutine &main::is_ipv4 called at ./FHEM/32_YeeLight.pm line 58.
Es juckt mich zwar in den Fingern, da noch selbst genauer nachzusehen, aber dann ist die Nacht wahrscheinlich schnell vorbei. Da morgen die Arbeit ruft, will ich also mal vernünftig sein. Das Feedback wollte ich trotzdem schon mal geben, vielleicht hast du ja schon eine Idee, woran das liegt.

Nebenbei: Ich finde, die Lampe macht von der Verarbeitung her einen guten Eindruck und gibt ein sehr schönes Licht. Die hatte definitiv ein FHEM-Modul verdient :-)

Gruß, Uli

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #2 am: 15 Dezember 2016, 05:30:00 »
Guten Morgen,

als ich deinen Post eben las, wusste ich sofort, wo der Fehler liegt. Ich hatte ehrlich gesagt ein anderes Verhalten erwartet,da es bei mir so funktioniert. Ich habe das Problem behoben. Es kann allerdings sein, dass das CPAN-Modul Data::Validate::IP noch installiert werden muss.

Der fehlerfreie Version hängt oben am ersten Post. Mehr heute Abend, denn ich muss auch arbeiten :-)

Gruß
thaliondrambor

Edit: Ich habe eine Möglichkeit gefunden die IP-Adresse mit dem Standartmodul Socket zu überprüfen. Ist nun implementiert.
Die Warnungen kommen meiner Meinung nach aus dem JSON::XS Modul. Ich weiß noch nicht so recht, wie ich die wegbekommen soll. Meiner Meinung nach rufe ich die "decode_json"-Funktion richtig auf, aber im JSON::XS Modul selber wird eine Funktion aus der Exporter.pm "falsch" aufgerufen. Wobei falsch ja relativ ist. Es gibt ja nur ein prototyp mismatch. Es funktioniert ja trotzdem alles.

Edit2: Ich habe ein Repository auf Github angelegt. Dort ist dann der aktuelle Stand und ein Entwicklungsstand zu finden.
https://github.com/thaliondrambor/32_YeeLight.pm
« Letzte Änderung: 15 Dezember 2016, 22:17:19 von thaliondrambor »

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #3 am: 16 Dezember 2016, 12:13:30 »
Super, damit funktioniert es :-) Und damit wird die YeeLight auch sofort wesentlich brauchbarer, denn sie reagiert sofort auf einen Umschaltvorgang. Die YeeLight-App geht ja den Umweg über eine chinesische
Cloud, und je später der Abend wird, um so zäher reagiert die Lampe (wenn 1.3 Mrd. Chinesen aufwachen und ihre Smartphones zücken, geht offenbar die große Firewall in die Knie).

Wirst du eigentlich (analog wie in WifiLight) auch einen Parameter "defaultramp" einbauen? Fänd ich super.
Bei "set rgb" fände ich die übliche Hex-Notation (#RRGGBB) einfacher und lesbarer, kann man Dich überzeugen, das noch zu ändern? :)

Im devel-Zweig geht es ja schon gut voran, vor allem den "colortemperature" Modus finde ich wichtig (sollte man den nicht "ct" abkürzen?)

Ich werd am Wochenende mal versuchen, die YeeLight in LightScene und HomeBridge einzubauen (ohne irgendwelche Anpassungen taucht die Lampe in HomeKit bereits auf und lässt sich zumindestens an und aus schalten). Übrigens ist auch noch eine weiße Lampe zu mir unterwegs. Ich bin mal gespannt, wie die sich dann mit dem Modul verhält.

Gruß, Uli

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15741
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #4 am: 16 Dezember 2016, 12:22:23 »
für homebridge und auch den colorpicker wäre es gut wenn das rgb kommando (zumindest optional) auch RRGGBB als hex verstehen würde. auch (zusätzliche) getrennte kommandos für hue und saturation wären gut für den colorpicker und widgetOverride.

vielleicht magst du dir auch mal die kommandos und readings die hue und lightify verwenden anschauen. je kompatibler und ähnlicher die module untereinander sind um so einfacher wird es für die frontends neue gerate einzubinden.

auch farbige lampen icons über die beiden Color_devStateIcon routinen aus Color.pm lassen sich dann einfacher verwenden.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #5 am: 16 Dezember 2016, 14:48:47 »
Huhu, also Attribute sind definitiv vorgesehen, aber mit denen habe ich mich noch gar nicht beschäftigt. Deswegen gibt es noch keine.

Ich möchte erstmal alle Grundfunktionen der Lampe umsetzen. Danach mache ich mich an die Funktionen, die die Lampe nicht hat, aber FHEM dann realisiert.

Die RGB Notation in Hex werde ich umsetzen. Das geht schnell. Da ich bis jetzt noch keine anderen steuerbaren Lampen hatte, weiß ich gar nicht so genau, was die anderen Module so können :-)
Aber ich werde versuchen das Modul möglichst nah an die anderen zu bauen.

Gesendet von meinem SM-G930F mit Tapatalk

Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Alexk30

  • Newbie
  • Beiträge: 2
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #6 am: 16 Dezember 2016, 15:01:41 »
Super das du dieses Modul umgesetzt hast. Meine beiden Yeelight RGB´s wurde einwandfrei erkannt und funktionieren bestens. Ich freue mich auf deine Erweiterungen (colorpicker etc.) Vielleicht hast du ja auch später die Möglichkeit die Lightscence aus der APP einzubauen.

Nochmals vielen Dank für deine Mühe und vorallem Zeit.

Gruß Alex

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #7 am: 16 Dezember 2016, 21:32:37 »
N'Abend,

ich habe mal ein bisschen weitergebastelt. Ich habe den Code etwas optimiert, wovon ihr nicht so viel merken solltet. Es wurden aber auch ein paar Funktionen hinzugefügt:
RGB nimmt nun auch Hex-Werte (RRGGBB)
Hue und Saturation können auch einzeln gesetzt werden
Attribut defaultramp wurde hinzugefügt (Standartzeit falls nicht anders im Befehl angegeben)

Den aktuellen Stand findet ihr im Devel-Branch von Github: https://github.com/thaliondrambor/32_YeeLight.pm/tree/devel

Übrigens ist auch noch eine weiße Lampe zu mir unterwegs. Ich bin mal gespannt, wie die sich dann mit dem Modul verhält.

Ich sehe bei mir keinen Anwendungsfall, wo sich die weißen Lampen lohnen für gerade mal 1-2€ weniger. Sie funktionieren aber grundsätzlich genauso, wie die farbigen Lampen. Ich muss dann nur einen Typ hinzufügen und die Funktionen deaktivieren, die die weiße Lampe nicht kann.

Es gibt übrigens gerade von Xiaomi einen Betatest für die Steuerung der Lampen mit IFTTT und mit Echo. Das soll wohl bereits gut laufen. Wann es das für die Allgemeinheit gibt, weiß ich nicht.


Es gibt eine Funktion, die ich gerne implementieren möchte, bei welcher ich aber nicht genau weiß, wie am besten.
Momentan kann man an die Lampe Befehle senden auch wenn sie aus ist. Die Lampe quittiert das auch mit einem "ok", aber die Werte werden nicht übernommen. Man kann also die Lampe nicht auf z.B. Blau stellen, wenn sie aus ist, und beim einschalten ist sie dann tatsächlich blau. Das ist natürlich unschön.

Mir fallen drei Möglichkeiten dazu ein:
1. Die Lampe wird automatisch eingeschaltet, wenn sie aus ist und einen Befehl erhält.
2. Es können keine Befehle gesendet werden, wenn sie aus ist (on, toggle, statusrequest usw. gehen natürlich immer).
3. Der Befehl wird in FHEM gespeichert und beim nächsten Einschalten ausgeführt.

Ich tendiere grundsätzlich zu 1. bin aber am Überlegen, ob man nicht alle drei implementieren und per Attribut das gewünschte Verhalten auswählen sollte. Auch dann würde ich 1. als Default nehmen.

Wie ist eure Meinung dazu?

Gruß
thaliondrambor

Offline Alexk30

  • Newbie
  • Beiträge: 2
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #8 am: 16 Dezember 2016, 22:26:22 »
1. soll bedeuten, wenn ich der Lampe den Befehl "Blau 50" gebe schaltet sie sich so ein?

Gruß Alex

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #9 am: 16 Dezember 2016, 22:33:38 »
Genau. Momentan passiert gar nichts. Also nicht mal eine Fehlermeldung.

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #10 am: 16 Dezember 2016, 23:09:51 »
Möglichkeit 1 halte ich auch für die intuitive. Umgekehrt fände ich dann auch logisch, den Helligkeitswert 0 zu erlauben und die Lampe dadurch auszuschalten.

Bei den Hex-Werten ist mir noch ein Mini-Fehlerchen aufgefallen .. momentan nimmt er die führenden Nullen weg (Blau wird z.B "FF" statt "0000FF"). Aber im Set-Befehl akzeptiert er das umgekehrt nicht, das ist natürlich schlecht für Automatisierungen. Vielleicht lieber
       my $hexrgb              = sprintf("%06X",$rgb);
Ebenfalls für Automatisierungen wie z.B. abspeichern von Ist-Werten fände ich gut, wenn Readings und Set-Befehle konsistent wären. "set ct 2900" für die Farbtemperatur ist prima, aber dazu passend sollte in colormode dann auch "ct" stehen und auch das Reading für die Farbtemperatur sollte so heißen. Analog natürlich für alle anderen Werte.

Bitte nicht falsch verstehen, wenn ich immer wieder was zu "motzen" habe - ich finde es klasse, wie rasant du das entwickelst  8)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7485
  • fhem.cfg befreite Zone!
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #11 am: 17 Dezember 2016, 08:28:12 »
Möglichkeit 1 halte ich auch für die intuitive. Umgekehrt fände ich dann auch logisch, den Helligkeitswert 0 zu erlauben und die Lampe dadurch auszuschalten.

So weit ich weiß verhält sich Hue auch so. Wäre also logisch.

Zitat
Ebenfalls für Automatisierungen wie z.B. abspeichern von Ist-Werten fände ich gut, wenn Readings und Set-Befehle konsistent wären. "set ct 2900" für die Farbtemperatur ist prima, aber dazu passend sollte in colormode dann auch "ct" stehen und auch das Reading für die Farbtemperatur sollte so heißen. Analog natürlich für alle anderen Werte.

Bitte nicht falsch verstehen, wenn ich immer wieder was zu "motzen" habe - ich finde es klasse, wie rasant du das entwickelst  8)

Generell sollten Setnamen und Readingsnamen gleich lauten, dann fügt nämlich FHEM bei der Set Auswahl im Frontend automatisch den aktuellen Readingswert ein.


Und zum Schluss ein Danke für Deine Arbeit und weiterhin viel Erfolg und Spaß mit Deinem Modul.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #12 am: 18 Dezember 2016, 00:52:57 »
So,

habe ein paar kleinere Korrekturen vorgenommen.
Außerdem habe ich die ReadFn gefunden und verstanden :-) Nun werden die Statusänderungen, welche die Lampen verschicken, ausgelesen und die Readings werden gesetzt. Nicht nur, dass das Last vom Modul nimmt, da nicht ständig StatusRequests durchgeführt werden müssen. Jetzt sieht man in FHEM auch die Änderungen, wenn man z.B. mit dem Handy schaltet.

Die Lampen schalten sich jetzt bei den Befehlen ein, wo es nötig ist. Außerdem schaltet eine Helligkeit von 0 die Lampen aus.

Die Readings und Set-Befehle wurden aneinandern angepasst. Deswegen wäre es wohl sinnvoll, die Readings mal zu löschen, damit da nicht zig ungenutzte rumschwiren.

Es gibt auch noch ein paar neue Funktionen. Es kann der Lampe ein Namen gegeben werden (also direkt in der Lampe gespeichert). Der Default-Status der Lampe kann gespeichert werden (Farbe und Helligkeit die sie nach Spannungswiederkehr hat). Es kann eine Farbfolge gestartet werden (genaueres folgt in der Hilfe). Außerdem habe ich drei Szenen aus der App eingefügt (sunrise, sunset, happy_birthday), welche über "scene" gestartet werden können.

Da das ganze mittlerweile recht umfangreich ist, werde ich mich mal auch an eine Hilfe/Funktionsbeschreibung machen.

Bitte nicht falsch verstehen, wenn ich immer wieder was zu "motzen" habe - ich finde es klasse, wie rasant du das entwickelst  8)

Motz ruhig weiter. Deswegen habe ich es ja unter anderem schon jetzt zur Verfügung gestellt. Erstens dachte ich, dass es bestimmt auch schon jetzt Leute gibt, die mit dem kleinen Funktionsumfang was anfangen können. Aber vor allem wollte ich natürlich Feedback und Fehler finde. Ich alleine mit meinen paar Lampen, wovon ich beim Programmieren immer nur mit einer spiele, finde nunmal nicht alle Fehler und/oder Eventualitäten.

Aktueller Stand wie üblich auf Github und ich lade Sie auch mal wieder oben im ersten Post hoch.

Edit 19.12.:
Anstatt an einer Anleitung habe ich mich heute mit einem aufgetretenem Problem befasst. Da die Antworten der Lampen zu schnell bzw. nicht in genau definierten Reihenfolgen ankommen, hat das Modul Fehler ausgeworfen. Also habe ich zwei Warteschlangen erstellt, je eine für die gesendeten Befehle und eine für die erhaltenen Nachrichten. So können diese ausgewertet werden, ob es Benachrichtigungen von der Lampe sind oder ob sie Antworten auf die Befehle sind, und entsprechend verarbeitet und die Warteschlangen geleert werden. Das hat echt eine Menge Zeit gebraucht, bis es funktioniert.

Zusätzlich gibt es jetzt noch einen "reopen"-Befehl, falls die Lampe mal offline ist.
Feedback darüber, wie die Lampen bei euch laufen, ist gern gesehen.
« Letzte Änderung: 18 Dezember 2016, 19:07:52 von thaliondrambor »

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #13 am: 18 Dezember 2016, 22:47:28 »
Moin,

ich habe nach dem schlechten Tatort noch die neue Modulversion mit Spannung installiert und direkt mal ein paar ColorFlows probiert  ;)

Eine Kleinigkeit ist direkt aufgefallen: Für "Action" werden die Werte 1, 2, 3 gefordert, laut Inter-Operation Specification sollten es 0, 1, 2 sein.
return "$name start_cf: action ($args[1) must be 1, 2 or 3." if ($args[1] < 1) || ($args[1] > 3);
Dabei ist an der "0" gerade spannend, dass man eine kurze Animation abspielen kann und die Lampe danach wieder zum Ausgangszustand zurückgeht. Damit sind z.B. schöne diskrete Benachrichtigungen möglich (z.B. Waschmaschine ist fertig -> zwei mal blau blinken)
set yl start_cf 3 0 500,1,255,100,500,1,1,1
In Homekit habe ich die YeeLight teilweise erfolgreich eingebunden. An/Aus und Helligkeit verhalten sich wie erwartet, aber in den meisten Fällen wird bei einer geänderten Farbe die Saturation auf 100 gestellt (gefühlt jedes dritte bis vierte Mal funktioniert es wie gewollt). Ich habe gemutmaßt, dass hier die Set-Befehle für Hue und Saturation gegenseitig "wettlaufen" und versucht, das durch Delays provisorisch weg zu bekommen. Allerdings ohne Erfolg.
attr yl homebridgeMapping clear  On=power,valueOn=on,valueOff=off,cmdOn=on,cmdOff=off Hue=hue::hue,delay=100 Brightness=bright::bright Saturation=sat::sat,delay=300Das habe ich aber bereits heute Nachmittag mit der vorherigen Modulversion ausprobiert, möglicherweise verhält es sich jetzt schon wieder anders. Ich kann's gerade leider nicht ausprobieren.

So .. gute Nacht allerseits!

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #14 am: 19 Dezember 2016, 20:57:37 »
Eine Kleinigkeit ist direkt aufgefallen: Für "Action" werden die Werte 1, 2, 3 gefordert, laut Inter-Operation Specification sollten es 0, 1, 2 sein.

Danke. Habe ich gleich behoben und die Kontrolle der Parameter für die colorflows noch etwas erweitert. Mehr ist Heute aber nicht drin.

Mich würde interessieren, ob die Saturation in Verbindung mit de Homekit jetzt funktioniert. Wenn nicht wäre ein Log mit verbose 5 ganz interessant. Da sieht man dann genau, wann welcher Befehl gesendet wird, wann die Antwort und die Benachrichtigung kommt und wann was in die Warteschlangen geschrieben, bearbeitet und gelöscht wird.
Ich hoffe einfach mal, dass es auch so geht.^^

Edit: Ich habe eben deinen Code fürs blaue Blinken ausprobiert:
set yl start_cf 3 0 500,1,255,100,500,1,1,1
Leider ist mir da was unschönes aufgefallen. Wenn die Lampe aus ist, z.B. Tags über, bleibt sie nach dem Befehl an, da für Sie anscheinend der vorherige Status der Status ist, der unter default gespeichert ist. Das ist natürlich blöd.

Mit dem
set yl start_cf 3 2 500,1,255,100,500,1,1,1würde sie zwar aus gehen, aber eben immer, auch wenn Sie vorher an war.

Eventuell überschreibe ich die Action "0" mit dem Modul, so dass die Lampe am Ende wieder ausgeht, wenn sie vorher aus war.

Edit2: Es waren dann doch quasi nur zwei Zeilen Code. Da konnte ich nicht widerstehen. Aber nun Gute Nacht ^^
« Letzte Änderung: 19 Dezember 2016, 21:24:28 von thaliondrambor »

Offline Morrino

  • New Member
  • *
  • Beiträge: 47
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #15 am: 20 Dezember 2016, 09:34:38 »
Hi,

danke für das Modul.
Spricht etwas dagegen das die Stehlampe nicht mit deinem Modul funktioniert?
Finde die sehr interessant und würde mir sie heute bestellen.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #16 am: 20 Dezember 2016, 10:31:07 »
Hi,

danke für das Modul.
Spricht etwas dagegen das die Stehlampe nicht mit deinem Modul funktioniert?
Finde die sehr interessant und würde mir sie heute bestellen.
Moin,
welche Stehlampe meinst du? Die Schreibtischlampe? Alle Lampen von Xiaomi mit WLAN sollten auch mit dem Modul laufen. Da ich sie nicht selber habe und testen kann, kann es allerdings sein, dass sie nicht alle Funktionen unterstützt.

Es gibt von Xiaomi auch ein SmartHome Gateway, welches dann auch die anderen SmartHome Komponenten steuern kann (Wifi, Bluetooth, ZigBee). Das Gateway kann ähnlich wie die Lampen gesteuert werden, allerdings auf einem anderen Port. Ich habe mir das Gateway bereits bestellt, aber es ist leider momentan über all nicht lieferbar. Eventuell werde ich auch für dieses Gateway ein Modul schreiben.

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #17 am: 20 Dezember 2016, 10:32:39 »
Spricht etwas dagegen das die Stehlampe nicht mit deinem Modul funktioniert?
Meinst du die Nachttischlampe oder die Schreibtischlampe? Die Nachttischlampe würde ich sofort kaufen, wenn sie denn WiFi hätte .. leider wird sie stattdessen über Bluetooth angesprochen, hier wird es wohl nichts mit dem Modul.

Alle anderen Produkte werden über WiFi angesteuert und der Hersteller schreibt, dass diese alle das gleiche Protokoll sprechen:
Zitat
Yeelight 3rd-party control protocol is a feature designed for developers and fans of IoT. All Yeelight WiFi products that are currently on market (Yeelight LED bulb (White), Yeelight LED bulb (Color)) as well as upcoming WiFi light products will support this protocol. Based on this protocol, users can develop their own applications and programs to discover and control Yeelight WiFi devices by using their favorite platform or language. This control protocol uses a SSDP-like discovering mechanism and JSON encoded controlling command, developers can discover and control their devices dynamically under the same LAN. Attention must be payed to following security issue: all the discover and control messages defined in this protocol are not encrypted, which means Yeelight devices’ security is guaranteed by the router’s security level, therefore user must be responsible for their devices’s security when using this control protocol.

Ich erstell mal eine Übersicht, damit wir wissen, worüber wir reden  8)

« Letzte Änderung: 20 Dezember 2016, 10:43:20 von f-zappa »

Offline Morrino

  • New Member
  • *
  • Beiträge: 47
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #18 am: 20 Dezember 2016, 12:31:51 »
Meinst du die Nachttischlampe oder die Schreibtischlampe? Die Nachttischlampe würde ich sofort kaufen, wenn sie denn WiFi hätte .. leider wird sie stattdessen über Bluetooth angesprochen, hier wird es wohl nichts mit dem Modul.


Ich meinte die Nachttischlampe. Das die nicht mit WLan ist hatte ich übersehen.
Damit fällt sie wohl doch flach.

Sehr sehr schade das gerade die nicht mit WLan ausgestattet ist  :o :(

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #19 am: 20 Dezember 2016, 13:27:41 »
Sehr sehr schade das gerade die nicht mit WLan ausgestattet ist  :o :(
Ja, ich hatte auch schon fast zwei davon bestellt. Die sehen auf den Bilder total gut aus.

Es gibt von Xiaomi auch ein SmartHome Gateway, welches dann auch die anderen SmartHome Komponenten steuern kann (Wifi, Bluetooth, ZigBee).

Wo ich Bluetooth lese: ob damit auch diese Nachttischlampen anzusteuern gehen?

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #20 am: 20 Dezember 2016, 13:31:46 »
Ja, mit dem Gateway sollten alle steuerbar sein. Nicht nur die Lampen. Es gibt ja zum Beispiel auch Lufterfrischer und und und...

Gesendet von meinem SM-G930F mit Tapatalk


Offline Morrino

  • New Member
  • *
  • Beiträge: 47
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #21 am: 20 Dezember 2016, 22:13:22 »
Es gibt von Xiaomi auch ein SmartHome Gateway, welches dann auch die anderen SmartHome Komponenten steuern kann (Wifi, Bluetooth, ZigBee). Das Gateway kann ähnlich wie die Lampen gesteuert werden, allerdings auf einem anderen Port. Ich habe mir das Gateway bereits bestellt, aber es ist leider momentan über all nicht lieferbar. Eventuell werde ich auch für dieses Gateway ein Modul schreiben.

Das wäre natürlich sehr interessant.
Find die Xiaomi Artikel allgemein eine interessante Alternative zu HUE und Co.
Aber auch Bewegungssensor etc...

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #22 am: 20 Dezember 2016, 22:35:15 »
Mich würde interessieren, ob die Saturation in Verbindung mit de Homekit jetzt funktioniert. Wenn nicht wäre ein Log mit verbose 5 ganz interessant. Da sieht man dann genau, wann welcher Befehl gesendet wird, wann die Antwort und die Benachrichtigung kommt und wann was in die Warteschlangen geschrieben, bearbeitet und gelöscht wird.
Ich habe das gerade noch einmal gecheckt .. mit der Eve-App tritt das Problem nicht auf, mit der Home-App von Apple aber reproduzierbar. Der Unterschied zwischen beiden ist im Log leicht zu erkennen: Eve setzt zuerst Hue und dann Saturation. Home macht das umgekehrt. Die Logs selbst schenk ich mir jetzt mal, weil ich inzwischen die Ursache kenne. Ich habe nämlich entdeckt: Wenn ich den Hue-Wert manuell über den Befehl setze ("set yl hue 0"), wird die Saturation ebenfalls auf 100 hochgedreht (also auch ganz ohne HomeKit-Beteilitung).
Und das sollte diese Zeile ja eigentlich verhindern:
                $sCmd->{'params'}->[1]  = $hash->{READINGS}{saturation}{VAL} + 0;# saturation
Nur, dass das Reading in den Anfangstagen des Moduls von "saturation" in "sat" umbenannt wurde.
Bei mir gibt's die alten Readings aber immer noch als Karteileichen, weil ich zu faul zum Löschen oder Neudefinieren war. Und bei "saturation" steht halt noch eine 100 drin :8
Also, dieses Problemchen kann mit einem "7x" behoben werden.
Für die Akten, mein homebridgeMapping sieht inzwischen so aus:
clear
Hue=hue::hue,minValue=0,maxValue=359,minStep=1
Brightness=bright::bright,minValue=0,maxValue=100,minStep=1
Saturation=sat::sat,minValue=0,maxValue=100,minStep=1

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #23 am: 20 Dezember 2016, 22:57:28 »
Mist, und schon knallt es an einer anderen Stelle  >:(
Ich habe eine LightScene, die gleichzeitig ct und bright setzt. Das bringt FHEM reproduzierbar zum Absturz. Reihenfolge ist egal.
2016.12.20 22:50:58 3: YeeLight e2.yl1 - set e2.yl1 bright 20
2016.12.20 22:50:58 5: e2.yl1 SendQueue: added {"params":[20,"smooth",5000],"id":2,"method":"set_bright"} with id:2
2016.12.20 22:50:58 5: SW: {"params":[20,"smooth",5000],"id":2,"method":"set_bright"}
2016.12.20 22:50:58 4: e2.yl1 is sending: {"params":[20,"smooth",5000],"id":2,"method":"set_bright"}
2016.12.20 22:50:58 3: YeeLight e2.yl1 - set e2.yl1 ct 3100
2016.12.20 22:50:58 5: e2.yl1 SendQueue: added {"method":"set_ct_abx","params":[3100,"smooth",5000],"id":3} with id:3
2016.12.20 22:50:58 5: SW: {"method":"set_ct_abx","params":[3100,"smooth",5000],"id":3}
2016.12.20 22:50:58 4: e2.yl1 is sending: {"method":"set_ct_abx","params":[3100,"smooth",5000],"id":3}
2016.12.20 22:50:58 4: reading from e2.yl1: {"id":2, "result":["ok"]}
2016.12.20 22:50:58 5: e2.yl1 AnswerQueue: added {"id":2, "result":["ok"]}
2016.12.20 22:50:58 3: e2.yl1 success sending 2: {"params":[20,"smooth",5000],"id":2,"method":"set_bright"}
2016.12.20 22:50:58 5: e2.yl1 SendQueue: deleted {"params":[20,"smooth",5000],"id":2,"method":"set_bright"}
2016.12.20 22:50:58 5: e2.yl1 AnswerQueue: deleted {"id":2, "result":["ok"]}
2016.12.20 22:50:58 4: reading from e2.yl1:
{"method":"props","params":{"bright":20}}
{"id":3, "result":["ok"]
2016.12.20 22:50:58 5: e2.yl1 AnswerQueue: added
{"method":"props","params":{"bright":20}}
{"id":3, "result":["ok"]
garbage after JSON object, at character offset 44 (before "{"id":3, "result":["...") at ./FHEM/32_YeeLight.pm line 739.

EDIT: Bei so einem Konstrukt bleibt alles gut:
set e2.yl1 ct 2900 ; sleep 1 ; set e2.yl1 bright 100Da verwurstelt sich wohl irgendwas in den Queues, die genau das verhindern sollten ...
« Letzte Änderung: 20 Dezember 2016, 23:05:44 von f-zappa »

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #24 am: 21 Dezember 2016, 00:35:46 »
Eigentlich ist das Problem ganz einfach. Bei {"id":3, "result":["ok"] fehlt ein "}" am Ende.

Wenn die Befehle zu "schnell" abgesendet werden, dann kommen manchmal die Antworten so schnell, dass quasi zwei in einem Receive stehen. Das habe ich versucht hier aufzutrennen: sub
YeeLight_Read
{
my ($hash) = @_;
my $name = $hash->{NAME};

my $buf = DevIo_SimpleRead($hash);
return undef if(!defined($buf));

my $read;
my $search = "}";
my $offset = 0;
my $result = index($buf, $search, $offset);

while ($result != -1)
{
my $sResult = index($buf, "}}", $offset);
$result++ if ($result == $sResult);
$result++;
$read = substr($buf,$offset,$result);
Log3 $name, 4, "reading from $name: $read";

Add_AnsQue($hash,$read);
$offset = $result + 1;
$result = index($buf, $search, $offset);
}

return undef;
}

Anscheinend war das nicht erfolgreich...
Mit den Regex und Zeichenketten auseinanderfriemeln habe ich es ehrlich gesagt nicht so^^
Die richtige JSON-Antwort kann blöderweise mit "} oder }} oder ]} enden. Das macht es irgendwie nicht gerade einfach. Ich denke, ich muss das wahrscheinlich verschachtelter machen. Oder jemand hat eine andere Idee.

In deinem Fall werde ich wohl hinten ausversehen die "}" abgeschnitten haben...Und das führt beim Decodieren des JSON-Codes zum Absturz. Es hat also eigentlich nichts mit den Queues an sich zu tun. Das Problem kommt erst beim Umwandeln der Antworten um sie dann auszuwerten.

Aber dafür ist jetzt keine Zeit mehr.

Ich habe übrigens gestern auch schon nach einer Evaluierung für JSON-Code geschaut, um solche Fehler abzufangen, damit nicht das ganze FHEM abstürzt. Leider habe ich noch nichts gefunden. Es gibt ein CPAN-Modul dafür, aber das müsste man natürlich extra noch nachinstallieren.

Gute Nacht.
« Letzte Änderung: 21 Dezember 2016, 00:41:25 von thaliondrambor »

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #25 am: 21 Dezember 2016, 20:13:20 »
Hallo,
erst mal riesen Dank für das Modul für das Yeelight.
Ich bekomme leider keine Verbindung hin, Fhem & Lampensoftware sind aktuell. Die Lampe kann mit der App auch gesteuert werden.
Leider steht im Fhem immer nur disconnected im Webinterface.
Ich hab zu Testzwecken erst ein mal nur dein Befehl übernommen und natürlich die IP der Lampe angepasst.
Im Standard Log steht vollendendes:
2016.12.21 16:04:52 1: PERL WARNING: Prototype mismatch: sub main::to_json ($@) vs ($) at /usr/share/perl/5.18/Exporter.pm line 66, <$fh> line 2286.
2016.12.21 16:04:52 1: PERL WARNING: Prototype mismatch: sub main::from_json ($@) vs ($) at /usr/share/perl/5.18/Exporter.pm line 66, <$fh> line 2286.
2016.12.21 16:04:52 3: YeeLight SchlafzimmerLicht defined at 192.168.178.35:55443
2016.12.21 16:04:52 3: Opening SchlafzimmerLicht device 192.168.178.35:55443
2016.12.21 16:04:52 3: Can't connect to 192.168.178.35:55443: Connection refused
2016.12.21 16:04:52 2: Attempt to write to disconnected device.
2016.12.21 16:04:52 1: PERL WARNING: Use of uninitialized value $ret in concatenation (.) or string at ./FHEM/32_YeeLight.pm line 602, <$fh> line 2286.
2016.12.21 16:04:52 1: PERL WARNING: Use of uninitialized value $ret in pattern match (m//) at ./FHEM/32_YeeLight.pm line 603, <$fh> line 2286.
2016.12.21 16:04:52 1: PERL WARNING: Use of uninitialized value $ret in concatenation (.) or string at ./FHEM/32_YeeLight.pm line 603, <$fh> line 2286.

Ich hoffe ihr könnt daraus etwas lesen, ich bin zwar gut im Foren durchstöbern aber so gut kenne ich mich leider nicht aus.
Schöne Grüße aus Niedersachsen bjbrill
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #26 am: 21 Dezember 2016, 20:19:01 »
Guten Abend,

@bjbrill
Ich vermute, dass du den Developer Mode in der Lampe noch nicht aktiviert hast. Dann läuft die Kommunikation nur verschlüsselt und das kann die API und damit FHEM nicht.
Zum Aktivieren des Developer Mode musst du in der Yeelight-App (nicht MiHome) die Lampe auswählen, dann oben rechts mit den drei Punkten die Einstellungen öffnen, dort auf "Developer Mode" und dann den Schalter hinter Developer Mode antippen.

Gruß

thaliondrambor

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #27 am: 21 Dezember 2016, 20:39:21 »
So einfach kann es sein,  :)

Ich hab den Development über die App eingeschaltet und schon bekomme ich auch eine Verbindung.

Herzlichen Dank für die Super schnelle Antwort, dann kann das getüftel jetzt ja los gehen  ;D
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #28 am: 21 Dezember 2016, 22:37:40 »
So, ich stelle euch dann mal wieder meine abendliche Arbeit zur Verfügung.

Als erstes habe ich das Problem mit den zu vielen bzw. schnellen Antworten behoben. Das war gar nicht so einfach, aber jetzt sollte das Modul diese richtig auseinander nehmen. Ich habe es mit drei Befehlen auf einmal versenden versucht und es hat mit der aktuellen Version immer geklappt.

Außerdem gibt es nun eine Überprüfung der gesendeten und der empfangenen Befehle, ob sie tatsächlich dem JSON-Format entsprechen. Sollte dies nicht der Fall sein, werden sie in einer ErrorQueue abgespeichert, die man dann z.B. über "list [NAME]" einsehen kann. Es wird vorher auch noch ein recht einfach gehaltener Versuch unternommen, die Zeichenkette zu reparieren (auf eckige Klammern am Ende und Anfang schauen und eventuell hinzufügen).
Also selbst fehlerhafte Zeichenketten sollten FHEM jetzt nicht mehr zum Absturz bringen.


Außerdem habe ich zwei neue Kommandos hinzugefügt, die allerdings nicht in der Auswahlliste erscheinen, da sie nur für Sonderfälle gedacht sind und voraussetzen, dass man sich mit der API und dem Modul auseinander gesetzt hat.

Mit "raw" kann man eigenen Code an die Lampen senden. Wenn dieser der Yeelight-API entspricht, wird er auch ausgeführt. Z.B.:
set [NAME] raw {"id":1,"method":"set_power","params":["off","smooth",3000]}Dies entspricht:
set [NAME] off 3000Wenn der Befehl nicht richtig ist, wird er trotzdem an die Lampe gesendet. Sollte er nicht dem JSON-Format entsprechen, dann landet er in der ErrorQueue. Auch die Antwort der Lampe, landet dort, wenn der Befehl nicht passt.

Mit "flush" können die Inhalte der drei Queues gelöscht werden. Die gelöschten Inhalte werden ab verbose "4" im Log gespeichert vor dem Löschen. Beim Löschen der Devices und beim Runterfahren von FHEM wird auch ein "flush" durchgeführt. Der Befehl sieht wie folgt aus:
set [NAME] flush
Ich hoffe es läuft jetzt alles so weit und alle schön fleißig testen. Die neue Version gibt es gleich auf Github.

(Die erste Hälfte der Bridge funktioniert schon, so dass bald auch mit autocreate und einer eindeutigen Identifizierung über die ID, unabhängig der IP-Adresse, gerechnet werden kann.)

Gruß

thaliondrambor
« Letzte Änderung: 21 Dezember 2016, 22:43:22 von thaliondrambor »

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #29 am: 22 Dezember 2016, 22:43:23 »
Guten Abend,

Folgende Änderungen gibt es im Devel-Branch:

04 - Set - Steuern der Lampen

blink - Befehl
Mit 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.
Geplant: Parameter für Farbe, Anzahl, Dauer (Frequenz)

Syntax und Beispiele:
set [NAME] blink
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

Außerdem habe ich einen Großteil der Anleitung im ersten Post geschrieben.

Gruß
thaliondrambor

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #30 am: 23 Dezember 2016, 17:53:24 »
Hallo,

das blinken kommt mit meiner Alarmanlage echt toll,
Alarmwarnung Gelb, Volles auslösen dann rot und zur Bestätigung des abschaltens blau.
Ich hab mal kurz über deine tolle Anleitung gelesen, die ich super verständlich finde, großes Lob.
Eine kleine Sache ist mir aufgefallen bei meinem Ubuntu funktioniert:
sudo CPAN install JSON::XS nicht,
bei mir muss das CPAN klein geschrieben sein also so:
sudo cpan install JSON::XS.
Es kann sein das da ein Raspi anders reagiert, wollte es nur erwähnt haben.
Ich wünsche schöne Feiertage und viel Erholung.
Schöne Grüße Björn


Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #31 am: 23 Dezember 2016, 18:41:08 »
Eine kleine Sache ist mir aufgefallen bei meinem Ubuntu funktioniert:
sudo CPAN install JSON::XS nicht,
bei mir muss das CPAN klein geschrieben sein also so:
sudo cpan install JSON::XS.

Da hast du recht, ist mir irgendwie durchgerutscht, bei meinem Debian muss es auch klein sein. Ist geändert. Danke.

Auch ein frohes Fest wünsche ich.

Edit: Ich habe es tatsächlich geschafft, dass die Bridge zum Großteil funktioniert. Ich bin wirklich ziemlich stolz auf mich gerade, dass ich das hinbekommen habe :-)

Folgende Änderungen gibt es damit im Devel-Branch:

Anleitung für 32_YeeLightBridge.pm

1 - Einrichten in FHEM und Define der Bridge

Die 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 und einlesen mit:
reload 32_YeeLight.pm
reload 32_YeeLightBridge.pm

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 Bridge

Die 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 Bridge

Platzhalter

4 - Attribute

Folgende Attribute stehen zur Verfügung:

  • defaultramp
  • updateIP

defaultramp
Das 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.

updateIP
Mit 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.

Ich hoffe es läuft ohne größere Probleme. Wenn keine über die Feiertage gemeldet werden, dann kommt die Bridge auch in den Master-Branch.

Gruß
thaliondrambor
« Letzte Änderung: 23 Dezember 2016, 22:25:26 von thaliondrambor »

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #32 am: 23 Dezember 2016, 22:41:53 »
Eine kleine Sache ist mir aufgefallen bei meinem Ubuntu funktioniert:
sudo CPAN install JSON::XS nicht,
bei mir muss das CPAN klein geschrieben sein also so:
sudo cpan install JSON::XS.
Es kann sein das da ein Raspi anders reagiert, wollte es nur erwähnt haben.

In dem Fall ist die Arie mit dem CPAN aber zum Glück sowieso unnötig. Das Perl-Modul ist bei Ubuntu und  Raspbian als Paket dabei.
# Ubuntu 16.04.1 LTS
libjson-xs-perl/stable,now 2.340-1+b2 armhf [installed]
  module for manipulating JSON-formatted data (C/XS-accelerated)
# Raspbian GNU/Linux 8
libjson-xs-perl/xenial 3.010-2build1 amd64
  module for manipulating JSON-formatted data (C/XS-accelerated)

Gruß, Uli

Offline f-zappa

  • New Member
  • *
  • Beiträge: 22
Antw:[32_YeeLight.pm] - Modul für Yeelight Wifi Lampen
« Antwort #33 am: 23 Dezember 2016, 23:23:14 »
Edit: Ich habe es tatsächlich geschafft, dass die Bridge zum Großteil funktioniert. Ich bin wirklich ziemlich stolz auf mich gerade, dass ich das hinbekommen habe :-)
Herzlichen Glückwunsch! Es ist ja gar nicht mal so viel Code, aber er erschließt sich mir noch nicht auf den ersten Blick.
Ich vermute mal, ich muss zuerst mein YeeLight löschen und dann
define ylb YeeLightBridgedefinieren, anschließend werden alle vorhandenen Lichter erkannt und als Device angelegt?

Aber .. jetzt genieß erst mal das Weihnachtsfest! Uns hast du mit dem YeeLight-Modul ja schon ein schönes Geschenk gemacht :-)

Gruß, Uli

Offline Morrino

  • New Member
  • *
  • Beiträge: 47
Hi

hast du auch geplant in die Bridge (wenn du damit das Gateway meinst) die anderen Yeelight Lampen mit zu unterstützen?
Bin von der Nachttisch Lampe immer noch sehr angetan. ;)

Übrigens scheint aktuell auch mal wieder die Schreibtisch Lampe lieferbar zu sein:
http://www.gearbest.com/table-lamps/pp_363779.html?wid=21

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Herzlichen Glückwunsch! Es ist ja gar nicht mal so viel Code, aber er erschließt sich mir noch nicht auf den ersten Blick.
Ich vermute mal, ich muss zuerst mein YeeLight löschen und dann
define ylb YeeLightBridgedefinieren, anschließend werden alle vorhandenen Lichter erkannt und als Device angelegt?

Aber .. jetzt genieß erst mal das Weihnachtsfest! Uns hast du mit dem YeeLight-Modul ja schon ein schönes Geschenk gemacht :-)

Gruß, Uli


Nein, das Löschen sollte eigentlich gar nicht nötig sein. Ein Neustart von FHEM sollte reichen (da sich was in der DefFn geändert hat). Anschließend sollte das Modul deine bereits angelegten Lampen automatisch den Multicast-Nachrichten zuordnen können und diese so anpassen, dass sie nun über die eindeutige ID anstatt der IP zugeordnet werden (außer du hast das Attribut "updateIP" auf "0" gesetzt).

Und der Code für die "Bridge" ist wirklich sehr kurz. Es wird nur die Verbindung zur Multicastgruppe aufgebaut und wenn Nachrichten empfangen werden, dann werden sie an das YeeLight-Modul weitergegeben. Dort gibt es dann zwei Funktionen (YeeLightBridge_xxx) die die Auswertung vornehmen. Der Code ist dann noch etwas mehr.

Hi

hast du auch geplant in die Bridge (wenn du damit das Gateway meinst) die anderen Yeelight Lampen mit zu unterstützen?
Bin von der Nachttisch Lampe immer noch sehr angetan. ;)

Übrigens scheint aktuell auch mal wieder die Schreibtisch Lampe lieferbar zu sein:
http://www.gearbest.com/table-lamps/pp_363779.html?wid=21

Nein, in diesem Fall ist es leider nicht das (hardware) Gateway von Xiaomi, sondern nur eine Softwarelösung für die WLAN-fähigen Lampen. Somit können diese automatisch angelegt werden und man bekommt noch ein paar mehr Informationen, die es vorher nicht gab (die wichtigste dabei ist die eindeutige ID).

Ich würde gerne auch das Gateway von Xiaomi ausprobieren, aber es ist immer noch kaum wo zu haben...außer man möchte 100€ dafür auf ebay ausgeben.

Edit:
Folgendes hat sich im Devel-Branch geändert:
00 - Entwicklung

...
...
...


04 - Set - Steuern der Lampen

blink - Befehl
Mit 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, intervals
Diese 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.pm

...
...
...


3 - Set - Steuern der Bridge

Platzhalter

4 - Attribute

Folgende Attribute stehen zur Verfügung:

  • defaultramp
  • updateIP
  • timeout
  • keepAlive

...
...
...


timeout
Mit 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".

keepAlive
Wenn 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.

Ich habe festgestellt, dass damit erstmal fast alle Funktionen der API für die Lampen umgesetzt sind. Es fehlen nur noch zwei:

Das erste sind Cron-Jobs (cron_add, cron_get, cron_del) mit denen man nach einer bestimmten Zeit (Timer) etwas ausführen kann. Allerdings ist der einzige mögliche Befehl momentan nur das Ausschalten. Deswegen habe ich mich dafür entschieden, dass ganze lieber über die SetExtensions.pm mit "on-for-timer", "off-for-timer" und "intervals zu erledigen.

Die zweite fehlende Funktion ist der Musik-Modus. Momentan ist die Lampe ein TCP-Server mit welchem sich FHEM verbindet und so die Befehle sendet. Diese Verbindung hat allerdings zwei Einschränkungen. Erstens sind so nur maximal 4 Verbindungen zulässig (eine davon baut FHEM auf, ich habe keine Idee, wieso dort noch drei andere dazu kommen sollten). Zweitens kann man so maximal 60 Befehle pro Minute an die Lampe senden. Auch hier denke ich, dass das im Normalfall kein Problem sein sollte. Während des Testens und Programmierens ist es mir zweimal passiert, dass die Lampe keine Befehle mehr entgegengenommen hat, aber da habe ich auch echt viel geschickt.
Man kann diese Beschränkungen umgehen, in dem man den Musik-Modus einschaltet. Dazu muss man erstmal die normale TCP-Verbinung aufbauen, dazu einen TCP-Server und dann der Lampe mitteilen, dass sie sich mit dem TCP-Server verbinden soll. Über diese neue Verbindung gibt es dann keine Beschränkungen mehr.
Auch wenn ich grundsätzlich der Meinung bin, dass es besser ist, keine Beschränkung zu haben als nur 60 Befehle pro Minute, ist das erstmal recht weit unten auf meiner Prioritätenliste. Dafür müsste ich mich erstmal damit beschäftigen, wie ich in FHEM ein TCP-Server aufbaue, der non-blocking ist.
Solltet ihr öfter mal an die 60-Befehle-Grenze kommen, so teilt mir dies bitte mit.

Neben dem Fertigstellen der Anleitung, steht auf meinem Plan, dass ich die unterschiedlichen Modele (RGB, W, LED-Stripe) mit ihren jeweiligen unterstützten Funktionen hinzufüge.
« Letzte Änderung: 26 Dezember 2016, 16:36:57 von thaliondrambor »

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Hallo Thaliondrambor,

wow, kann ich da nur sagen. Nachdem nun mein Urlaub begonnen hat, habe ich mich wieder mit meiner YeeLight beschäftigt und sehe, was du in der Zwischenzeit geschaffen hast. Respekt und mein Dank.

Ich habe das Modul installiert und konnte es sofort in Betrieb nehmen. Ein paar Anmerkungen dazu:

Zitat
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.

Ic habe "defaultramp" auf 5000 stehen und das funktioniert auch. Nun habe ich ab und an den Bedarf, die Lampe ohne Verzögerung ein/auszuschalten und habe das mit

set WohnzimmerLicht on 0

bzw.

set Wohnzimmerlicht off 0

probiert. Der 0-Wert greift allerdings nicht und die Lampe wird weiterhin mit Verzögerung ein/ausgeschaltet. Mach ich da beim Befehl etwas falsch?

Das nächste was ich mich frage, es gibt ein Abfall-Modul, welches auch von GitHub kommt und wie folgt installiert wird:

update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt

Dabei hat man die Möglichkeit, direkt über die Update-Funktion von fhem die neuesten Modulversionen installieren zu lassen. Kannst du das auch so umsetzen?

Und das nächste und vorerst letzte, hier im Thread ist von einer Nachttischlampe die Rede, welche allerdings über Bluetooth angesprochen wird. Der Raspi 3 hat ein solches Modul eingebaut, kann das evtl. dafür verwendet werden, um die Lampe anzusprechen?

Grüße,
cc13

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Ic habe "defaultramp" auf 5000 stehen und das funktioniert auch. Nun habe ich ab und an den Bedarf, die Lampe ohne Verzögerung ein/auszuschalten und habe das mit

set WohnzimmerLicht on 0

bzw.

set Wohnzimmerlicht off 0

probiert. Der 0-Wert greift allerdings nicht und die Lampe wird weiterhin mit Verzögerung ein/ausgeschaltet. Mach ich da beim Befehl etwas falsch?

So sollte es tatsächlich funktionieren, aber da haben sich gleich zwei Fehler in den Code geschlichen. Ist nun im Devel-Branch behoben.

Das nächste was ich mich frage, es gibt ein Abfall-Modul, welches auch von GitHub kommt und wie folgt installiert wird:

update all https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt

Dabei hat man die Möglichkeit, direkt über die Update-Funktion von fhem die neuesten Modulversionen installieren zu lassen. Kannst du das auch so umsetzen?

Ich würde eher dazu tendieren, das Modul in das offizielle Repository aufzunehmen, aber ich habe mich erstens noch garnicht damit beschäftigt, was ich dafür tun muss und zweitens würde ich das Modul gerne noch länger testen, bevor es dann die FHEM-Installation von irgendwelchen Leuten zerschießt.

Und das nächste und vorerst letzte, hier im Thread ist von einer Nachttischlampe die Rede, welche allerdings über Bluetooth angesprochen wird. Der Raspi 3 hat ein solches Modul eingebaut, kann das evtl. dafür verwendet werden, um die Lampe anzusprechen?

Grüße,
cc13

Ein kurzer Besuch auf Google ergab, dass es auch eine API für die Bluetooth-Lampen gibt. Die heißt Yeelight Blue Message Interface. Es würde mich schon reizen, dass auch in das Modul zu integrieren, allerdings habe ich keine passenden Lampen. Es gibt dafür auch bereits Umsetzungen mit python und node-js. Eventuell kann man da was einfaches integrieren, was darauf zugreift.

Für mich ist eher das Gateway http://xiaomi-mi.com/mi-smart-home/xiaomi-mi-gateway-2/ als nächstes interessant. Damit kann man auch die Taster und Sensoren von Xiaomi mit einbinden, welche auch günstig sind.

Edit:
Ich habe einen Merge vom Devel- mit dem Master-Branch durchgeführt.
« Letzte Änderung: 26 Dezember 2016, 21:05:31 von thaliondrambor »

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Zitat
So sollte es tatsächlich funktionieren, aber da haben sich gleich zwei Fehler in den Code geschlichen. Ist nun im Devel-Branch behoben.

Neue Version eingespielt und es funktioniert wie vorgesehen. Danke!

Das Gateway sehe ich nirgends zum kauf, zumindest nicht bei den mir bekannten Versendern. Interessant ist das schon, ich bleibe dran.

Offline Morrino

  • New Member
  • *
  • Beiträge: 47

Für mich ist eher das Gateway http://xiaomi-mi.com/mi-smart-home/xiaomi-mi-gateway-2/ als nächstes interessant. Damit kann man auch die Taster und Sensoren von Xiaomi mit einbinden, welche auch günstig sind.


Anscheinend wird hier auch schon am Gateway gearbeitet:
https://forum.fhem.de/index.php/topic,63212.msg544594.html#msg544594

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Anscheinend wird hier auch schon am Gateway gearbeitet:
https://forum.fhem.de/index.php/topic,63212.msg544594.html#msg544594

Danke für den Hinweis. Ich werde mich dort mal mit einklinken.


Könnt ihr bitte mal die aktuelle 32_YeeLightBridge.pm aus dem Master-Branch einspielen und für mich was testen?
Theoretisch sollte es funktionieren, dass eine Such-Nachricht rausgeschickt wird und die Lampen antworten. Bei mir funktioniert es nur leider nicht.
Ich habe im Yeelight-Forum nachgefragt und dort sagte man mir, dass es eventuell an Routern mit OpenWrt liegen kann. Diese verhindern durch das igmp snooping, dass die Nachrichten richtig bei den Lampen ankommen. Ich habe neben zwei FritzBoxen auch noch zwei Router für Freifunk, welche auf OpenWrt laufen. Auch wenn durch diese eigentlich kein Datenverkehr laufen sollte, so habe ich sie testweise mal beide außer Betrieb genommen. Leider gab es keine Besserung.

Also bitte mal folgendes testen. Verbose in der Bridge auf 4 stellen und dann einmal den Befehl "search" ohne weitere Parameter ausführen. Dann sollte im Log stehen:
YeeBridge: Search with M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1982
MAN: "ssdp:discover"
ST: wifi_bulb

Wenn bei euch im Anschluss die Lampen im Log mit einer "NOTIFY"-Message antworten, dann funktioniert es bei euch. Wenn ihr euch nicht sicher seit, dann einfach mal den Log ab dem "Search" posten.
Danke.

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Hi,

ich habe versucht, die Bridge mit

reload 32_YeelightBridge.pm

zu installieren, nachdem ich sie vorher in den FHEM-Ordner gelegt habt. Folgende Meldung bekam ich:

Can't locate IO/Socket/Multicast.pm in @INC (you may need to install the IO::Socket::Multicast module) (@INC contains: fhem.p/lib fhem.p/FHEM/lib ./FHEM/lib ./lib ./FHEM ./ /usr/local/FHEM/share/fhem/FHEM/lib . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl) at ./FHEM/32_YeeLightBridge.pm line 22.
BEGIN failed--compilation aborted at ./FHEM/32_YeeLightBridge.pm line 22.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Dann musst du noch das CPAN-Modul IO::Socket::Multicast auf deinem System installieren. Das sollte mit “sudo cpan install IO::Socket::Multicast“ gehen.

Ich glaube ich weiß, wieso das Senden der Suchanfrage nicht geht. Nur eine Lösung habe ich noch nicht. Ich werde mir was überlegen. Die periodischen Multicasts werden ja schon erkannt.

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Hier mein Logauszug dazu:

2016.12.28 16:57:48 4: YeeBridge: Search with M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1982
MAN: "ssdp:discover"
ST: wifi_bulb

2016.12.28 16:57:48 4: received multicast message on 239.255.255.250:1982:
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1982
MAN: "ssdp:discover"
ST: wifi_bulb

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Danke. Das hatte ich vermutet.
Das Problem ist, dass ich momentan nur einen Socket für die Multicast-Adresse aufbaue. Für die Suchnachricht müsste ich noch einen weiteren UDP-Socket aufbauen. Da ich das aber gerne auch non-blocking machen möchte, müsste ich einen zweiten FD im Modul hinterlegen. Nur keine Ahnung wie das geht :-) Alternativ müsste immer erst der Multicast geschlossen werden, dann die Suchnachricht über einen neuen Socket und im Anschluss wieder den Multicast aufbauen.

Es geht bestimmt auch mit zwei Sockets, ich weiß eben nur nicht wie. Das finde ich schon noch raus. Habe aber keinen PC dabei. Erst morgen Abend wieder.

Edit: Die neueste Version im Devel-Branch unterstützt nun auch das aktive Suchen nach Lampen über die Bridge. Außerdem kann man nun bis zu 10 Szenen in Attributen anlegen und abspielen lassen (userScene0 - userScene9). Mehr dazu morgen. Es ist doch schon recht spät.
« Letzte Änderung: 29 Dezember 2016, 23:22:55 von thaliondrambor »

Offline ChristianOS

  • New Member
  • *
  • Beiträge: 4
Guten morgen,

ein kurzer Exkurs zum Thema Yeelight telefeoniert nach Hause.

Da jeder Befehl für die Lampe bei der Verwendung mit der App nach Fernost gesendet wird und danach erst die Lampe gesteuert wird ist das bei der Verwendung mit FHEM fragwürdig, da im developer mode keine Verschlüsselung aktiv ist. Somit wird wirklich alles in die Cloud gepustet was man mit der Lampe macht. Ich habe den Netzwerkverkehr mal mitgeschnitten und so einige IPs herausbekommen, zu denen die Yeelight eine Verbindung aufbaut:

42.62.48.2
42.62.94.185
58.83.160.14
58.83.160.36
58.83.200.10
58.83.200.11
58.83.200.3
58.83.200.7

Wer die Yeelight nur über FHEM nutzen will und die App nur zum Einrichten braucht, sollte die Lan-to-Wan Verbindung der Yeelight nach dem Einrichten unterbinden.

Dazu gibt es zwei Wege:
a) Die o.a. IPs im Router sperren

oder die bessere Alternative
b) Der Yeelight eine feste IP zuweisen und dieser IP alle Ports zur Wan-Seite sperren (1:65535)

Oftmals steckt in den Routern eine Firewall drin, an der man solche kleinen Anpassungen vornehmen kann.

Bei (m)einem Asus Router unter [Erweiterte Einstelungen] -> [Firewall] -> [Netzwerkdienstfilter] -> [Lan-to-Wan Filter aktivieren] und dann die IP und die Portrange angeben

Auch wenn die Lampe nun keine Verbindung Richtung Internet mehr aufbauen kann, so funktioniert die Steuerung im Lan per FHEM ohne Probleme!
« Letzte Änderung: 30 Dezember 2016, 06:27:18 von ChristianOS »

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Merkwürdig, am 28.12. habe ich das Bridge-Modul installiert und seit diesem Tag ist meine Yeelight nicht mehr im Netz erreichbar...

Ich versuche sie gerade wieder mit der MI-App auf dem iPhone zu connecten, um die Lampe in mein Heimnetz zu bekommen. Allerdings mag das iOS 10 das ungesicherte Yeelight-WLAN nicht und wechselt während der Einrichtung immer wieder zurück in mein sicheres Heimnetz.

Mehr später.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Was bedeutet denn nicht erreichbar? Über FHEM? Oder auch nicht über die App? Ging das anpingen noch? Bei mir funktionieren alle 4 Lampen einwandfrei.

Mit dem iPhone und der zugehörigen App ist das ganze wirklich nicht so einfach. Über Android ist das deutlich komfortabler. Da verbindet die App sich nach Aufforderung komplett selber und das nur für ein paar Sekunden um die WLAN-Daten zu übertragen.

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Nicht erreichbar heißt: in FHEM stand disconnected, in der Fritzbox war kein Device bekannt, das Yeelight war also nicht mit meinem WLAN verbunden.

Ich habe kein Android im Haus, muss es also mit dem iPhone schaffen.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Das ist ja komisch. Das kann eigentlich nicht von der Bridge kommen. So eine Funktion gibt es gar nicht über die API. Weder WLAN ausschalten, IP-Adresse ändern noch Werkseinstellungen zurücksetzen. Hatte die Lampe danach von selber wieder ihr eigenes WLAN? Oder musstest du sie erst zurücksetzen?

Gesendet von meinem SM-G930F mit Tapatalk


Offline cc13

  • New Member
  • *
  • Beiträge: 28
So, alles zurück. Der Fehler liegt/lag bei mir. Ich hatte am gleichen Tag in der Fritzbox dem 5GHz und dem 2.4 GHz WLAN verschiedene Namen gegeben und nicht daran gedacht, dass die Lampe nur im 2.4er Netz funkt.

Auf dieses nun festgezurrt, ist die Lampe wieder über FHEM erreichbar. Die Lampe hatte ich heute mehrmals resettet. Es ist aber davon auszugehen, dass die Lampe ihre Einstellung vorher nicht vergessen hatte.

Bei einem asiatischen Versender gibt es gerade den Temperatur- und Luftfeuchtesensor von Mi im Angebot. Wenn ich das aber richtig sehe, braucht das Teil das Gateway, oder geht da auch was mit FHEM?

Mal ne Frage zur Bridge: Brauche ich die, wenn ich mehrere Lampen gleichzeitig ansteuern möchte, oder in Verbindung mit Homebridge und Siri?

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Nein, die Lampen laufen momentan auch (noch) ohne Bridge. Über die Bridge kommen ein paar mehr Informationen (Model-Typ, ID, unterstützte Befehle u.s.w.). Die Bridge ermöglicht ein Autocreate. Außerdem wird die IP angepasst, wenn sich diese, z.B. per DHCP, ändern sollte. Das läuft dann über die unique ID der Lampe als Erkennungsmerkmal.

Offline cc13

  • New Member
  • *
  • Beiträge: 28
Hi,

ich dachte mit

set WohnzimmerLicht bright 20

wird die Lampe vorher eingeschaltet, wenn sie das nicht ist. Und ich glaube, das ging auch schon mal. Installiert habe ich die Version vom 26.12.16.

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Ja, das ging mal, ich hatte schon mein Wlan im Verdacht, weil die Lampe nicht mehr an ging.
Ich bin auf eine ältere Version zurück gewechselt, jetzt funktioniert wieder alles problemlos.
Schöne Grüße bjbrill
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Hi,

ich dachte mit

set WohnzimmerLicht bright 20

wird die Lampe vorher eingeschaltet, wenn sie das nicht ist. Und ich glaube, das ging auch schon mal. Installiert habe ich die Version vom 26.12.16.

Habe das Problem sowohl im Master als auch im Devel gefixed. Geht jetzt hoffentlich.

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Hallo,

hab soeben aus dem Devel  ge-updated, jetzt geht es wieder einwandfrei.
Herzlichen Dank für den schnellen Fix.
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline dancatt

  • Full Member
  • ***
  • Beiträge: 257
Hallo zusammen,

heute sind auch bei mir 2 angekommen und ich konnte endlich mal loslegen.

Folgendes ist mir alles aufgefallen:
  • In fhem musste ich noch
sudo cpan install IO::Socket::Multicast
    installieren[/li]
  • In der Yeelight App wurden bei mir keine Lampen erkannt. Nur über die MiHome App. Erst danach waren die Lampen in der Yeelight App sichtbar und ich konnte den Developer Mode anschalten.
  • Wie lässt sich die IP ändern? Kann in der Fritzbox die IP nicht ändern, sondern nur anhaken dass immer die gleiche IP genommen werden soll.
  • Zu dem Thema "Yeelight telefoniert nach Hause". Reicht es nicht aus in der Fritzbox die Kindersicherung anzuschalten? Dadurch sollte keine Internetverbindung mehr möglich sein.


Vielen Dank auch von mir für das Modul.

Gruß Daniel
Cubietruck: FHEM-Server 5.7

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

Offline ChristianOS

  • New Member
  • *
  • Beiträge: 4
  • Zu dem Thema "Yeelight telefoniert nach Hause". Reicht es nicht aus in der Fritzbox die Kindersicherung anzuschalten? Dadurch sollte keine Internetverbindung mehr möglich sein.

Ich selber habe keine FritzBox. Ich weiß nicht was die FritzBox sperrt wenn man die Kindersicherung aktiv hat.
Vielleicht sind es nur die klassischen TCP Ports wie 80, 8080 und 443. Ob wirklich der gesamte Portbereich UDP und TCP 1-65535 geblockt werden weiß ich nicht. Die Yeelight funkt jedenfalls u.a. auf TCP Port 49173 und/oder UDP Port 54915 (laut Wireshark). Ob das die Kindersicherung blockt?! - Keine Ahnung.
Wenn ja, hast du natürlich recht. Darüber ist es einfacher zu konfigurieren.

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Hallo,
Ich versuche gerade meine Yeelights optisch an meine bestehenden HUE's anzugleichen, was soweit auch ganz gut klappt.
Bei dem "devStateIcon" beiße ich mir aber die Zähne aus, da die Yeelights nur den Status "opened"oder "disconnected" liefern.
Gibt es da einen Trick auch bei den Yeelight ein brauchbares "devStateIcon" zu bekommen?

Bis jetzt habe ich:
icon:    hue_filled_white_and_color_e27_b22
webCmd:      rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb FFB371:rgb FFC494:rgb FFDEC3:rgb ECEEFF:on:off:bright
widgetOverride:   rgb:colorpicker,HSVp bright:colorpicker,BRI,0,1,100

Vielleicht hat das einer von euch ja schon besser hin bekommen? Über Tips würde ich mich freuen.

Schöne Grüße Björn
   
   
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Hallo,
Ich versuche gerade meine Yeelights optisch an meine bestehenden HUE's anzugleichen, was soweit auch ganz gut klappt.
Bei dem "devStateIcon" beiße ich mir aber die Zähne aus, da die Yeelights nur den Status "opened"oder "disconnected" liefern.
Gibt es da einen Trick auch bei den Yeelight ein brauchbares "devStateIcon" zu bekommen?

Bis jetzt habe ich:
icon:    hue_filled_white_and_color_e27_b22
webCmd:      rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb FFB371:rgb FFC494:rgb FFDEC3:rgb ECEEFF:on:off:bright
widgetOverride:   rgb:colorpicker,HSVp bright:colorpicker,BRI,0,1,100

Vielleicht hat das einer von euch ja schon besser hin bekommen? Über Tips würde ich mich freuen.

Schöne Grüße Björn

Guten Abend,

ich habe mich mit den Darstellungen allgemein noch garnicht wirklich beschäftigt. Auf lange Sicht würde ich das auch im Modul integrieren wollen. Wenn du mir sagst, welche Readings oder Internals welche Informationen beinhalten sollen, damit du devStateIcon besser nutzen kannst, würde ich versuchen, dass ich das im Modul einfüge bzw. ändere.

Gruß

thaliondrambor

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15741
ich wollte gerade dein modul mit der desk lamp in betrieb nehmen. leider geht das nicht.

- die lampe unterstütz den developer mode nicht. siehe hier: https://github.com/vvpossible/homebridge_yeelight/issues/2
- wenn man die lampe in der firewall blockt wird sie von der handy app nicht mehr gefunden.

schade... die lampe an sich macht einen guten eindruck. falls jemand rausfindet wie es auch ohne developer mode geht wäre das klasse...

gruss
  andre 

ps: kannst du im modul statt use JSON:XS nur use JSON verwenden? die unterscheidung ob XS oder nicht macht eigentlich perl selber zur laufzeit und nicht auf allen plattformen ist XS verfügbar.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline bjbrill

  • New Member
  • *
  • Beiträge: 13
Hallo,

ich hab heute auch endlich meine desk lamp bekommen und musste auch feststellen das es keinen developer mode gibt ;-(. Ist also vorerst inkompatibel.

@thaliondrambor In den readings gibt es "power on/off", wenn dieses reading stattdessen unter state ausgegeben würde dann kann man über devstateicon zumindest im Webinterface sehen, ob die Lampe an oder aus ist. Zur Zeit ist das nicht ersichtlich, außer man schaut in die Readings direkt.

Ich kämpfe auch noch mit start_cf, hier verstehe ich noch nicht ganz wie ich einen Sonnenuntergang / Sonnenaufgang hingekommen kann. Bei meinen Hue's hab ich es hin bekommen. Bei den Yeelights  scheitere ich zur Zeit an den transit-zeiten.
Hat das schon jemand hin bekommen?

Schöne Grüße Björn
Ubuntu 14.04 Server, Tecalor Heizung/Lüftung, Homematic, Dect200, Jeelink, Unifi Wlan AP, GWY 433 Mhz, Arduino mit Firmata (USB),ESP 8266 mit WS2812b LED, HUE Lights, JeeLight Wifi, Alexa, Bewässerung Garten.

Offline Matscher

  • Developer
  • Full Member
  • ****
  • Beiträge: 296
Hallo,

ich habe folgendes Problem: Ich versuche ein Yeelight LED Strip einzurichten (Firmware 1.4.1_32). Es funktioniert soweit fast alles. D.h. die Readings vom YeeLight werden automatisch hinzugefügt und auch jederzeit geupdated. Ich kann nur keinen Befehl zum Strip schicken.
Habe ich was übersehen? Hat jemand einen Strip schon mit dem Modul in Betrieb? Danke Euch

Hier der Auszug vom anschalten.

2017.02.03 21:36:51 3: test updated readings.
2017.02.03 21:36:52 3: test updated readings.
2017.02.03 21:37:53 3: YeeLight test - set test on 500
2017.02.03 21:37:56 1: test ErrorQueue: command wasn't answered in time ({"params":["on","smooth",500],"id":2,"method":"set_power"})
2017.02.03 21:37:56 1: 192.168.0.56:55443 disconnected, waiting to reappear (test)
2017.02.03 21:37:56 1: 192.168.0.56:55443 reappeared (test)
2017.02.03 21:40:09 3: YeeLight test - set test on
2017.02.03 21:40:13 1: test ErrorQueue: command wasn't answered in time ({"params":["on"],"id":2,"method":"set_power"})
2017.02.03 21:40:13 1: 192.168.0.56:55443 disconnected, waiting to reappear (test)
2017.02.03 21:40:13 1: 192.168.0.56:55443 reappeared (test)

Internals:
   CFGFN
   DEF        192.168.0.56
   DeviceName 192.168.0.56:55443
   FD         12
   HOST       192.168.0.56
   ID         192.168.0.56
   NAME       test
   NOTIFYDEV  global
   NR         53
   NTFY_ORDER 50-test
   PARTIAL
   PORT       55443
   PROTO      1
   STATE      opened
   TYPE       YeeLight
   Readings:
     2017-02-03 21:36:42   bright          100
     2017-02-03 21:36:51   color_mode      color temperature
     2017-02-03 21:36:33   music_mode      off
     2017-02-03 21:36:52   power           off
     2017-02-03 21:36:49   rgb             F30031
     2017-02-03 21:36:49   rgb_blue        49
     2017-02-03 21:36:49   rgb_green       0
     2017-02-03 21:36:49   rgb_red         243
     2017-02-03 21:49:57   state           opened
   Helper:
     AnsQue:
     ErrQue:
       not in time: {"params":["on"],"id":2,"method":"set_power"}
       not in time: {"params":["on","smooth",500],"id":2,"method":"set_power"}
       not in time: {"params":["on"],"id":2,"method":"set_power"}
       not in time: {"params":["hallo"],"id":2,"method":"set_name"}
     Sendque:
Attributes:
   room       YeeLight
Win10 64bit
CUL V3 868Mhz - FS20, S300TH, KS300, FHT, HMS
nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic
MySensors Ethernet Gateway, Energy meter, Water meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

Offline Matscher

  • Developer
  • Full Member
  • ****
  • Beiträge: 296
Hat sich erledigt. Nach einem kompletten Update funktioniert es! :)
Win10 64bit
CUL V3 868Mhz - FS20, S300TH, KS300, FHT, HMS
nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic
MySensors Ethernet Gateway, Energy meter, Water meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

Offline thaliondrambor

  • Jr. Member
  • **
  • Beiträge: 73
Hat sich erledigt. Nach einem kompletten Update funktioniert es! :)

Das ist schön^^ Ich habe mittlerweile auch LED-Streifen und die haben bei mir (nach dem Aktivieren des Developer Modes) einwandfrei funktioniert.

Hallo,

ich hab heute auch endlich meine desk lamp bekommen und musste auch feststellen das es keinen developer mode gibt ;-(. Ist also vorerst inkompatibel.

@thaliondrambor In den readings gibt es "power on/off", wenn dieses reading stattdessen unter state ausgegeben würde dann kann man über devstateicon zumindest im Webinterface sehen, ob die Lampe an oder aus ist. Zur Zeit ist das nicht ersichtlich, außer man schaut in die Readings direkt.

Ich kämpfe auch noch mit start_cf, hier verstehe ich noch nicht ganz wie ich einen Sonnenuntergang / Sonnenaufgang hingekommen kann. Bei meinen Hue's hab ich es hin bekommen. Bei den Yeelights  scheitere ich zur Zeit an den transit-zeiten.
Hat das schon jemand hin bekommen?

Schöne Grüße Björn

Das mit dem Reading werde ich demnächst anpassen, momentan habe ich recht wenig Zeit. Für den Sonnenauf-/untergang kannst du auch "set XXX scene sunset" bzw "set XXX scene sundown" nutzen. Das spielt die selbe Funktion wie in der MiHome-App ab. Alternativ kannst du dir mal die Funktion "set_scene" in der Yeelight-API ansehen. Die ist dort gut beschrieben: Yeelight-API

ich wollte gerade dein modul mit der desk lamp in betrieb nehmen. leider geht das nicht.

- die lampe unterstütz den developer mode nicht. siehe hier: https://github.com/vvpossible/homebridge_yeelight/issues/2
- wenn man die lampe in der firewall blockt wird sie von der handy app nicht mehr gefunden.

schade... die lampe an sich macht einen guten eindruck. falls jemand rausfindet wie es auch ohne developer mode geht wäre das klasse...

gruss
  andre 

ps: kannst du im modul statt use JSON:XS nur use JSON verwenden? die unterscheidung ob XS oder nicht macht eigentlich perl selber zur laufzeit und nicht auf allen plattformen ist XS verfügbar.

Das mit der Lampe ist schade. JSON werde ich umstellen, sobald ich Zeit habe.

Offline Chris1012

  • New Member
  • *
  • Beiträge: 3
Hallo,

vielen Dank für das Modul.
Habe gestern meine Yeelight White erhalten und innerhalb von 10min. eingbunden.

Dachte eigentlich das ich die Farbtemperatur verstellen kann, was ich bis jetzt nicht geschafft habe.

Ist die Yeelight colour im Farbmodus als Lampe zu gebrauchen oder nur als Stimmungslicht?

Zum Thema: "Yeelight Nachause telefonieren", habe ich in der Fritzbox der Yeelight jegliche Internetzugang untersagt (Das Profil gespeert zugewiesen).
Ob jetzt alle Ports gespeert sind weiß ich auch nich zu 100%.
Hat hier jemand noch Erfahrungen sammeln können?
Aus der App ist die Lampe nicht mehr erreichbar.
Ich würde sonst eine neue Liste im Router anlegen.
FHEM auf RasPi3; 1xHMLAN; 7xHM-CC-RT; 2xHM-Sec-SC2, 2x HM-Sec-SCo; 1xHM-LC-Sw1-FM; 1xHM-LC-Sw1PBU-FM;
1xZME_UZB1;FIB_FGMS-001 ; FGWPE-101; Yeelight

Offline truearts

  • Newbie
  • Beiträge: 1
Ahio und einen schönen guten Abend

Ich bin gerade dabei das Modul in FHEM einzubinden und bin nach der Anleitung vorgegangen. Leider erhalte ich beim reload des Moduls folgenden Fehler.

Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 167, near "$own_hash)"
Too many arguments for main::RemoveInternalTimer at ./FHEM/32_YeeLight.pm line 171, near ""YeeLight_GetUpdate")"
Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 199, near "$hash)"
Too many arguments for main::RemoveInternalTimer at ./FHEM/32_YeeLight.pm line 926, near ""YeeLight_IsReachable")"
Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 927, near "$hash)"

Wäre jemand so nett und könnte mir in der Sache weiterhelfen? Wo genau könnte der Fehler versteckt sein ?

Offline wollo

  • New Member
  • *
  • Beiträge: 4
Habe meine beiden Deckenlamen installiert und konnte sie nachemdem ich dei beide notwendigen Perl Module nachinstalliert hatteproblemlos in Betrieb nehmen. Nachdem die Lampen über die App im Developer Mode geschaltet waren, waren sie sofort in FHEM sichtbar und liessen sich steuern,
Für eine komfortable Bedienung im Webinterface habe ich folgendes gesetzt:

attr webCmd on:off:bright:ct
attr widgetOverride bright:colorpicker,BRI,0,1,100 ct:colorpicker,CT,2750,10,6000

Vielen Dank für das tolle Modul

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7485
  • fhem.cfg befreite Zone!
Ahio und einen schönen guten Abend

Ich bin gerade dabei das Modul in FHEM einzubinden und bin nach der Anleitung vorgegangen. Leider erhalte ich beim reload des Moduls folgenden Fehler.

Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 167, near "$own_hash)"
Too many arguments for main::RemoveInternalTimer at ./FHEM/32_YeeLight.pm line 171, near ""YeeLight_GetUpdate")"
Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 199, near "$hash)"
Too many arguments for main::RemoveInternalTimer at ./FHEM/32_YeeLight.pm line 926, near ""YeeLight_IsReachable")"
Not enough arguments for main::InternalTimer at ./FHEM/32_YeeLight.pm line 927, near "$hash)"

Wäre jemand so nett und könnte mir in der Sache weiterhelfen? Wo genau könnte der Fehler versteckt sein ?

Fhem Update machen. Du hast entweder frisch installiert oder seit Monaten kein Update gemacht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline fabianr

  • Newbie
  • Beiträge: 2
Das ist schön^^ Ich habe mittlerweile auch LED-Streifen und die haben bei mir (nach dem Aktivieren des Developer Modes) einwandfrei funktioniert.

Das mit dem Reading werde ich demnächst anpassen, momentan habe ich recht wenig Zeit. Für den Sonnenauf-/untergang kannst du auch "set XXX scene sunset" bzw "set XXX scene sundown" nutzen. Das spielt die selbe Funktion wie in der MiHome-App ab. Alternativ kannst du dir mal die Funktion "set_scene" in der Yeelight-API ansehen. Die ist dort gut beschrieben: Yeelight-API

Das mit der Lampe ist schade. JSON werde ich umstellen, sobald ich Zeit habe.

Hallo zusammen,

danke erstmal das Modul, es funktioniert bei mir mit einer LED Leuchte einwandfrei. Es wäre toll wenn du noch den Status entsprechend des Readings anpassen könntest :-). Ich hoffe das dann evtl. auch die Homekit Integration via Homebridge funktioniert ?
(Einen LED Stripe der per WifiLight Modul gesteuert wird kann ich z.b. per Homekit einwandfrei steuern.)

Danke

Offline chrisnitt

  • New Member
  • *
  • Beiträge: 4
Hallo zusammen,

top Modul. Hab heute meine LED Blub (Color) bekommen und Dein Modul im Internet zu finden hat länger gedauert als es zu implementieren und die Lampe einzubinden. Allerdings weiß ich nicht so genau, wie ich mit der prepare_update.sh umzugehen habe. Die ist ja dafür da, um das Modul auf dem neusten Stand zu halten, oder? Egal wo ich bisher versucht habe sie auszuführen bekomme ich immer die Meldung:

rm: cannot remove ‘controls_YeeLight.txt’: No such file or directory
prepare_update.sh: 3: read: Illegal option -d
find: `./FHEM': No such file or directory

Was mache ich falsch?

Wenn man in der FritzBox das Profil "gesperrt" zuweist, dann kann die Lampe nicht mehr ins Internet telefonieren. (Wurde vorher mal gefragt.) Auch bei mir ist es so, dass sie in der App (Android) nicht mehr erreichbar ist. Ziemlich nervig. Meine Edimax WLAN Steckdose funktioniert im LAN noch wunderbar mit der Hersteller-App.

Mir ist noch eine Sache in Verbindung mit andFHEM aud dem (Android) Handy aufgefallen. Die YeeLight wird als "Schalter" erkannt und bekommt damit "on" und "off" als möglichen Status und als Schaltoption zugewiesen. Der aktuelle Status wird von der Lampe ausgelesen. Also der Status der Lampe sendet "on", folglich stellt sich der Schalter in andFHEM auch auf "An". Beim Status "off" zeigt der Schalter in der App "Aus" an. Nun sendet die Lampe aber grundsätzlich den Status "opened". Dieser wird von andFHEM als "An" interpretiert. Meine YeeLight Birne ist als grundsätzlich "An". Ich kann in den Eigenschaften die Lampe dann ein weiteres Mal "An"schalten, das funktioniert. Ist nur nicht schön und ich mache mir Sorgen über den WAF. Vielleicht hat hier jemand eine schlaue Idee oder einen Ansatz.

Offline g-dave

  • New Member
  • *
  • Beiträge: 3
Hallo

erhalte beim reload 32_YeeLight.pm folgende Fehlermeldung - jemand eine Idee?

Excessively long <> operator at ./FHEM/32_YeeLight.pm line 55

sudo cpan install JSON::XS - hab ich vorab ausgeführt - sollte dies in einem Zusammenhang stehen.

Danke

Grüße
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Quoti

  • New Member
  • *
  • Beiträge: 3
Vielen Dank für dieses tolle Modul!
Habe seit heute 2 Yeelights und diese natürrlich direkt in FHEM integriert.
Das hat auf Anhieb geklappt(besser als mein Account Setup bei yeelight)...
Nun habe ich mir mit
attr Eddy_Licht webCmd on:off:bright:ct:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00:rgb
attr Eddy_Licht widgetOverride bright:colorpicker,BRI,0,1,100 ct:colorpicker,CT,2750,10,6000 rgb:colorpicker,RGB

in der WEB-Oberfläche Presets und den Colorpicker erstellt und vor allem die Temperatur bzw. Helligkeit direkt einstellbar gemacht.
Das funktioert auch sehr gut, allerdings würde ich das auch  gerne per AndFHEM nutzen, um so die Hersteller-APP komplett zu umgehen(dann setze ich die Lampe auf gesperrt in der FritzBoxund deinstalliere die APP).
Außerdem wäre dann alles unter einer Oberfläche(was ich ja so an FHEM liebe).
Habt ihr eine Idee, wie ich zumindest Dimm/Color-Presets irgendwie am Handy nutze? Bzw am schönsten natürlich mit Colorpicker.

Vielen lieben Dank schonmal.

Offline Quoti

  • New Member
  • *
  • Beiträge: 3
Sehe gerade die RGB Presets werden unter Kommandos im entsprechenden Device angezeigt. Sind hier auch irgendwie Dim-Presets möglich?
Lässt sich das "RGB FF0000" irgendwie durch "Rot" ersetzen?

Entschuldigt etwaige dumme Fragen, Color lights, color picker, RGB, Widgetoverride usw. ist für mich Neuland!

Offline ohuf

  • Newbie
  • Beiträge: 2
Hallo,

Ich habe ebenfalls die RGB-Yeelight am FHEM am Laufen.
Erst einmal vielen Dank für das Modul!!!

Habe eine Frage zu den Farben: Wenn ich die Lampe stromlos mache und dann wieder einschalte, geht sie in den "Weiß" Modus.
ABER: Wenn ich die Lampe in eine Farbe (z.B. Rot) wechseln lasse, und sie dann mit den RGB Werten FFFFFF und der Helligkeit "bright 100" in die "weißest-mögliche" Farbe schalte, sieht diese Farbe tatsächlich anders aus, als das "Einschalt-Weiß". irgendwie ist "mein" Weiß ein wenig blauer und leicht dunkler, als das "Einschalt-Weiß".

Frage: Gibt es eine Möglichkeit, dieses Setting (diese Farbe & Helligkeit) mit dem Modul zu reproduzieren?



Offline NinoG

  • New Member
  • *
  • Beiträge: 3
Hallo! Habe die "nur weiße" Version und die Einbindung hat super geklappt! Vielen Dank!

Auch die Nutzung über HomeBridge läuft problemlos, hier mein Mapping, evtl hilft es jemanden  :)

genericDeviceType light
homebridgeMapping On=power,valueOn=on,valueOff=off,cmdOn=on,cmdOff=off Brightness=bright,cmd=bright,minStep=10

Offline fabianr

  • Newbie
  • Beiträge: 2
Hallo! Habe die "nur weiße" Version und die Einbindung hat super geklappt! Vielen Dank!

Auch die Nutzung über HomeBridge läuft problemlos, hier mein Mapping, evtl hilft es jemanden  :)

genericDeviceType light
homebridgeMapping On=power,valueOn=on,valueOff=off,cmdOn=on,cmdOff=off Brightness=bright,cmd=bright,minStep=10

Danke ! Wußte noch gar nichts von dem homebridgeMapping. Damit kann ich nun sogar die Farben per Homekit steuern. Allerdings stimmt das Kommando noch nicht 100% mit dem Ergebnis überein ;-)

Offline schmidt787

  • New Member
  • *
  • Beiträge: 10
Das Problem habe ich leider auch. Hast Du schon eine Lösung gefunden? Ich hatte noch was bei den Dateirechten gefunden - aber das war es leider nicht.

Hallo

erhalte beim reload 32_YeeLight.pm folgende Fehlermeldung - jemand eine Idee?

Excessively long <> operator at ./FHEM/32_YeeLight.pm line 55

sudo cpan install JSON::XS - hab ich vorab ausgeführt - sollte dies in einem Zusammenhang stehen.

Danke

Grüße