[32_YeeLight.pm][Devel 32_YeeLightBridge.pm] - Modul für Yeelight Wifi Lampen

Begonnen von thaliondrambor, 14 Dezember 2016, 22:21:55

Vorheriges Thema - Nächstes Thema

Loctite

Ok, danke.
Weißt du zufällig wie man eigene Scenen definieren kann?
Es gibt nicht nur die festen in der 32_YeeLight.pm Datei, sondern man kann auch welche per attrib definieren.
Nur wie wird das ganze gemacht ?
Ich habe das auch nur gesehen, weil ich in diese .pm Datei geschaut habe.
Es gibt das attrib userScene [0-9]

sledge

In den offiziellen Developer Docs von Yeelight findest Du die Antwort: https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf

ZitatMethod: start_cf
Usage: This method is used to start a color flow. Color flow is a series of smart
LED visible state changing. It can be brightness changing, color changing or color
temperature changing.This is the most powerful command. All our recommended scenes,
e.g. Sunrise/Sunset effect is implemented using this method. With the flow expression, user
can actually "program" the light effect.
Parameters: 3.
"count" is the total number of visible state changing before color flow
stopped. 0 means infinite loop on the state changing.
"action" is the action taken after the flow is stopped.
0 means smart LED recover to the state before the color flow started.
1 means smart LED stay at the state when the flow is stopped.
2 means turn off the smart LED after the flow is stopped.
"flow_expression" is the expression of the state changing series.
Request Example: {"id":1,"method":"start_cf","params":[ 4, 2, "1000, 2, 2700, 100, 500, 1,
255, 10, 5000, 7, 0,0, 500, 2, 5000, 1"]
Response Example: {"id":1, "result":["ok"]}
NOTE: Each visible state changing is defined to be a flow tuple that contains 4
elements: [duration, mode, value, brightness]. A flow expression is a series of flow tuples.
So for above request example, it means: change CT to 2700K & maximum brightness
gradually in 1000ms, then change color to red & 10% brightness gradually in 500ms, then
stay at this state for 5 seconds, then change CT to 5000K & minimum brightness gradually in
500ms. After 4 changes reached, stopped the flow and power off the smart LED.
[duration, mode, value, brightness]:
Duration: Gradual change time or sleep time, in milliseconds,
minimum value 50.
Mode: 1 – color, 2 – color temperature, 7 – sleep.
Value: RGB value when mode is 1, CT value when mode is 2,
Ignored when mode is 7.
Brightness: Brightness value, -1 or 1 ~ 100. Ignored when mode is 7.
When this value is -1, brightness in this tuple is ignored (only color or CT change takes
effect).
Only accepted if the smart LED is currently in "on" state.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

Loctite

Das hilft mir so nicht wirklich weiter. :o
Ich habe ein attribut gesetzt:

attr Lampe1 userScene0

Nun habe ich das in der Liste und habe verschiedene codes eingefügt.
Vom einfachem ON bis "id":1,"method":"set_rgb","params":[255, "smooth", 500]
Das ganze auch mal in { }

Wenn ich nun oben bei set userScene 0 eingebe, passiert nichts.
Im Log steht dann nur:
YeeLight Lampe1 - set Lampe1 scene 0

Aber es passiert nichts. Hat jemand ein Beispiel wie ich das ganze in die Attribute bringe ?

sledge

Naja, ein Teil Deiner Frage bezog sich darauf, was die Zahlen bedeuten. . Das kannst Du der API-Docu von Yeelight entnehmen. Somit wäre DAS schonmal geklärt :-)

Was die Benutzung der userScene-Attribute angeht, muss Dir jemand anderes helfen - ich nutze diese nicht. Ggf dann einfach mal den Code durchforsten.

if ($args[0] =~ /^\d?.?\d+$/ && $args[0] >= 0 && $args[0] <= 9)
        {
            my $bHash = $modules{YeeLightBridge}{defptr};
            my $bName = $bHash->{NAME};
            my $userSceneName = "userScene".$args[0];
            my $userScene = undef;
            $userScene = $attr{$bName}{$userSceneName} if (defined($bName) && defined($attr{$bName}{$userSceneName}));
            $userScene = $attr{$name}{$userSceneName} if defined($attr{$name}{$userSceneName});
            return "scene \"".$args[0]."\" not set. Set attr userScene".$args[0]." first." if !defined($userScene);
            my @cf = split(/ /,$userScene);
            YeeLight_SelectSetCmd($hash,"start_cf",@cf);
        }


Wenn cih da nur flüchtig drüberschaue, musst Du vermutlich alles hinter start_cf gemäß der Doku in die Scene packen.

Versuch es mal mit sowas hier:

"params":[ 4, 2, "1000, 2, 2700, 100, 500, 1, 255, 10, 5000, 7, 0,0, 500, 2, 5000, 1"]



FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

sledge

Ok, Rätsel gelöst - der Blick in den Quellcode (mit etwas mehr als nur drüberfliegen):

set <device> userScene0 4 0 1000,2,2700,100

Einfach mal ausprobieren.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

no_Legend

Hat jemand Ahnung wie man den Night Mode benutzen kann?
Also aus FHEM raus?


Gesendet von iPhone mit Tapatalk Pro
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

sledge

Zitat von: no_Legend am 16 März 2019, 18:53:46
Hat jemand Ahnung wie man den Night Mode benutzen kann?
Also aus FHEM raus?


Gesendet von iPhone mit Tapatalk Pro

Die Implementierung sollte nicht allzuschwierig sein. Ich schau es mir mal an, habe allerdings "nichts" zum testen, fyi.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

no_Legend

Zitat von: sledge am 16 März 2019, 19:00:37
Die Implementierung sollte nicht allzuschwierig sein. Ich schau es mir mal an, habe allerdings "nichts" zum testen, fyi.


Super dank dir schon mal.
Ich kann es gerne testen.

Musst aber nicht sofort machen, hat jetzt auch lang genug ohne leben können.

Ist aber echt schade dass diese Modul nicht gepflegt wird.
Die Yeelights werden immer mehr und immer attraktiver

Danke und Gruß Robert


Gesendet von iPhone mit Tapatalk Pro
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

sledge

Naja, da ich mich immer mehr mit dem Aufbau auseinandersetze, denke ich mal drüber nach... zum hier und da rumbasteln könnte es reichen.

Erstmal eigenes Repository anlegen, der Rest kommt dann. Und ja, die Yeelights sind attraktiv, habe hier auch genug davon. Müsste es nur auch für E14 geben ;-)
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

