Színek
TapHome szkript színfüggvények — HSVTORGB és RGBTOHSV —, valamint az rgbcolor és hsvcolor értéktípusok, amelyekkel RGB lámpákat vezérelhetsz Packet parser és Modbus szkriptekből.
A színfüggvények a HSV modell — színárnyalat (hue), telítettség (saturation) és érték (value, azaz fényerő) — és a vörös, zöld és kék csatornákból álló RGB modell között váltanak. A TapHome színes lámpája színárnyalattal és telítettséggel dolgozik; a Packet parser vagy Modbus szkriptekből vezérelt eszközök közül viszont sok vörös, zöld és kék értéket vár. Mindkét függvény minden szkriptben működik, és Core 2023.1 vagy újabb verziót igényel (a Next csatornán Core 2022.3, build 27019).
HSVTORGB
A HSVTORGB a színárnyalattal, telítettséggel és értékkel megadott színt rgbcolor értékké alakítja, amelynek vörös, zöld és kék csatornája 0 és 255 között van.
| |
| Név | Típus | Leírás |
|---|---|---|
hue | szám | Színszög fokban, 0 – 360 (0 vörös, 120 zöld, 240 kék). |
saturation | szám | 0 – 1. A 0 fehér vagy szürke, az 1 a telített szín. |
value | szám | Fényerő, 0 – 1. |
Visszatérési érték — rgbcolor a RED, GREEN és BLUE tulajdonságokkal, mindegyik egész számra kerekítve 0 – 255 között.
Megjegyzések — A bemenetek nincsenek a tartományukra korlátozva. A saturation és a value értékét tartsd 0 és 1 között, különben a csatornák túllépik a 0 – 255 tartományt.
Példa
VAR green := HSVTORGB(120, 1, 1);
green.GREEN;
# Result: 255Példa — RGB lámpa író szkriptje HTTP-n keresztül
Színes lámpa író szkriptjében add át a lámpa színárnyalatát (Hd) és telítettségét (Sa), a fényerőt pedig kezeld külön. Itt helyi változók, hogy a példa önmagában is lefusson:
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"Lásd még — RGBTOHSV, SENDHTTPREQUEST.
RGBTOHSV
Az RGBTOHSV a vörös, zöld és kék csatornát (0 – 255) hsvcolor értékké alakítja, amelyben a színárnyalat fokban, a telítettség és az érték pedig 0 és 1 között van.
| |
| Név | Típus | Leírás |
|---|---|---|
red, green, blue | szám | 0 – 255. Mindegyik ebben a tartományban lévő egész számmá alakul. |
Visszatérési érték — hsvcolor a HUE (0 – 360, törtrésszel), SATURATION (0 – 1) és VALUE (0 – 1) tulajdonságokkal. Szürke színeknél, ahol minden csatorna egyenlő, a HUE és a SATURATION értéke 0.
Példa — vörös, zöld és kék értéket jelentő lámpa színárnyalatának kiolvasása
VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.HUE);
# Result: 30VAR hsv := RGBTOHSV(255, 128, 0);
ROUND(hsv.SATURATION * 100) / 100;
# Result: 1rgbcolor és hsvcolor értékek
Az rgbcolor és a hsvcolor a színfüggvények által visszaadott értéktípusok; tulajdonságaik olvashatók és írhatók.
| Típus | Tulajdonság | Tartomány | Megjegyzés |
|---|---|---|---|
rgbcolor | RED, GREEN, BLUE | 0 – 255 | Íráskor egy bájt tárolódik: a 255 feletti értékek körbefordulnak. |
hsvcolor | HUE | 0 – 360 | Íráskor egy bájt tárolódik, így a 255 feletti színárnyalat körbefordul — a hsv.HUE := 300 eredménye 44. Helyette add át a színárnyalatot a HSVTORGB függvénynek. |
hsvcolor | SATURATION, VALUE | 0 – 1 | Tizedes számok. |
Mindkét típusnév használható változó deklarálására:
rgbcolor colour := HSVTORGB(240, 1, 0.5);
colour.BLUE;
# Result: 128Lásd még — Adattípusok, Változók és konstansok.