Page 1 of 1

HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 3:31 pm
by magx2
W LEDach kolor jest opisywany za pomocą 3 składowych:
  • RGB - string - kolor
  • color_brighness - [0,100] int - natężenie koloru
  • brightness - [0,100] int - jasność
Użycie tego modelu jest trochę nie wygodne, ponieważ RGB jest zakodowany w stringu i trzeba go rozkodowywać. Zamiast tego proponuje użycie modelu HSV. Tam zamiast RGB mamy wartość hue (odcień), który jest intem z przedziału [0,360]. Reszta pozostaje bez zmian (color_brighness = saturation, brightness = value).

Re: HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 6:19 pm
by pzygmunt
Używamy w wielu miejscach HSV ale celowo dla użytkownika jest RGB ponieważ RGB dla wielu jest bardziej zrozumiałe.

Zresztą wewnątrz kontrolera konwertujemy RGB do hsv i zmieniamy jasność.

Pomyśle nad dodaniem alternatywy w API.

Re: HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 8:13 pm
by magx2
To jak używasz rgd to j8e ma już sesnu color brightness I brightness używać

Re: HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 8:55 pm
by pzygmunt
Tu nie chodzi o sens techniczny, choć wiem, że wersja trzymająca się standardu powinna również być. Wiele osób nie rozumie, że w rgb, hsv itd możesz zawrzeć kolor , jasność i pozostałe składniki. (Swoją drogą podwójna jasność dotyczy rgbw). To jest tylko nadbudówka ułatwiająca komuś, kto kompletnie nie rozumie ściemniaczy/kolorów itp operowanie nimi poprzez API. Weź pod uwagę, że nie tylko programiści z niego korzystają. Również amatorzy. Tłumacz teraz komuś, że jasność masz też w RGB. Albo jak ma ściemnić RGB...., że może przekształcić do HSV i wtedy łatwo ściemni kolor... ale to już dla wielu czarna magia.

Wiem również, że może to wprowadzać w błąd profesjonalistów ale oni szybko ogarną jak do tematu podejść... ewentualnie będą krzywo się na to patrzeć.

Re: HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 9:05 pm
by pzygmunt
Jeszcze wracając do HSV.

H - kolor liczony w stopniach 0-360
S - saturacja i tu zazwyczaj 100 (przy ledach średnio widać mniejsze wartości)
V - tym parametrem ściemniamy. (color_brightness)

"brightness" o którym piszesz używamy w sytuacji gdy mamy RGBW czyli taśma RGB ma dodatkowy "pasek" białych led-ów.

Tak więc przy RGB przesyłasz RGB + dla ułatwienia jasność.
(color + color_brightness)
Sterownik RGB zazwyczaj zamienia RGB na HSV i podstawia pod V color_brightness.

Przy RGBW przesyłasz color+color_brightness+brightness.

[EDIT]
Dodamy do API możliwość przesłania tylko RGB lub HSV z pominięciem jasności.
Wewnątrz już sobie to odpowiednio policzymy aby zachować kompatybilność wsteczną.

https://github.com/SUPLA/supla-cloud/issues/278

Re: HSV zamist RGB + color brightness + brightness

Posted: Mon Apr 08, 2019 9:23 pm
by pzygmunt
... i jeszcze jeden argument dlaczego to tak zostało rozwiązane.
Chodziło o możliwość ustalenia (przesłanie do wszystkich aplikacji klienckich)
koloru bazowego zapisanego w RGB przed uwzględnieniem jasności.

Re: HSV zamist RGB + color brightness + brightness

Posted: Tue Apr 09, 2019 8:40 am
by magx2
Dobra dzięki za info. Ja za swojej strony czekam na HSV, łatwiej mi będzie obsłużyć OpenHABa

Re: HSV zamist RGB + color brightness + brightness

Posted: Tue Apr 09, 2019 11:43 am
by magx2
A i jeszcze jedna uwaga - jak będziesz wprowadzał HSV do API to zrób to proszę w 2 miejscach: podczas pobierania stanu i podczas wysyłania akcji do clouda.