TapHome

Barvy

Barevné funkce skriptu TapHome — HSVTORGB a RGBTOHSV — a hodnotové typy rgbcolor a hsvcolor pro ovládání RGB světel ze skriptů Packet parser a Modbus.

Barevné funkce převádějí mezi modelem HSV — odstín, sytost a hodnota (jas) — a modelem RGB s kanály červené, zelené a modré. Barevné světlo TapHome pracuje s odstínem a sytostí; mnoho zařízení řízených ze skriptů Packet parser nebo Modbus ale očekává červenou, zelenou a modrou. Obě funkce fungují v každém skriptu a vyžadují Core 2023.1 nebo novější (na kanálu Next Core 2022.3, build 27019).

HSVTORGB

HSVTORGB převede barvu zadanou odstínem, sytostí a hodnotou na hodnotu rgbcolor s kanály červené, zelené a modré od 0 do 255.

1
HSVTORGB(hue, saturation, value)
NázevTypPopis
huečísloBarevný úhel ve stupních, 0 – 360 (0 červená, 120 zelená, 240 modrá).
saturationčíslo0 – 1. 0 je bílá nebo šedá, 1 plná barva.
valuečísloJas, 0 – 1.

Vrací — rgbcolor s vlastnostmi RED, GREEN a BLUE, každá zaokrouhlená na celé číslo 0 – 255.

Poznámky — Vstupy nejsou omezeny na svůj rozsah. Držte saturation a value mezi 0 a 1, jinak kanály přetečou rozsah 0 – 255.

Příklad

VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255

Příklad — skript pro zápis RGB světla přes HTTP

Ve skriptu pro zápis barevného světla předejte hodnoty odstínu (Hd) a sytosti (Sa) světla a jas řešte zvlášť. Tady jsou to lokální proměnné, aby příklad fungoval samostatně:

VAR hue := 30;
VAR saturation := 1;
VAR color := HSVTORGB(hue, saturation, 1);
"red=" + color.RED + "&green=" + color.GREEN + "&blue=" + color.BLUE;
# Result: "red=255&green=128&blue=0"

Viz také — RGBTOHSV, SENDHTTPREQUEST.

RGBTOHSV

RGBTOHSV převede kanály červené, zelené a modré (0 – 255) na hodnotu hsvcolor s odstínem ve stupních a sytostí a hodnotou od 0 do 1.

1
RGBTOHSV(red, green, blue)
NázevTypPopis
red, green, bluečíslo0 – 255. Každý se převede na celé číslo v tomto rozsahu.

Vrací — hsvcolor s HUE (0 – 360, i s desetinnou částí), SATURATION (0 – 1) a VALUE (0 – 1). U šedých barev, kde jsou všechny kanály stejné, jsou HUE a SATURATION rovny 0.

Příklad — odstín světla, které hlásí červenou, zelenou a modrou

VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1

Hodnoty rgbcolor a hsvcolor

rgbcolor a hsvcolor jsou hodnotové typy, které vracejí barevné funkce; jejich vlastnosti lze číst i zapisovat.

TypVlastnostRozsahPoznámka
rgbcolorRED, GREEN, BLUE0 – 255Zápis uloží bajt: hodnoty nad 255 přetečou dokola.
hsvcolorHUE0 – 360Zápis uloží bajt, takže odstín nad 255 přeteče dokola — hsv.HUE := 300 dá 44. Odstín raději předejte do HSVTORGB.
hsvcolorSATURATION, VALUE0 – 1Desetinná čísla.

Oba názvy typů mohou deklarovat proměnnou:

rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128

Viz také — Datové typy, Proměnné a konstanty.