Gruppen Alias aus ETS

Begonnen von solunix, 01 Januar 2017, 10:36:32

Vorheriges Thema - Nächstes Thema

solunix

Hallo Forum und ein frohes Neues.

Ich möchte mein kleines Perl Script teilen, womit ich mir als Einsteiger schnell den per Autocreate erzeugten Defines der KNX Telegramme einen Alias aus der ETS Gruppenbezeichnung gegeben habe. Wer schon abweichende Aliase hat, sollte es nicht einfach so ausführen, da diese überschrieben würden.
Ein Gruppen Export aus der ETS muss mit den Einstellungen Komma-CSV und dem Format "1/3 - Name, Haupt, Mittel, Unter" erzeugt werden.
Ich führe den Output mit Netcat in die FHEM Config. Noch nicht existierende Defines werden einfach ignoriert.
./group2aliases.pl gruppen.csv | ncat -t 127.0.0.1 7072
#!/usr/bin/perl
use utf8;
use strict;
use warnings;
binmode(STDOUT, ":utf8");

use Text::CSV::Encoded;
my $csv = Text::CSV::Encoded->new({
        quote_char          => '"',
        sep_char            => ',',
        allow_loose_quotes  => 1,
        encoding_in         => "iso-8859-1",
        encoding_out        => "utf8",
});

my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";

my $sum = 0;
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
while (my $line = <$data>) {
  chomp $line;
  if ($csv->parse($line)) {

      my @fields = $csv->fields();
      if ($fields[1] =~ /^\d+?$/ and $fields[2] =~ /^\d+?$/ and $fields[3] =~ /^\d+?$/) {
       
        printf "attr KNX_%02d%02d%03d alias %s\n", $fields[1], $fields[2], $fields[3], $fields[0];
        printf "attr FileLog_KNX_%02d%02d%03d alias Log_%s\n", $fields[1], $fields[2], $fields[3], $fields[0];
       
        }
  } else {
      warn "Line could not be parsed: $line\n";
  }
}


Vielleicht hilft es ja dem ein oder anderen.

Gruß,
Thomas