FHEM Forum

FHEM - Hausautomations-Systeme => KNX/EIB => Thema gestartet von: solunix am 01 Januar 2017, 10:36:32

Titel: Gruppen Alias aus ETS
Beitrag von: solunix am 01 Januar 2017, 10:36:32
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