Xiaomi Yeelight - Modul

Begonnen von niceday, 28 Oktober 2016, 01:20:25

Vorheriges Thema - Nächstes Thema

niceday

Hallo zusammen,

ich bin noch neu bei Fhem (danke für dieses wunderbare Projekt), habe mich jetzt gut 2 Tage mit befasst und schon fleißig mitgelesen :-)
Nun stelle ich mir jedoch die Frage ob es irgendeine Möglichkeit gibt die o.g. Leuchte Xiaomi Yeelight, E27er Fassung, White (http://xiaomi-mi.com/mi-lighting/xiaomi-yeelight-led-smart-bulb-white-e27/) etwas "komfortabler" anzubinden, ggfs. mit dem WifiLight-Modul ?

Die API ansich zum dem Teil ist ja frei verfügbar: http://www.yeelight.com/en_US/developer, wenn man sich dort das Linux-Beispiel runterläd bekommt man ein Python-Skript, welches auch recht einfach und rudimentär funktioniert, ist aber eher zu Testzwecken nutzvoll, da eine interaktive Eingabe des Nutzers erfordelich ist. Es hat sich rausgestellt, dass das Lämpchen einen Telnetzugriff anbietet.
Ich habe das nun mittels 3 externen Shellskripten gelöst, welche über ein Dummy-Interface in Fhem angesprochen werden und somit lässt sich die Birne steuern. Die Frage ist trotzdem, ob es vielleicht schon ein anderes Modul hierfür gibt ? (habe zwar gut recherchiert, jedoch nichts gefunden)

Anbei meine Shellskripte, wen es interessiert ("xxx" muss entsprechend durch eure IP ersetzt werden) und wie folgt die Definitionen in der fhem.cfg:

define Lampe_Yeelight dummy
attr Lampe_Yeelight group Wohnung,Wohnzimmer,Lampen
attr Lampe_Yeelight room Wohnung,Wohnzimmer
attr Lampe_Yeelight webCmd on:off:dim
attr Lampe_Yeelight setList dim:slider,0,1,100

define n_lampe_yeelight_off notify Lampe_Yeelight:off "/opt/fhem/yeelight_1_off.sh"
define n_lampe_yeelight_on notify Lampe_Yeelight:on "/opt/fhem/yeelight_1_on.sh"
define n_lampe_yeelight_dimm notify Lampe_Yeelight:dim.* "/opt/fhem/yeelight_1_dim.sh $EVTPART1"


LG Nils

DirkS

Großartig!
Habe heute mein Yeelight White bekommen. Die Lampe hat sich verbunden und lässt sich per App steuern.
Aber einen Telnet Zugang auf dem Port 55443 hat meine Lampe nicht. Wobei die Lampe gleich ein Firmware Update durchgeführt hat.
Eventuell wurde der Debug Zugang gestrichen?
MfG
Dirk

niceday

Du musst erst den "Developer Mode" einschalten in den Settings der App. Dann wird erst der Telnetzugang freigeschaltet.

DirkS

#3
Kaum macht man es richtig, funktioniert es auch. Danke!
[BTW]
Hätte mir die Farbe etwas mehr in Richtung warm Weiß gewünscht.
Wie sieht es mit den RGB Modellen aus, gehen sie auf warm Weiß zu schalten?

cc13

#4
Hi,

habe jetzt auch eine solche Lampe und in mein Heimnetz integriert.

Wenn ich jetzt deine Scripts in FHEM installiert habe und den Notify on aufrufe, erhalte ich im FHEM Logfile folgende Meldung:

/opt/fhem/yeelight_1_on.sh: line 3: nc: command not found

Auf der Konsole bekomme ich aber eine Ausgabe von nc, wenn ich es ohne Parameter aufrufe.

Und noch etwas, wo in der App finde ich den Developer-Modus zum einstellen?

Update: Das nc Problem konnte ich lösen, indem ich den kompletten Pfad zu nc im Script eingetragen habe. Bleibt noch der Developer Modus, den ich nicht finde. Im Moment wird nämlich die Verbindung zurückgewiesen.

Update 2: Ich und meine Ungeduld. ;-) Mit der richtigen App funktioniert alles wie oben beschrieben. Ich hatte den QR-Code aus der kleinen Anleitung in der Verpackung gescannt und da bekomme ich eine App, in der kein Developer Modus einstellbar ist.
VG
cc13

cc13

@Nils: Entwickelst du deine Scripte weiter? So mit Farbauswahl...?

