Codeschnipsel für Farbige Icons von anderen Devices - z.B. MQTT RGB(W)-Dimmer

Begonnen von LarsMie, 23 April 2017, 19:10:19

Vorheriges Thema - Nächstes Thema

LarsMie

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) 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.