Xiaomi Yeelight - Modul

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

Vorheriges Thema - Nächstes Thema

drsoran

#30
Hallo,

ich habe vor kurzem auch 2 Yeelights bekommen. Ich habe mal angefangen ein Modul zu entwickeln, welches die Grundfunktionen der Birne unterstützt. Das sind:

  • an/aus
  • Helligkeit
  • RGB
  • HSV
  • Farbtemperatur

Eventuell hilft es jemanden sein Yeelight in FHEM zu integrieren. Ich hoste das Modul unter:

https://bitbucket.org/drsoran/32_yeelight/downloads?tab=tags

Einfach die v1.0 runter laden und die Datei 32_Yeelight.pm ins FHEM Modulverzeichnus kopieren. Dokumentation ist unter:

https://bitbucket.org/drsoran/32_yeelight/wiki/Home

Für feedback wäre ich dankbar.

Stoanze01

Hi,

@drsoran: Ich habe eben dein Modul installiert und versucht meine Yeelight zu schalten, bekomme dann
Usage: fade must be a number of at least 30ms

im Logfile heißt es..
PERL WARNING: Use of my $_ is experimental at ./FHEM/32_Yeelight.pm line 358.

was fehlt noch bzw. was mache ich falsch?


Bin noch relativ neu bei FHEM und hoffe meine Frage ist nicht total doof!




thaliondrambor

Hallo an euch beide, es gibt bereits ein Modul für die Yeelights. Ich kann gerade den Link nicht schicken, aber mal unter Anwendungen -> Beleuchtung schauen.

drsoran

@Stoanze01: Funktioniert es gar nicht bei dir? Dem Fehler nach hast du versucht ein "set" command mit fade abzusetzen. Also etwa wie set myLamp on <fade>
Könntest du prüfen das <fade> ein Zahl ist und mindestens 30?

Also nochmal. Was geht bei dir? Kannst du schalten? Könntest du dein "define" und Attribute aus der fhem.cfg posten? Die Warnung im log file kann nicht dein Problem sein, ich werde sie aber entfernen.

@thaliondrambor: Wusste gar nicht, dass es schon ein Modul gibt. Ich hatte nur diesen thread hier gesehen und da sah es aus, also ob es sowas noch nicht gibt. Jetzt gibt's wohl 2. ;D

Stoanze01

@drsoran: Kann leider garnichts Schalten, meine fhem.cfg Konfiguration ist:
define wz_Yeelight Yeelight 192.168.xx.xx
attr wz_Yeelight alias Yeelight
attr wz_Yeelight event-on-change-reading *
attr wz_Yeelight room Wohnzimmer


