FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: klausw am 19 November 2014, 16:41:39

Titel: define mit devspec?
Beitrag von: klausw am 19 November 2014, 16:41:39
Hallo zusammen,

folgendes Problem:

ich habe z.B. mehere presence devices, die alle mit pres_ beginnen.
Nun möchte ich separate logfiles für alle anlegen.
Gibt es da eine ähnliche Möglichkeit wie bei attriuten (attr pres_.* room test1), das ich mit einem Befehl die Logfiles für alle devices, die mit pres_ beginnen, anlegen kann?

und gleich noch eine Frage:
kann ich mit rename alles Devices die z.B mit pres_ beginnen umbenennen? Also pres_.* -> presence_.*


Titel: Antw:define mit devspec?
Beitrag von: igami am 19 November 2014, 17:37:39
Benutzer nur DbLog, aber zum umbenennen, defines und attribute ändern baue ich mir grad eine Funktion

sub modify($$$$){
  my ($device,$value,$old,$new) = @_ ;
  my @devices = devspec2array($device) ;
   
  foreach $device (@devices){
    if ($value eq "DEF"){
      my $VALUE = InternalVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("modify $device $VALUE");
    }elsif ($value eq "NAME"){
      my $VALUE = InternalVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("rename $device $VALUE");
    }else{
      my $VALUE = AttrVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("attr $device $value $VALUE");
    }
  }
}


Grüße
Igami
Titel: Antw:define mit devspec?
Beitrag von: klausw am 20 November 2014, 12:19:47
danke, das schaue ich mir am We mal an
Titel: Antw:define mit devspec?
Beitrag von: choetzu am 21 Januar 2018, 10:43:05
Zitat von: igami am 19 November 2014, 17:37:39
Benutzer nur DbLog, aber zum umbenennen, defines und attribute ändern baue ich mir grad eine Funktion

sub modify($$$$){
  my ($device,$value,$old,$new) = @_ ;
  my @devices = devspec2array($device) ;
   
  foreach $device (@devices){
    if ($value eq "DEF"){
      my $VALUE = InternalVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("modify $device $VALUE");
    }elsif ($value eq "NAME"){
      my $VALUE = InternalVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("rename $device $VALUE");
    }else{
      my $VALUE = AttrVal($device,$value,($value." error"));
      $VALUE =~ s/$old/$new/g;
      fhem("attr $device $value $VALUE");
    }
  }
}


Grüße
Igami

Hallo Igami

dieser Post ist lange her. Wo speicherst du das? in MyUtils? Und wie rufst du es auf.. Wenn ich folgendes eingebe

{modify("HM_40A3B3.*", "NAME", "HM_40A3B3", "Steckdose_Technik"}

krieg ich die Fehlermeldung

2018.01.21 10:42:10 1: ERROR evaluating {modify("HM_40A3B3.*", "NAME", "HM_40A3B3", "Steckdose_Technik"}: syntax error at (eval 10878) line 1, at EOF

Oder gilt das heute nicht mehr, da der Post aus Jahr 2014?
Titel: Antw:define mit devspec?
Beitrag von: choetzu am 21 Januar 2018, 10:50:45
hat sich erledigt: es gibt ja den SET Befehl deviceRename... damit ist das obsolet.
Titel: Antw:define mit devspec?
Beitrag von: igami am 21 Januar 2018, 17:36:34
Zitat von: choetzu am 21 Januar 2018, 10:43:05
Hallo Igami

dieser Post ist lange her. Wo speicherst du das? in MyUtils? Und wie rufst du es auf.. Wenn ich folgendes eingebe

{modify("HM_40A3B3.*", "NAME", "HM_40A3B3", "Steckdose_Technik"}

krieg ich die Fehlermeldung

2018.01.21 10:42:10 1: ERROR evaluating {modify("HM_40A3B3.*", "NAME", "HM_40A3B3", "Steckdose_Technik"}: syntax error at (eval 10878) line 1, at EOF

Oder gilt das heute nicht mehr, da der Post aus Jahr 2014?
Ist wirklich schon lange her :D
Es fehlt eine ) am Ende, daher der syntax error. Ansonsten wird es so gemacht wie du vermutet hast.