niceday

Zitat von: cc13 am 11 November 2016, 11:49:58
@Nils: Entwickelst du deine Scripte weiter? So mit Farbauswahl...?
Ich wüsste nicht was ich noch weiterentwickeln kann. Vielleicht das statt externer Skripte interne Fhem bzw. Perl Funktionen genutzt werden. Zu der RGB-Version kann ich nichts sagen, hab leider nur die weiße Version.
Ich bin nebenbei auf das Mi-Light System umgestiegen bzw. eingestiegen daher werde ich mir wohl keine weiteren Yeelights holen :-)

Gesendet von meinem UMI_ROME_X mit Tapatalk


niceday

Vielleicht hat jemand eine Idee ob man für die Lampe eine feste IP vergeben kann? Alle paar Tage das Skript anpassen weil sich die Adresse geändert hat ist auch nervig.. Oder statt der IP den Hostnamen angeben, der kann aber variieren je nach Seriennummer denke ich (lässt sich im Router o.ä. z.b. sehen welche IP bzw. Hostnamen die Lampe hat).

Gesendet von meinem UMI_ROME_X mit Tapatalk


thaliondrambor

#8
Hallo,

ich habe gestern gerade die Yeelight Wifi RGB bekommen.
Da ich mich schon vorher etwas damit beschäftige habe, glaube ich, dass es eine bessere Möglichkeit geben muss.

Es gibt ein fertiges Paket für node.js hier: https://www.npmjs.com/package/yeelight-wifi.
Leider reichen meine Fertigkeiten und Kenntnisse nicht, um das ganze für FHEM umzusetzen. Das Homebridge-Plugin für FHEM greift ja auch auf ein node.js Paket zu, eventuell könnte man das anpassen.

Es gibt auch ein Plugin für die Homebridge selber (https://www.npmjs.com/package/homebridge-yeelight). Dieses habe ich schon eingerichtet und ich sehe die Lampe nun über die Homebridge auf dem IPhone und kann sie darüber mit Siri steuern (An/Aus, Farbe, Helligkeit).

Meine Grundidee wäre, ein Device in FHEM anzulegen welches als Yeelight-Bridge arbeitet. Dieses sucht nach Yeelight-Komponenten im Netz und legt dann entsprechende Devices in FHEM an. Ein weiterer Vorteil ist, dass der DeveloperMode nicht aktiviert werden muss und somit die Kommunikation weiterhin verschlüsselt läuft.

Ich würde mich riesig freuen, wenn jemand mit mehr Erfahrung mit FHEM und node.js sich eventuell daran setzen könnte.

Gruß

thaliondrambor

cc13

Hallo thaliondrambor,

was meinst du mit, dass du die Lampe über die Homebridge im iPhone siehst? Hast du das Homebridge Modul in FHEM installiert und danach das Homebridge-yeelight?

Was ich heute gemacht habe: Das dim-Script von niceday so angepasst, dass ich den Befehl "set_rgb" aufrufe. Darüber kann ich nur per Parameter die Lampe auf einen bestimmten RGB-Wert setzen. Nun wollte ich das mit dem Colorwheel in FTUI verbinden. Leider liefert das immer HEX-Werte, das Yeelight benötigt aber reine Integerwerte.

Vielleicht können wir ja zusammen arbeiten, um hier vorwärts zu kommen.

Gruß,
CC13

thaliondrambor

Ja genau. Homebridge installiert und das Homebridge-Yeelink Modul. Dann kann man es per IPhone und Siri steuern. Ich habe auch das Homebridge-Fhem Modul installiert, aber dadurch kann ich die Yeelink Lampe trotzdem nicht durch Fhem steuern (oder ich weiß nicht wie). Eben nur mit dem IPhone.

Ich habe heute noch weiter geschaut, weiter drüber nachgedacht und mit einem Kollegen drüber geredet.
Folgendes kommt in Frage:

1. Man könnte die Lampe ins Wifilight-Modul von FHEM versuchen zu integrieren. Die meisten anderen Wifi-Lampen senden ja auch auf UDP. Da müsste man dann jede Lampe allerdings einzeln anlegen, was geht, aber nicht das Optimum ist.

2. Schöner wäre ein eigenes Modul das zweigeteilt ist. Einmal ein Device, dass als Bridge arbeitet. Dieses müsste nur auf den Multicast der Lampen hören (auf  239.255.255.250:1982), den HTTP-Header auswerten (ID, Name, Typ), überprüfen ob die Lampe bereits in FHEM existiert und falls nicht, diese anlegen.
Der zweite Teil des Moduls ist dann die Lampe selbst, die die entsprechenden Befehle per UDP an die Lampe sendet, die Rückmeldungen auswertet und auch auf die regelmäßigen Multicasts hört (alle 3600s).

Die komplette dafür benötigte Dokumentation wurde ja bereits schon verlinkt (http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf). Sie sieht an sich auch nicht wirklich kompliziert aus. Leider fehlen mir die Kenntnisse um a) ein FHEM-Modul zu schreiben und b) für die Handhabung des UDP-Sockets (wobei dies wahrscheinlich noch das einfachere ist). Meine Programmierkenntnisse sind eher rudimentär. Ich könnte nur aus anderen Modulen was zusammensuchen und anpassen.

