Wifilight.pm

Begonnen von herrmannj, 18 Januar 2014, 04:10:07

Vorheriges Thema - Nächstes Thema

herrmannj

#120
Hallo zusammen,

ich habe das Modul im ersten Beitrag aktualisiert, folgende Neuerungen:

* Mi-light V2 bridge ist aufgenommen.
* RGB Input:

RGB wird als 6 digit HEX im gleichen Syntax wie HSV akzeptiert, also für Transitions, queue etc. 

Intern werden Farbübergänge natürlich weiterhin im HSV Farbraum berechnet. Daraus resultieren bei "neutralen" Farben (Weiß, Grau, Schwarz) eine Besonderheit:  Bei einer Transition von FF0000 auf 000000 behalte ich Rot als Color bei (HSV Äquivalent: 0,100,100 auf 0,100,0). In einer darauf folgenden Transition von 000000 auf 0000FF würde man möglicherweise erwarten: "Aus" -> "Blau auf-dimmend" -> "volles Blau". Da RGB 000000 jedoch "farblos" ist findet im HSV der Start an der "letzten" bekannten Farbe (hier Rot) statt: HSV 0,100,0 -> 240,100,100. Also: "Aus" -> "Rot .. Lila auf-dimmend" -> "volles Blau". In so einer Konstellation sollte der Startwert (zB. "Blau" mit RGB 000001) explizit gesetzt werden.  Im HSV besteht die gleiche Notwendigkeit, allerdings ist das dort intuitiver (HSV 240,100,0 auf 240,100,100).

Gegenüber der letzten Version sind Debugausgaben entfernt. Außerdem ist ein Bug bei Mi-Light beseitigt; unterschiedliche / gleichzeitige Transitions auf einer Bridge können (und werden) eine race condition erzeugen. Gleichzeitig wird die CPU Last bei schnellen Transitions nochmal erheblich gesenkt, daher rate ich ausdrücklich zum Update.

Ein Feedback zum LW12 würde ich mich sehr freuen, insbesondere würde mich interessieren welche Frameraten bei schnellen Transitions (sprich wie flüssig) und welche CPU Last auf langsamen Systemen wie FB oder Raspi, BBB entstehen. Auf einer FB würde ich, während schneller Transitions,  mit 80% CPU bei 15-20 Frames (LW12) rechnen. Gleichzeitig sollte FHEM aber noch zügig auf andere Events reagieren können. Das Webinterface dürfte etwas "zäher" als gewohnt reagieren, sollte aber vernünftig bedienbar bleiben.

vg
Jörg

Hans Franz

#121
Hallo Jörg,

