... und vermutlich sehr einfach.
Ich möchte abhängig vom Wert (Namen) eines Readings MoonPhasesS mit einem userReadings einen Text einfärben. Ich habe dazu folgendes userReadings definiert:
attr Astronomy userReadings Mondausleuchtung {if(ReadingsVal($name,"MoonPhaseS","") eq ("Waning Moon","Waning Crescent","Last Quarter")) {return "#B22222"} elsif (ReadingsVal($name,"MoonPhaseS","") eq ("Waxing Moon","Waxing Crescent","First Quarter")) {return "#A3EBB1"} elsif (ReadingsVal($name,"MoonPhaseS","") eq "Full Moon") {return "#FFFFFF"} else {return "#808080"}}
Damit will ich z.B. wenn der Name des Readings MoonPhaseS Waning Moon, Waning Crescent oder Last Quarter ist einen Text rot (#B22222) einfärben. Das mit der Klammer scheint allerdings nicht zu funktionieren. Wie kann man bei eq mehrere Möglichkeiten einbeziehen?
ZitatDas mit der Klammer scheint allerdings nicht zu funktionieren. Wie kann man bei eq mehrere Möglichkeiten einbeziehen?
Hallöle,
Gedanken eines Perllaien:
Mit einem logischen Oder || sollte es tun ?
... eq "Waning Moon"||"Waning Crescent"||"Last Quarter" ...
Bei mir würd ich das dem ersten Gedanken nach mit einem Hash umsetzen:
Mondausleuchtung:MoonPhaseS.* {my $phase =ReadingsVal($name,"MoonPhaseS","");
my %name2hex = (
'Waning Moon' => '#B22222',
'Waning Crescent' => '#B22222',
'Last Quarter' => '#B22222',
'Waxing Moon' => '#A3EBB1',
'Waxing Crescent' => '#A3EBB1',
'First Quarter' => '#A3EBB1',
'Full Moon' => '#FFFFFF');
return '#808080' if !$name2hex{$phase};
return $name2hex{$phase};}
Gruß Thomas
An das mit dem logischen oder dachte ich auch, nur leider funktionierte das nicht.
Deine Lösung finde ich eh eleganter.
Nur leider gibt es noch einen Fehler:
Error evaluating Astronomy userReading Mondausleuchtung: syntax error at (eval 146338) line 1, near ") {"
Es funktioniert jetzt. Es war wohl ein copy/paste Fehler vom iPad mit unsichtbaren Steuerzeichen:
Mondausleuchtung:MoonPhaseS.* {
my $phase = ReadingsVal($name, "MoonPhaseS", "");
my %name2hex = (
'Waning Moon' => '#B22222',
'Waning Crescent' => '#B22222',
'Last Quarter' => '#B22222',
'Waxing Moon' => '#A3EBB1',
'Waxing Crescent' => '#A3EBB1',
'First Quarter' => '#A3EBB1',
'Full Moon' => '#FFFFFF'
);
return '#808080' if !$name2hex{$phase};
return $name2hex{$phase};
}