Ich werde im Forum "Entwicklung" -> "Wunschliste" einen Post aufmachen und dort auch meine eine Lampe anbieten, damit das Modul entwickelt werden kann. Für den Preis kann man ruhig eine weggeben. Ich wollte eh noch mehr bestellen, da sie mir wirklich sehr gut gefallen.

cc13

Da haben wir doch gestern parallel gearbeitet. Mir hat es keine Ruhe gelassen und ich habe mich mal in die Entwickler-Doku für ein FHEM-Modul eingelesen. Es gibt schlimmere Dokumentation. ;-)

Im Moment habe ich nur eine Lampe und die hat ihre feste IP-Adresse. Mir liegt viel daran, möglichst alle Funktionen der Lampe in FHEM zu integrieren. Also ist eine Bridge-Lösung erstmal nicht in meinem Fokus. Weihnachten steht bald vor der Tür und damit ein paar Tage/Abende an denen Zeit für solche Spielereien ist. Mal sehen, wie weit ich mit dem Entwickeln eines Moduls komme.

Hast du jetzt gar keine Lampe mehr, wenn jemand dein Angebot annimmt? Ansonsten bist du mein Beta-Tester. ;-)

niceday

Zitat von: cc13 am 13 November 2016, 10:14:08
Im Moment habe ich nur eine Lampe und die hat ihre feste IP-Adresse.
Und wie hast du die feste IP vergeben können ?

thaliondrambor

Zitat von: niceday am 13 November 2016, 10:34:59
Und wie hast du die feste IP vergeben können ?

Also die feste IP habe ich über die FritzBox vergeben. Da kann man einfach ein Häkchen machen, dann vergibt die FritzBox immer die selbe IP an das Gerät (identifizieren über die MAC-Adresse). So bekommen alle relevanten Geräte bei mir eine feste IP, ansonsten würde ja so gut wie nichts hunderprozentig laufen, wenn die bei jedem Lease eine neue bekommen würden.

Mit dem Protokoll von Xiaomi könnte man aber die Lampen über die eindeutige ID identifizieren und so spätestens beim nächsten Multicast (alle 3600s) die neue IP übernehmen. Das wäre natürlich komfortabler.

Zitat von: cc13 am 13 November 2016, 10:14:08
Da haben wir doch gestern parallel gearbeitet. Mir hat es keine Ruhe gelassen und ich habe mich mal in die Entwickler-Doku für ein FHEM-Modul eingelesen. Es gibt schlimmere Dokumentation. ;-)

Im Moment habe ich nur eine Lampe und die hat ihre feste IP-Adresse. Mir liegt viel daran, möglichst alle Funktionen der Lampe in FHEM zu integrieren. Also ist eine Bridge-Lösung erstmal nicht in meinem Fokus. Weihnachten steht bald vor der Tür und damit ein paar Tage/Abende an denen Zeit für solche Spielereien ist. Mal sehen, wie weit ich mit dem Entwickeln eines Moduls komme.

Hast du jetzt gar keine Lampe mehr, wenn jemand dein Angebot annimmt? Ansonsten bist du mein Beta-Tester. ;-)

Noch habe ich eine Lampe da und es sind auch schon neue bestellt. Kann nur bis zu 2 Wochen dauern, bis die aus China da sind. Wenn sich jemand melden sollte, der Interesse hat ein Modul zu entwickeln, aber keine Lampe hat, würde ich die zur Verfügung stellen. Ansonsten bin ich gerne Beta-Tester.

cc13

Genauso habe ich die "feste" IP vergeben. Bisher (3 Tage) läuft es ohne IP-Wechsel. Allerdings ist die Lampe bisher auch die ganze Zeit am Strom und online.