Toller Job!
Sehe erstmal auf die Schnelle keine gravierenden Änderungen. Lief ja auch vorher gut.
Bei schnellen Transitions schnellt die CPU-Last auf dem Raspi schon gegen 98%, aber nur für weniger als eine Sekunde.
Wie sehe ich die Framerate? Habe ich etwas verpasst?
Etwas Log: Von 0,0,0 auf 100,100,100 20 q:
2014.02.24 00:32:47 4: WifiLED RGB LW12 set h:82, s:82, v:82
2014.02.24 00:32:47 5: WifiLED low level cmd queue add 5692d125aa, qlen 1
2014.02.24 00:32:47 5: WifiLED low level cmd queue send 5692d125aa, qlen 1
2014.02.24 00:32:47 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:47 4: WifiLED high level cmd queue ask next 1393198367.22061 1393198367.22061
2014.02.24 00:32:47 4: WifiLED processEvent: , progress: 82
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec dropper delay: -0.0862538814544678
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:47 4: WifiLED high level cmd queue ask next 1393198367.42061 1393198367.42061
2014.02.24 00:32:47 4: WifiLED processEvent: , progress: 83
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec dropper delay: -0.0053412914276123
2014.02.24 00:32:47 4: WifiLED high level cmd queue exec hsv 84, 84, 84, delay 200, hl qlen 17, ll qlen 0, lock 0
2014.02.24 00:32:47 4: WifiLED RGB LW12 set h:84, s:84, v:84
2014.02.24 00:32:47 5: WifiLED low level cmd queue add 568ed622aa, qlen 1
2014.02.24 00:32:47 5: WifiLED low level cmd queue send 568ed622aa, qlen 1
2014.02.24 00:32:47 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:47 4: WifiLED high level cmd queue ask next 1393198367.62061 1393198367.62061
2014.02.24 00:32:47 4: WifiLED processEvent: , progress: 84
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec dropper delay: -0.0877292156219482
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:47 4: WifiLED high level cmd queue ask next 1393198367.82061 1393198367.82061
2014.02.24 00:32:47 4: WifiLED processEvent: , progress: 85
2014.02.24 00:32:47 5: WifiLED high level cmd queue exec dropper delay: -0.00538897514343262
2014.02.24 00:32:47 4: WifiLED high level cmd queue exec hsv 86, 86, 86, delay 200, hl qlen 15, ll qlen 0, lock 0
2014.02.24 00:32:47 4: WifiLED RGB LW12 set h:86, s:86, v:86
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 5689db1eaa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue send 5689db1eaa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198368.02061 1393198368.02061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 86
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec dropper delay: -0.127223968505859
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198368.22061 1393198368.22061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 87
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec dropper delay: -0.0053400993347168
2014.02.24 00:32:48 4: WifiLED high level cmd queue exec hsv 88, 88, 88, delay 200, hl qlen 13, ll qlen 0, lock 0
2014.02.24 00:32:48 4: WifiLED RGB LW12 set h:88, s:88, v:88
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 5684e01aaa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue send 5684e01aaa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198368.42061 1393198368.42061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 88
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec dropper delay: -0.0868971347808838
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198368.62061 1393198368.62061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 89
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec dropper delay: -0.00567007064819336
2014.02.24 00:32:48 4: WifiLED high level cmd queue exec hsv 90, 90, 90, delay 200, hl qlen 11, ll qlen 0, lock 0
2014.02.24 00:32:48 4: WifiLED RGB LW12 set h:90, s:90, v:90
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 567de516aa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue send 567de516aa, qlen 1
2014.02.24 00:32:48 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198368.82061 1393198368.82061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 90
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec dropper delay: -0.087536096572876
2014.02.24 00:32:48 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:48 4: WifiLED high level cmd queue ask next 1393198369.02061 1393198369.02061
2014.02.24 00:32:48 4: WifiLED processEvent: , progress: 91
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec dropper delay: -0.00560402870178223
2014.02.24 00:32:49 4: WifiLED high level cmd queue exec hsv 92, 92, 92, delay 200, hl qlen 9, ll qlen 0, lock 0
2014.02.24 00:32:49 4: WifiLED RGB LW12 set h:92, s:92, v:92
2014.02.24 00:32:49 5: WifiLED low level cmd queue add 5677eb12aa, qlen 1
2014.02.24 00:32:49 5: WifiLED low level cmd queue send 5677eb12aa, qlen 1
2014.02.24 00:32:49 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:49 4: WifiLED high level cmd queue ask next 1393198369.22061 1393198369.22061
2014.02.24 00:32:49 4: WifiLED processEvent: , progress: 92
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec dropper delay: -0.0849270820617676
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:49 4: WifiLED high level cmd queue ask next 1393198369.42061 1393198369.42061
2014.02.24 00:32:49 4: WifiLED processEvent: , progress: 93
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec dropper delay: -0.00579524040222168
2014.02.24 00:32:49 4: WifiLED high level cmd queue exec hsv 94, 94, 94, delay 200, hl qlen 7, ll qlen 0, lock 0
2014.02.24 00:32:49 4: WifiLED RGB LW12 set h:94, s:94, v:94
2014.02.24 00:32:49 5: WifiLED low level cmd queue add 5670f00eaa, qlen 1
2014.02.24 00:32:49 5: WifiLED low level cmd queue send 5670f00eaa, qlen 1
2014.02.24 00:32:49 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:49 4: WifiLED high level cmd queue ask next 1393198369.62061 1393198369.62061
2014.02.24 00:32:49 4: WifiLED processEvent: , progress: 94
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec dropper delay: -0.0861032009124756
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:49 4: WifiLED high level cmd queue ask next 1393198369.82061 1393198369.82061
2014.02.24 00:32:49 4: WifiLED processEvent: , progress: 95
2014.02.24 00:32:49 5: WifiLED high level cmd queue exec dropper delay: -0.00549006462097168
2014.02.24 00:32:49 4: WifiLED high level cmd queue exec hsv 96, 96, 96, delay 200, hl qlen 5, ll qlen 0, lock 0
2014.02.24 00:32:49 4: WifiLED RGB LW12 set h:96, s:96, v:96
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 5667f509aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue send 5667f509aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:50 4: WifiLED high level cmd queue ask next 1393198370.02061 1393198370.02061
2014.02.24 00:32:50 4: WifiLED processEvent: , progress: 96
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec dropper delay: -0.102828979492188
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:50 4: WifiLED high level cmd queue ask next 1393198370.22061 1393198370.22061
2014.02.24 00:32:50 4: WifiLED processEvent: , progress: 97
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec dropper delay: -0.00537490844726562
2014.02.24 00:32:50 4: WifiLED high level cmd queue exec hsv 98, 98, 98, delay 200, hl qlen 3, ll qlen 0, lock 0
2014.02.24 00:32:50 4: WifiLED RGB LW12 set h:98, s:98, v:98
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 565efa05aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue send 565efa05aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:50 4: WifiLED high level cmd queue ask next 1393198370.42061 1393198370.42061
2014.02.24 00:32:50 4: WifiLED processEvent: , progress: 98
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec dropper delay: -0.0874171257019043
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec drop frame at llQueue level. ll qlen: 2
2014.02.24 00:32:50 4: WifiLED high level cmd queue ask next 1393198370.62061 1393198370.62061
2014.02.24 00:32:50 4: WifiLED processEvent: , progress: 99
2014.02.24 00:32:50 5: WifiLED high level cmd queue exec dropper delay: -0.00578212738037109
2014.02.24 00:32:50 4: WifiLED high level cmd queue exec hsv 100, 100, 100, delay 200, hl qlen 1, ll qlen 0, lock 0
2014.02.24 00:32:50 4: WifiLED RGB LW12 set h:100, s:100, v:100
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 5654ff00aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue send 5654ff00aa, qlen 1
2014.02.24 00:32:50 5: WifiLED low level cmd queue add 00, qlen 2
2014.02.24 00:32:50 4: WifiLED high level cmd queue ask next 1393198371.08997
2014.02.24 00:32:50 4: WifiLED processEvent: , progress: 100