nach deffine des Device, beim Versuch es on oder off zu schalten bekomme ich einen Dialog mit eben der Meldung  :(
Was mir etwas komisch vorkommt, im Device wz_Yeelight bleibt 'STATE' immer auf 'initialized', also wird die Lampe doch erst garnicht erkannt oder!?

Hatte heute leider aber auch keine Zeit mehr mich weiter damit zu beschäftigen  :-\

Vielen Dank schon mal im voraus für deine Hilfe!


drsoran

Also ich konnte das Problem mit der Fehlermeldung nachvollziehen. Ich habe eine neue Version des Moduls hochgeladen. Warum bei dir der state auf "initialized" bleibt verstehe ich nicht. Ich habe bei mir mal ein device angelegt und ihm eine IP gegeben, die nicht existiert. Bei mir wechselt der state sofort auf "disconnected".

Kleine Zwischenfrage: Hast du den "developer mode" an deinem Yeelight aktiviert? Das machst du in der Yeelight App. Ausserdem erhöhe mal den verbose level auf 4 und setze mal in FHEM ein "rereadcfg" ab. Guck in das fhem.log und du solltest sehen, dass sich die Lampe versucht zu connecten. Das log kannst ja mal posten.


define wz_Yeelight Yeelight 192.168.xx.xx
attr wz_Yeelight alias Yeelight
attr wz_Yeelight event-on-change-reading *
attr wz_Yeelight room Wohnzimmer
attr wz_Yeelight verbose 4


Du kannst auch ein connect anstoßen indem du ein "set wz_Yeelight connect" absetzt.

Stoanze01

#36
Ok, super danke dafür schon mal drsoran.

"developer mode" ist aktiviert, "verbose" auf 4 gesetzt und "reradcfg" abgesetzt. Nach triggern von "set wz_Yeelight connect" habe ich nun einige Readings mehr und der aktuelle STATE wird auch richtig angezeigt da ich die Yeelight mit dem App zuvor eingeschaltet habe.
Kann jedoch noch immer nichts schalten, bekomme die Meldung "Usage: fade must be a number of at least 30ms" weiterhin  :-\

Eintrag im .log:
2017.01.09 20:58:31.376 3: wz_Yeelight: connected

Wenn ich, wie du mir gesagt hast, einen Befehl mit Angabe von fade=30 sende, also
set wz_Yeelight off 30
schaltet die Lampe auch ab. Funktioniert aber nur wenn fade eben größer als 30 ist, ohne diese Angabe geht es leider nicht.

Im Event monitor werden immer zwei Events gelistet.....
2017-01-09 21:04:38.423 Yeelight wz_Yeelight off 30
2017-01-09 21:04:38.438 Yeelight wz_Yeelight off
2017-01-09 21:04:50.816 Yeelight wz_Yeelight on 40
2017-01-09 21:04:50.829 Yeelight wz_Yeelight on
2017-01-09 21:05:08.789 Yeelight wz_Yeelight off 50
2017-01-09 21:05:08.796 Yeelight wz_Yeelight off
2017-01-09 21:07:34.967 Yeelight wz_Yeelight on 100
2017-01-09 21:07:35.374 Yeelight wz_Yeelight on


Ein
set wz_Yeelight on
liefert mir nur wieder die Meldung "Usage: fade must be a number of at least 30ms".

Auch beim setzten der brightness muss ich die fade Angabe machen sonst geht´s nicht. Bsp.:
set wz_Yeelight bright 50 30

drsoran

Das ist ja schon mal gut das es prinzipiell bei dir geht. Wegen den 30ms: bist du sicher, dass du die letzte Version des Moduls genommen hast? Ich hatte eine v1.1 hochgeladen.

https://bitbucket.org/drsoran/32_yeelight/get/v1.1.tar.gz

Da sollte der Fehler dann raus sein. Du kannst die neue Version einfach über die alte in FHEM kopieren und dann in FHEM mit

reload 32_yeelight.pm

die Änderungen laden.

Stoanze01

Ach shit, das habe ich gestern vergessen zu aktualisieren. Werde ich Abends gleich ausprobieren und mich wieder melden! 

Vielen Dank für deine Unterstützung!



Stoanze01

Funktioniert einwandfrei!!! Wirklich ein klasse Modul drsoran, vielen Dank auch nochmal für deine Hilfe & Geduld! 



Hast du vor auch noch für andere Xiaomi Geräte ein Modul zu schreiben?
Finde die Xiaomi Geräte wirklich klasse, alleine schon das Preis/Leistungsverhältnis ist einfach unschlagbar. Da ich mich selber aber noch nicht sehr lange mit der Gebäudeautomatisierung und FHEM beschäftige wird es mit Sicherheit noch etwas dauern bis ich selber in der Lage bin ein Modul zu schreiben. Der 'Xiaomi Mini Smart Home Temperature and Humidity Sensor' beispielsweise interessiert mich brennend  ;D

drsoran

Das ist ja schön, dass es endlich funktioniert. Die Yeelights waren bisher das einzige, was ich ausprobiert hatte. Aber du hast Recht. Das Preis/Leistungsverhältnis ist einfach gut. Mal sehen was noch kommt....

Stoanze01

#41
Es müsste doch möglich sein das Modul Colorpicker https://wiki.fhem.de/wiki/Color für die Yeelight zu nutzen. Irgendwie bekomme ich es nicht gebacken, hat hier schon jemand Erfahrungen?

Funktioniert nun, hatte aus noch unbekannten Gründen
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
nicht gesetzt.

Jedoch schaffe ich es nicht mit defStateIcon das Icon in der eingestellten Farbe anzuzeigen..
attr wz_Yeelight devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}

