Wie muss man in $hash->{AttrList} ein Attribut definieren, damit der Anwender wie beim Attribut "room" in einem Mehrfachauswahlmenü ein oder mehrere Werte aus der in $hash->{AttrList} vorgegebenen Liste auswählen kann? Mit
$hash->{AttrList} = "alarmTrigger:dayNight,isRaining,isStormy,isWindy"
gelingt es mir nur ein Auswahlliste bereitzustellen, aus der man einen Wert auswählen kann.
Das ist eine sehr schlechte Idee den Hash selbst zu beschreiben.
Wie stellst Du sicher das Du vorhandene nicht überschreibst?
Für Dein Vorhaben gibt es addToDevAttrList und delFromDevAttrList.
Grüße
Ich habe das Thema verfehlt. Sechs setzen :-[
Zitat von: CoolTux am 15 April 2020, 18:10:50
Das ist eine sehr schlechte Idee den Hash selbst zu beschreiben.
Wie stellst Du sicher das Du vorhandene nicht überschreibst?
Der Aufmerksame "Perl-Ecke" Leser weiß es:
https://forum.fhem.de/index.php/topic,109740.msg1039114.html#msg1039114
So schlecht ist die Idee doch nicht.
$hash = {
%{$hash},
hier_fummel => 'ich einen neuen Wert herein und überschreibe ggf. den vorhandenen und nur den',
},
=
$hash->{hier_fummel} = 'ich einen neuen Wert herein und überschreibe ggf. den vorhandenen und nur den';
Nur muss es ja nicht bei einer zeile bleiben.
Wenn ich nun will, dass mein Wert aber ggf. von einem bereits vorhandenen Wert überschrieben werden soll... Hausaufgabe.
...
Ne kleiner Scherz:
$hash = {
hier_fummel => 'ich zwar was rein, aber wenn schon vorhanden wird nix geändert',
aber_hier => 'eventuell',
%{$hash},
und_hier => 'auf jeden Fall',
},
Capiche?
Zitat von: CoolTux am 15 April 2020, 18:10:50
Das ist eine sehr schlechte Idee den Hash selbst zu beschreiben.
Wie stellst Du sicher das Du vorhandene nicht überschreibst?
Für Dein Vorhaben gibt es addToDevAttrList und delFromDevAttrList.
Grüße
Achtung, cooltux Empfehlung folgen.
Es gibt für das Vorhaben interne Funktionen welche bitte auch verwendet werden sollen.
Wenn vorhandene Funktionen sind, soll man natürlich die nutzen. Die
%hash = (
%mein_geknoedel_low_prio,
%hash
%mein_geknoedel_high_prio,
);
Methode funktioniert aber auch wenn keine Funktionen da sind.
ZitatWie muss man in $hash->{AttrList} ein Attribut definieren, damit der Anwender wie beim Attribut "room" in einem Mehrfachauswahlmenü ein oder mehrere Werte aus der in $hash->{AttrList} vorgegebenen Liste auswählen kann?
$hash->{AttrList} = "alarmTrigger:multiple,dayNight,isRaining,isStormy,isWindy"
Falls keiner der Keywords erkannt wird (die Liste ist hier (https://fhem.de/commandref_modular.html#widgetOverride)), dann wird select angenommen. Alternative ist evtl. multiple-strict
ZitatWie stellst Du sicher das Du vorhandene nicht überschreibst?
Es geht hier um das Initialisieren im Modul Hash als Modul-Autor, erweitern muss man in diesem Fall nichts.
Ah jetzt verstehe ich. Es geht um das eigene Device was die Attribute bekommen soll. Sorry da habe ich zu schnell gelesen.
Rudi hat die richtige Lösung.