Ich glaube, das sagt dir mehr als mir :)
Wie stelle ich die RGB-Werte ein? Die DropDown-Liste bietet nach wie vor nur HSV an.

Gruß
Hans

Edit:
System:LW12
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

herrmannj

#122
Hallo Hans,

vielen Dank für das log, sieht gut aus  :)
ZitatBei schnellen Transitions schnellt die CPU-Last auf dem Raspi schon gegen 98%, aber nur für weniger als eine Sekunde.
Das ist völlig ok, da wird die Transition one-shot vorberechnet. Das macht einen kurzen Peak.
ZitatWie sehe ich die Framerate? Habe ich etwas verpasst?
Nee, hast nix verpasst, ich hab mich dumm ausgedrückt.  ;) Sieht der Farbwechsel flüssig, möglichst wenig abgehackt, aus?
ZitatEtwas Log: Von 0,0,0 auf 100,100,100 20 q
Vielen Dank dafür. Kannst Du testweise nochmal "härter" ran gehen, so etwas in der Art wie:
set WifiLED HSV 0,0,0; set WifiLED HSV 0,100,100 3 q; set WifiLED HSV 0,0,0 3 q; set WifiLED HSV 60,60,50 3 q; set WifiLED HSV 180,100,100 3 q; set WifiLED HSV 180,100,0 3 q;  set WifiLED HSV 0,100,100 3 q; set WifiLED HSV 0,0,0 3 q; set WifiLED HSV 60,60,50 3 q; set WifiLED HSV 180,100,100 3 q; set WifiLED HSV 180,100,0 1 q
Das müsste ihm knapp 30 Sekunden richtig Feuer machen, in dieser Zeit sind CPU und halbwegs "flüssiger" Farbwechsel interessant. Den Loglevel würde ich dabei auf 1 oder 2 runternehmen weil das loggen sonst für sich schon so viel CPU frisst. Es geht um das subjektive, fhem soll gut responsive bleiben und der Farbwechsel halt optisch möglichst fließend sein.
ZitatWie stelle ich die RGB-Werte ein? Die DropDown-Liste bietet nach wie vor nur HSV an.
Darauf kann ich mir keinen Reim machen. Könntest Du bitte kurz ein
list WifiLED
machen und in der Sektion "Helper" die Line "COMMANDSET" kurz posten. Vielleicht vorher ein shutdown restart ?

