Hallo Rudi,
Ich hätte da eine ganz große Bitte, bitte. Ich möchte die durch mein Modul verteilten userattr in fremde Devices wieder sauber zurück räumen. Dazu benötige ich das Pendant zu addToDevAttrList($$)
Nennen wir es einfach delFromDevAttrList($$) ;D
Ich habe da mal was vorbereitet
sub
delFromDevAttrList($$)
{
my ($dev,$arg) = @_;
my $ua = $attr{$dev}{userattr};
$ua = "" if(!$ua);
my %hash = map { ($_ => 1) }
grep { " $arg " !~ m/ $_ / }
split(" ", "$ua $arg");
$attr{$dev}{userattr} = join(" ", sort keys %hash);
delete $attr{$dev}{userattr} if(!keys %hash and defined($attr{$dev}{userattr}));
}
Danke
Grüße
Habs eingecheckt.Habe vorher noch das Loeschen der eigentlichen Attribute eingebaut, und es kurz getestet.
Vielen vielen Dank.
Das löschen der eigentlichen Attribute habe ich in meinem Modul drin, aber wenn das jetzt die Funktion auch macht ist das ja noch cooler.
Daaaanke
Rudi Du hast die Deklaration der sub vergessen :D
Ich habe mal kurz getestet. Also einfache Attribute räumt er weg, aber sobald ich den Attributen noch was mitgebe. Klappt es nicht mehr.
userattr AutoShuttersControl_Antifreeze:off,morning AutoShuttersControl_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 AutoShuttersControl_Closed_Pos_WinRecTilted:0,10,20,30,40,50,60,70,80,90,100 AutoShuttersControl_Direction AutoShuttersControl_Down:time,astro
Ist ja auch klar, er kann nicht mehr korrekt zu ordnen.
sub
delFromDevAttrList($$)
{
my ($dev,$arg) = @_;
my $ua = $attr{$dev}{userattr};
$ua = "" if(!$ua);
my %hash = map { ($_ => 1) }
grep { " $arg " !~ m/ $_ / }
split(" ", "$ua $arg");
$attr{$dev}{userattr} = join(" ", sort keys %hash);
delete $attr{$dev}{userattr}
if(!keys %hash && defined($attr{$dev}{userattr}));
map { delete $attr{$dev}{$_} } split(" ", (split(":", $arg))[0]);
}
Was hälst Du davon? So sollten auch komplexe Attribute in der userattr als Attribut gelöscht werden.
Könnte aber noch nicht testen, habe gerade nur ein Tablet. Teste ich morgen früh.
Grüße
Guten Morgen Rudi,
Habe es heute Morgen kurz testen können, bei mir funktioniert es wunderbar mit dem Entfernen angelegter Attribute mit der kleinen Codeänderung von ein über mir.