Moin,
ich hatte ein Problem mit farbigen devStateIcons bei Devices die als State z.B. nicht "on" oder "off" haben, wie z.B. meine selbst entwickelten RGBW-Dimmer auf Basis eines ESP8266 als MQTT-Device. Ich bin da mit den Anleitungen für das Color-Modul (https://wiki.fhem.de/wiki/Color (https://wiki.fhem.de/wiki/Color)) aus dem Wiki nicht weitergekommen.
Daher hab ich ein kleines Script geschrieben:
sub getRGB($$$$$$)
{
my $device = shift;
my $value = shift;
my $on_state = shift;
my $on_icon = shift;
my $off_state = shift;
my $off_icon = shift;
my $rgb = ReadingsVal($device, $value, "FFFFFF");
$rgb = sprintf("%s:%s\@grey:%s %s:%s\@#%06s:%s", $off_state,$off_icon,$on_state,$on_state,$on_icon,$rgb,$off_state);
return ($rgb);
}
Der Aufruf benötigt folgende Werte:
- Device-Name (entweder Name des Device oder variable $name)
- Das Reading, das den RGB-Wert beinhaltet.
- Der Wert für on-state (z.B. "1" oder "on")
- das on-Icon (z.B. "light_light_dim_100")
- Der Wert für off-state (z.B. "0" oder "off")
- das off-Icon (z.B. "light_light")
Im Device kann man dann z.B. als Attribut für das DevStateIcon folgendes eintragen:
{getRGB($name, "rgb","1","light_light_dim_100","0","light_light")}
Faktisch steht dann im DevStateIcon folgender Text:
0:light_light@grey:1 1:light_light_100@#87804d:0
Funktioniert natürlich nur mit SVG-Icons.