memed

Hi,


Ich habe versucht wie hier in den ersten Postings beschrieben die Dimmer-Funktion in die Weboberfläche zu integrieren, meine Frage ist jetzt:
- wie rufe ich ein externes Programm auf und übergebe den Slider-Wert an das externe Skript?
- wie kann ich zwei Slider für ein Device nutzen (und extern übergeben)?

Hintergrund ist, ich kann/möchte das FHEM Perl Modul nicht nutzen, auf einer Synology eine ganze Make/Gcc/Ipkg Umgebung drauf zu packen nur um JSON:XS ans laufen zu bekommen um ein paar Klammer-Strings zu lesen und schreiben...
Warum nicht: weil es einfach auf ein NAS nicht passt, eine Development-Umgebung zu packen, bei Updates man immer Gefahr läuft, dass es nicht mehr klappt und ich da keine Zeit drauf investieren will.
Naja ich habe leider auch kein "NC" für die Synology (415Play, x86) gefunden, also kann ich die Shellscripte vom Anfang des Threads nicht nutzen.
Es war aber schnell erledigt die Bash-Skripte in Python "nach" zu bauen, nur ich scheitere jetzt an FHEM.

Danke für Hilfe (und nein, in der Commandreferenz steht zu Übergabe von Slider Werte an externe Skripte nichts was ich  finden würde)
-M

ridestar

Zitat von: Stoanze01 am 21 Januar 2017, 17:47:52
Es müsste doch möglich sein das Modul Colorpicker https://wiki.fhem.de/wiki/Color für die Yeelight zu nutzen. Irgendwie bekomme ich es nicht gebacken, hat hier schon jemand Erfahrungen?

Funktioniert nun, hatte aus noch unbekannten Gründen
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
nicht gesetzt.

Jedoch schaffe ich es nicht mit defStateIcon das Icon in der eingestellten Farbe anzuzeigen..
attr wz_Yeelight devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
Ich habe leider nach wie vor das Problem, dass ich keine Slides bekomme. Bei mir steht immer nur in der Anzeige "opened" und "RGB". Habe schon webcmd auf RGB und widgetoverride auf rgb:colorpicker,RGB gesetzt. Leider klappt s nicht. Hat noch jemand eine Idee?

Dann habe ich noch ein weiteres Problem. Ich will die Lampe mit HomeKit nutzen. Funktioniert auch soweit. Ich kann die Lampe über die Home-App an und ausschalten und auch die Farben wechseln. Allerdings wird sie mir jedesmal als An angezeigt sobald ich die App öffne. Ich denke es liegt dadran, dass der Status "opened" ist. Weiss jemand ob es hierfür eine Lösung gibt?

Stoanze01

ZitatBei mir steht immer nur in der Anzeige "opened" und "RGB".

Du musst webCmd hsv setzen, vielleicht schadet es auch nicht deine Lampe einmalig mit einem set hsv auf hsv "umzustellen". Kann ich mir zwar nicht vorstellen aber einen versuch ist es allemal wert!
set Yeelight hsv 120,30,50

Die Color.pl ist sicher vorhanden? https://wiki.fhem.de/wiki/Color

Muss gehen....    hier mal meine config der Yeelight

# Yeelight
#####################################################

define Yeelight Yeelight 192.xxx.xxx.xxx
attr Yeelight userattr keepAlive
attr Yeelight defaultFade 80
attr Yeelight group Lichter
attr Yeelight icon hue_filled_white_e27_b22
attr Yeelight room Wohnzimmer
attr Yeelight userReadings hsv {ReadingsVal($name,'hue','360').','.ReadingsVal($name,'sat','100').','.ReadingsVal($name,'bright','100')}
attr Yeelight webCmd hsv
attr Yeelight widgetOverride hsv:colorpicker,HSV,hue,0,1,360,sat,0,1,100,bright,0,1,100

################################################