Wunsch! Pendant zu addToDevAttrList($$)

Begonnen von CoolTux, 30 August 2018, 20:38:27

Vorheriges Thema - Nächstes Thema

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Habs eingecheckt.Habe vorher noch das Loeschen der eigentlichen Attribute eingebaut, und es kurz getestet.

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Rudi Du hast die Deklaration der sub vergessen  :D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

#5

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net