Danke und Grüße
Jörg


Steffen

Hallo!

Hier mal ein kurzer Bericht von mir, habe die "V2-Bridge" mit den "RGB-Bulb" und es klappt bis jetzt alles Bestens,
mit der neuen Änderung!

Danke für diese Tolle Arbeit...

Das einzig was ich bemerkt habe, wenn ich im Colorpicker auf Weiß gehe, dann stellt es auf Rot!

Mfg Steffen

herrmannj

super, Danke für Feedback.

Das Weiß-Rot Ding ist kein Fehler an sich sondern kommt daher das die RGB halt kein Weiß kann. Wenn das sehr stört kann ich da nochmal bei gehen und Weiß für die RGB aus dem Colorpicker nehmen.

btw.: ich hab hier eine RGB die ich nur zum testen hab. Zumindest bei der ist es so das die irgendwo im Bereich HSV 300 (plus / minus) einen FW Bug hat und plötzlich ganz andere Farben auf einzelne Werte legt. Ich glaub Blau und Grün oder so. Vermutlich liegt in der bridge oder in der Bulb eine Lookup Tabelle in dem Bereich falsche Einträge hat. Wenn Du das beobachtest und die Muße hast die genauen Werte herauszubekommen kann ich das mit dem neuen converter im Modul überschreiben. Sieht man bei langsamen Colorfades in dem Bereich, dann blitzt bei meiner kurz die falsche Farbe auf.

vg
Jörg

Kuzl

RGB kann Weiß, allerdings halt kein schönes :D
Bei RGB FFFFFF leuchten Rot, Grün und Blau auf voller Helligkeit, was Weiß ergibt.
Heute oder spätestens Morgen werde ich auch mal ausgibig testen :)

Hans Franz

#126
Moin,

Der "Härtetest" führt zu einer CPU-Auslastung um 90%. Farbwechsel sind schon etwas ruckelig auf dem Raspi. fhem ist weiter gut bedienbar.
list:
COMMANDSET on off dim HSV RGB
nach Restart RGB auch in DropDown ::)

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

herrmannj