Loctite


Loctite

Zitat von: sledge am 16 März 2019, 18:52:43
set <device> userScene0 4 0 1000,2,2700,100

Ah super ! Es tut sich was ! Hätte nicht gedacht das rein die Zahlen dort eingetragen werden.
Diese Parameter habe ich in das Attribut userScene1 geschrieben.
attr Lampe1 userScene1 4 0 1000,2,2700,100
Nun kann dieses per
set <device> Scene 1
gestartet werden !

Das ganze per dummy / notify und individuelle Scenen können sogar mit Alexa aufgerufen werden...müsste eigentlich funktionieren.
Nun muss ich mir diese Zahlen mal anschauen, im Code habe ich ja 3 Beispiele die ich bestimmt verwenden kann !

no_Legend

Zitat von: Loctite am 16 März 2019, 20:01:45
Was ist der Night Mode ?
Es gibt in den Nachttischlampen eine extra Night Mode
Dunkler kann man die yeelights hier nicht einstellen.
Welche Lampen das unterstützen keine Ahnung.


@sledge
Mir ist da gerade noch was eingefallen.
Hier im Thread gibt es eine Hinweis wie man per raw Befehl den Nachtmodus aktivieren kann.
Diesen konnte ich aber nie per doif oder so benutzen, mir hat sich dann immer das FHEM aufgehängt.
Wohl weil ich nicht die Anwendung des Befehls mit doif genau verstanden hatte.
Vll ist das ein Anfang für dic

Gruß Robert

Gesendet von iPhone mit Tapatalk Pro
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Loctite

Ich habe eine E27 "Birne", in der App sehe ich auch den Night Mode .
Das ist ja auch eine ganze normale Scene, und jetzt nicht unbedingt ein eigener Modus.
Tippe ich diesen an, wird die Helligkeit auf 1% gestellt und Farbe auf RGB FF9900.

Diesen Night Mode könnte man also selber in eine Scene einbauen und diese dann aufrufen.

no_Legend

