HSV zamist RGB + color brightness + brightness

Post Reply
magx2
Posts: 244
Joined: Wed May 17, 2017 1:27 pm

Mon Apr 08, 2019 3:31 pm

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).
Java 4 Life :twisted: :twisted: :twisted:
User avatar
pzygmunt
Posts: 5664
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Apr 08, 2019 6:19 pm

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.
magx2
Posts: 244
Joined: Wed May 17, 2017 1:27 pm

Mon Apr 08, 2019 8:13 pm

To jak używasz rgd to j8e ma już sesnu color brightness I brightness używać
Java 4 Life :twisted: :twisted: :twisted:
User avatar
pzygmunt
Posts: 5664
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Apr 08, 2019 8:55 pm

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ć.
User avatar
pzygmunt
Posts: 5664
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Apr 08, 2019 9:05 pm

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
User avatar
pzygmunt
Posts: 5664
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Apr 08, 2019 9:23 pm

... 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.
magx2
Posts: 244
Joined: Wed May 17, 2017 1:27 pm

Tue Apr 09, 2019 8:40 am

Dobra dzięki za info. Ja za swojej strony czekam na HSV, łatwiej mi będzie obsłużyć OpenHABa
Java 4 Life :twisted: :twisted: :twisted:
magx2
Posts: 244
Joined: Wed May 17, 2017 1:27 pm

Tue Apr 09, 2019 11:43 am

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.
Java 4 Life :twisted: :twisted: :twisted:
Post Reply