FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: CoolTux am 30 August 2018, 20:38:27

Titel: Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 30 August 2018, 20:38:27
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
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: rudolfkoenig am 30 August 2018, 21:39:37
Habs eingecheckt.Habe vorher noch das Loeschen der eigentlichen Attribute eingebaut, und es kurz getestet.
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 30 August 2018, 21:46:32
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
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 30 August 2018, 22:22:28
Rudi Du hast die Deklaration der sub vergessen  :D
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 30 August 2018, 22:37:07
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.
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 30 August 2018, 23:06:34

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
Titel: Antw:Wunsch! Pendant zu addToDevAttrList($$)
Beitrag von: CoolTux am 31 August 2018, 06:20:39
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.