TapHome

Colori

Funzioni di colore degli script TapHome — HSVTORGB e RGBTOHSV — e i tipi di valore rgbcolor e hsvcolor usati per controllare le luci RGB dagli script Packet parser e Modbus.

Le funzioni di colore convertono tra il modello HSV — tonalità, saturazione e valore (luminosità) — e il modello RGB con i canali rosso, verde e blu. Una luce a colori TapHome lavora con tonalità e saturazione; molti dispositivi comandati da script Packet parser o Modbus si aspettano invece rosso, verde e blu. Entrambe le funzioni funzionano in ogni script e richiedono Core 2023.1 o più recente (sul canale Next Core 2022.3, build 27019).

HSVTORGB

HSVTORGB converte un colore dato da tonalità, saturazione e valore in un valore rgbcolor con i canali rosso, verde e blu da 0 a 255.

1
HSVTORGB(hue, saturation, value)
NomeTipoDescrizione
huenumeroAngolo del colore in gradi, 0 – 360 (0 rosso, 120 verde, 240 blu).
saturationnumero0 – 1. 0 è bianco o grigio, 1 il colore pieno.
valuenumeroLuminosità, 0 – 1.

Valore restituito — rgbcolor con le proprietà RED, GREEN e BLUE, ciascuna arrotondata a un numero intero 0 – 255.

Note — Gli ingressi non sono limitati al loro intervallo. Mantieni saturation e value tra 0 e 1, altrimenti i canali escono dall’intervallo 0 – 255.

Esempio

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

Esempio — script di scrittura di una luce RGB tramite HTTP

Nello script di scrittura di una luce a colori passa i valori di tonalità (Hd) e saturazione (Sa) della luce e tieni separata la luminosità. Qui sono variabili locali, così l’esempio funziona da solo:

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"

Vedi anche — RGBTOHSV, SENDHTTPREQUEST.

RGBTOHSV

RGBTOHSV converte i canali rosso, verde e blu (0 – 255) in un valore hsvcolor con la tonalità in gradi e saturazione e valore da 0 a 1.

1
RGBTOHSV(red, green, blue)
NomeTipoDescrizione
red, green, bluenumero0 – 255. Ciascuno viene convertito in un numero intero in questo intervallo.

Valore restituito — hsvcolor con HUE (0 – 360, con parte decimale), SATURATION (0 – 1) e VALUE (0 – 1). Per i colori grigi, in cui tutti i canali sono uguali, HUE e SATURATION sono 0.

Esempio — leggere la tonalità di una luce che riporta rosso, verde e blu

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

Valori rgbcolor e hsvcolor

rgbcolor e hsvcolor sono i tipi di valore restituiti dalle funzioni di colore; le loro proprietà si possono leggere e scrivere.

TipoProprietàIntervalloNota
rgbcolorRED, GREEN, BLUE0 – 255La scrittura salva un byte: i valori oltre 255 ricominciano da zero.
hsvcolorHUE0 – 360La scrittura salva un byte, quindi una tonalità oltre 255 ricomincia da zero — hsv.HUE := 300 dà 44. Passa invece la tonalità a HSVTORGB.
hsvcolorSATURATION, VALUE0 – 1Numeri decimali.

Entrambi i nomi di tipo possono dichiarare una variabile:

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

Vedi anche — Tipi di dati, Variabili e costanti.