#127
ZitatRGB kann Weiß, allerdings halt kein schönes :D
jaaa, hast ja recht. Allerdings so 'n blödes Lila iirgendwas als Weiß das ich das garnicht reingenommen habe.
;D
ZitatDer "Härtetest" führt zu einer CPU-Auslastung um 90%. Farbwechsel sind schon etwas ruckelig auf dem Raspi.
Super, Dankeschön. 90% sind ok (dafür hat so 'ne CPU ja 100%) wenn fhem noch responsive bleibt und das sieht ja dann so aus - gut!  8) Das mit dem ruckeln, naja, mehr geht dann halt auf den "kleinen" CPUs nicht - ist ja aber auch ein Härtetest  :) Der Unterschied zu grossen CPUs ist schon gewaltig. Mein DEV Notebook mit einer alten Intel 7xx irgendwas macht mit einer milight (die machen zwar weniger Frames brauchen aber genauso viel Rechenzeit) keine 5%  und die FB geht auch auf 60% hoch. Mit schnelleren CPUs gehen die Frames für den LW12 dann nach oben.
Zitatnach Restart RGB auch in DropDown
na dann passt es ja

Danke und Grüße
Jörg

Kuzl

Zitat von: herrmannj am 24 Februar 2014, 08:31:11
jaaa, hast ja recht. Allerdings so 'n blödes Lila iirgendwas als Weiß das ich das garnicht reingenommen habe.
Ach schade :(
Könntest du das nicht bitte doch mit reinnehmen? :D ist ja eigendlich nur eine konsequente Umrechnung.

Hab vorne gesehen bei den ToDos steht noch benutzerdefinierte Farben speichern - das ist mehr oder weniger mit dem Colorpicker möglich.
Man kann im Webcmd seine eigenen Farben einfügen und dann per Knopfdruck anzeigen lassen :)

Gruß
Kuzl

herrmannj

#129
ZitatAch schade :(
Könntest du das nicht bitte doch mit reinnehmen? :D ist ja eigendlich nur eine konsequente Umrechnung.
Wieso ? Du hast doch einen LW12 wenn ich mich recht erinnere. Der kann die komplette additive RGB Mischung und die wird auch vom Modul 100% unterstützt. Bei Dir hängt es nur vom stripe ab wie Weiß dargestellt wird. MBenker hat mir mal gesagt das er stripes hat die ein vernünftiges Weiß als RGB Mischung machen.

Bei Steffen ist das anders, der hat eine Milight RGB und die kann keine additive Mischung. Nur Farbkreis und eben Alibi-Weiß. Aus Sicht der Ansteuerung des Controllers macht da die Unterstützung keinen Sinn, wäre sogar schlecht in Bezug auf die Ansteuerung / Stabilität

vg
Jörg

Kuzl

Achsoooooo ich hab gedacht du hast das grundsätzlich nicht unterstützt, unabhängig vom Device :D

Ja genau hab den LW12 ok dann bin ich glücklich :) dann meld ich mich wieder wenn ich es getestet habe :)

Gruß
Kuzl

Kuzl

Hallo,

bin grad dazu gekommen die Grundfunktionen zu testen und ich glaub ich steh aufm Schlauch :D
Also RGB-Input scheint zu funktionieren (auch weiß hihi)
Allerdings wird der Colorpicker nicht geladen und logischerweise damit auch nicht meine vordefinierten Farben. Hier mal mein att vll mach ich was falsch:

attr LEDstripe webCmd RGB:RGB ff0000:RGB 00ff00:RGB 0000ff:on:off

Gruß
Kuzl

herrmannj

den Colorpicker habe ich weder verwendet/getestet noch ist speziell dafür etwas eingebaut. Nur RGB in und OUT.

vg
Jörg

Kuzl

Du musst noch ein "use Color" einfügen und den Colorpicker initialisieren.
Siehe hier: http://www.fhemwiki.de/wiki/Color
Diese 2 Zeilen müssten eigendlich reichen, evtl. muss noch ein set rgb:colorpicker hinzugefügt werden, wobei ich mir da jetzt nicht sicher bin.

Aber 2-3 Zeilen Code sind nicht die Welt :) ich werd das auch gleich mal ausprobieren wenn ich das hinbekomme :D

Gruß
Kuzl

herrmannj

darum geht es gar nicht. Das derzeitige Widget muss überarbeitet und ausgegliedert werden. Das braucht dann mehr Zeilen :)

vg
Jörg