Zitat von: Loctite am 17 März 2019, 09:38:13
Ich habe eine E27 "Birne", in der App sehe ich auch den Night Mode .
Das ist ja auch eine ganze normale Scene, und jetzt nicht unbedingt ein eigener Modus.
Tippe ich diesen an, wird die Helligkeit auf 1% gestellt und Farbe auf RGB FF9900.

Diesen Night Mode könnte man also selber in eine Scene einbauen und diese dann aufrufen.
Naja so kannst das nicht sehen.
Der Night Mode ist direkt bei den Lampen ohne scene abrufbar.
Das hab ich auch mal in den api dokus bei Yeelight direkt gefunden.
Kann gerade aber keine links liefern bin unterwegs


Gesendet von iPhone mit Tapatalk Pro
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Loctite

Hm, also in der Yeelight App ist dieser Night Mode auch da wo Sunrise, Sunset, Tea Time, Romance usw. zu sehen ist.
Gibt es verschiedene Yeelight Apps ? Oder das ganze passt sich an das Gerät an, wäre logischer.
War ja nur eine Idee, denn alles was dieser Modus macht ist ja Farbe und Helligkeit setzen. Wenn ich weiß welche Werte Night Mode hat, kann ich den auch nachbilden.

Wobei ich mit "nachbilden" immer noch ein Problem habe.
Hier auf der ersten Seite wird das Beispiel genannt:
set yl start_cf 3 2 500,1,255,100,500,1,1,1
Also habe ich das ganze mal in die userScene gepackt, funktioniert, aber ich verstehe das nicht.
Laut Yeelight Doku bedeutet die Zahl "3" das jetzt 3 Farbstufen (oder Abläufe) folgen.
2 bedeutet das nach dem flow die Lampe aus bleibt.
Ich sehe hier aber nur 2 Pakete/Abläufe:

500ms/color Modus/Farbe(wieso ist 255 blau?)/100% Helligkeit
500ms/color Modus/Farbe1?/1% Helligkeit

Kann mir das jemand erklären ? Und wie gebe ich so die Farbwerte ein ?

EDIT:
Ok, die "3" bedeutet das 3x wiederholt wird. Wobei ich in dem Beispiel aber nur 2x blinken erkenne.
Ändere ich es auf 10, blinkt die Lampe 5x  :o
Und die Farbe...da müsste doch eine richtig große Zahl hin, um z.B. hell grün zu definieren wie z.B. 6553480
Aber das geht nicht

EDIT2:
Doch geht ! Hatte sicherlich einen anderen Fehler

EDIT3:
Und das war das letzte EDIT, denn blau wäre eigentlich ‭16711680‬ und das geht dann doch nicht.
Und jetzt gerade funktioniert die ganze Scene nicht mehr, manuell kann ich ein und aus schalten, aber auch wenn ich zurück auf die Anfangszahlen ändere, geht nichts...
Es scheint als ob diese Scene irgendwie hängt. Erstelle ich eine neue Scene mit dem blau blinken Beispiel funktioniert diese

EDIT4:
Ok, habs jetzt raus !  ::)
Warum es eben nicht funktioniert hat, kann ich nicht sagen. Hatte die Hexwerte umgerechnet auf Dezimal. Na ja egal, werde jetzt mal etwas spielen...

EDIT5:
Ja das ist ja mal toll ! Habe Windows 10 und habe die Hex Werte mit dem Rechner umgewandelt.
Also auf Wissenschaftliche Ansicht. Kopiere ich die Zahl oben aus dem großen Bereich, ist alles ok.
Kopiere ich Zahlen aus dem Bereich links daneben, dort bei HEX, DEC, OKT BIN werden irgend welche Sonderzeichen mit kopiert.
Ich habe mir das ganze in eine Textdatei kopiert, dort zusammen gewürfelt und dann in FHEM eingefügt.
Beim Speichern sagte mir Windows dann, das Zeichen verloren gehen würden wegen anderer Kodierung.  :o
Nach dem öffnen der Text Datei stand dort nicht ‭16754209‬ sondern ?‭16754209‬?
In FHEM sah die Zahl ganz normal aus, die Scene funktionierte aber nicht. Da ich mal von dort mal von da aus dem Rechner kopiert hatte, dachte ich es länge an zu langer Zahlenkombi, falsche Zahlen...also Sachen gibts !!!