Ankündigung

Einklappen
Keine Ankündigung bisher.

EXPERIMENTAL: 1-wire-Sortierung im Webmin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] EXPERIMENTAL: 1-wire-Sortierung im Webmin

    Patch für /usr/share/webmin/wiregate/edit_owsensorconf.cgi.
    Mit diesem Patch werden die Busmaster und Sensoren nach Busid und Namen sortiert angezeigt, außerdem bei den Temperatursensoren in der Spalte "Bus" der Name statt der Nummer angezeigt.

    Disclaimer: EXPERIMENTAL! Backup der Datei machen, diff/patch kennen, auf niemanden vertrauen. Andererseits: garantiert virusfrei :-)

    @Makki: falls dir der Patch zusagt, fände ich es toll, wenn du ihn in einem der nächsten Patchlevel aufnehmen würdest.

    VG, Fry

    Code:
    --- edit_owsensorconf.cgi.orig  2012-08-21 11:21:11.000000000 +0200
    +++ edit_owsensorconf.cgi       2012-09-27 16:02:01.000000000 +0200
    @@ -196,6 +196,8 @@
              #DEBUG: print "Match! Bus: $1 Sensor $2<br>\n";
              if ($conf{$2}) {
                 $conf{$2}{'busid'} = $busid;
    +           $conf{$2}{'busifname'} = trim(`owread -s $owserver_address /bus.$busid/interface/settings/name`) || "n/a";
    +           $conf{$2}{'busifname'} .= "/" . trim(`owread -s $owserver_address /bus.$busid/interface/settings/address`) || "n/a";
                 $buscount[$busid]++;
              }
           }
    @@ -204,9 +206,12 @@
            }
     }
     
    +# sort keys
    +my @alleSchluessel = sort { $conf{$a}{'busid'}.$conf{$a}{'name'} cmp $conf{$b}{'busid'}.$conf{$b}{'name'} } keys %conf;
    +
     ## Enum config to see what we have to display
     my $print_DS1820,$print_DS2438Hum,$print_DS2438THS,$print_DS2438TL,$print_DS2438TV,$print_DS2438TC,$print_DS2760MO,$print_DS1990,$print_DS2406,$print_DS2408,$print_DS2413,$print_DS2423;
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS1820') { $print_DS1820++; }
            if ($Schluessel and ($conf{$Schluessel}{'type'} eq 'DS2438Hum' or $conf{$Schluessel}{'type'} eq 'DS2438Hum-HIH3610')) { $print_DS2438Hum++; }
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2438THS') { $print_DS2438THS++; }
    @@ -231,6 +236,7 @@
     # redirect to home as owserver gets restarted by wiregated!
     
     my @busmasters;
    +my %busmasternames;
     ### Enum and print DS9490 sensors ###
     if ($print_DS9490) {
     print "<table border width=100%>\n";
    @@ -251,9 +257,10 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr></thead>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS9490') {
         $busmasters[$conf{$Schluessel}{'busid'}] = $Schluessel unless (!defined $conf{$Schluessel}{'busid'}); # array for DS1990 
    +    $busmasternames{$conf{$Schluessel}{'busid'}}=$conf{$Schluessel}{'name'};
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
         my $graphurl = "http://$ENV{'SERVER_NAME'}/graph.pl?--start=-24h;--end=now;-X=0;-W=WireGate;--slope-mode;--lazy;-h=200;-w=600;--full-size-mode;" 
                     ."--vertical-label=".&urlize(unGruetz($conf{$Schluessel}{'name'})).";DEF:ds0=".$Schluessel."_errors.rrd:errors:MAX;"
    @@ -268,9 +275,8 @@
                     ."VDEF:cds1_MAX=cds1,MAXIMUM;GPRINT:cds1_MAX:Max\\:%20%8.2lf;VDEF:cds1_LAST=cds1,LAST;GPRINT:cds1_LAST:Last\\:%20%8.2lf;";
                     #."VDEF:cds0_AVERAGE=cds0,AVERAGE;GPRINT:cds0_AVERAGE:Mittel\\:%20%8.2lf%s;VDEF:cds0_MAX=cds0,MAXIMUM;GPRINT:cds0_MAX:Max\\:%20%8.2
     
    -    my $busifname = trim(`owread -s $owserver_address /bus.$conf{$Schluessel}{'busid'}/interface/settings/name`) || "n/a";;
    -       $busifname .= "/" . trim(`owread -s $owserver_address /bus.$conf{$Schluessel}{'busid'}/interface/settings/address`) || "n/a";
    -       print "<tr $cb> <td>$Schluessel<br>($busifname)</td>\n";
    +    my $busifname = $conf{$Schluessel}{'busifname'};
    +    print "<tr $cb> <td>$Schluessel<br>($busifname)</td>\n";
         print "<td><input name=".$Schluessel."_name size=20 value=\"$conf{$Schluessel}{'name'}\"></td>\n";
            print "<td align=center>";
         my $busetime = trim(`owread -s $owserver_address /bus.$conf{$Schluessel}{'busid'}/interface/statistics/elapsed_time`);
    @@ -297,7 +303,7 @@
         $active_pct < 100 ? $active_pct : 100;
            print "<td align=center>" . $active_pct ."%</td>\n";
            print "<td align=center>" . eval { int($busetime/86400) ."d ". nearest(.1,($busetime%86400)/3600) . "h"; } ."</td>\n";
    -       print "<td align=center>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'})?$conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
       print "<td><input name=".$Schluessel."_type size=10 readonly value=\"$conf{$Schluessel}{'type'}\"></td>\n";
            print "<td align=center><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
    @@ -337,7 +343,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr></thead>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
       # Eval which bus-number
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS1820') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
    @@ -360,7 +366,7 @@
            if ($owserver and $sensor_present and $config{'read_sensors'}) {        # print values
                    print "<td>" . trim(`owread -s $owserver_address $Schluessel/temperature$conf{$Schluessel}{'resolution'}`) ."&deg;C</td>\n";
                    print "<td>" . trim(`owread -s $owserver_address $Schluessel/power`) ."</td>\n";
    -               print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +               print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n";
            } 
            elsif ($owserver and $sensor_present) { # print OK only
                    print "<td>OK</td><td>n/a</td><td>n/a</td>\n"; }
    @@ -434,7 +440,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr></thead>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and ($conf{$Schluessel}{'type'} eq 'DS2438Hum' or $conf{$Schluessel}{'type'} eq 'DS2438Hum-HIH3610')) {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
       #CHECK page4/5
    @@ -515,7 +521,7 @@
         } else {
           print "<td>".$voltage."V</td>"
         }
    -    print "<td>". (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>"; 
    +    print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n";
         #my ($vad,$vdd,$tempext) = (trim($owserver->read("$Schluessel/VAD")), trim($owserver->read("$Schluessel/VDD")), trim($owserver->read("/10.3927CB010800/temperature")));
         #print "<br>corrected:" . (($vad / $vdd - (0.8 / $vdd)) / (.0062 * (1.0305 + .000044 * $tempext + .0000011 * $tempext * $tempext)));
         # OWFS-formula humidity OWQ_F(owq) = (VAD / VDD - (0.8 / VDD)) / (.0062 * (1.0546 - .00216 * T));
    @@ -523,7 +529,8 @@
         # -> 4. Nachkommastelle vernachlässigbar
            } 
            elsif ($owserver and $sensor_present) { # print OK only
    -    print "<td>OK</td><td>OK</td><td>n/a</td><td>n/a</td><td>n/a</td><td>". (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n"; }
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n";
    + }
            else { 
         print "<td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td>";
       }
    @@ -615,7 +622,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr></thead>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2438THS') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
       my ($wk,$yr,$rev,$dummy) = unpack("C S> CC",$owserver->read("$Schluessel/pages/page.5"));
    @@ -704,10 +711,10 @@
         } else {
           print "<td>".$voltage."V</td>"
         }
    -    print "<td>". (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>"; 
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n";
            } 
            elsif ($owserver and $sensor_present) { # print OK only
    -               print "<td>OK</td><td>OK</td><td>OK</td><td>n/a</td><td>n/a</td><td>n/a</td><td>". (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n"; }
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; }
            else { print "<td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td>"; }
            print "<td sorttable_customkey=\"".&str2addr($conf{$Schluessel}{'eib_ga_temp'})."\"><input name=".$Schluessel."_eib_ga_temp size=9 maxlenght=9 value=\"$conf{$Schluessel}{'eib_ga_temp'}\" onchange=\"CheckKNXGA(this)\"></td>\n";
            if ($conf{$Schluessel}{'eib_ga_temp'}) {
    @@ -788,7 +795,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2438TL') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            print "<tr $cb> <td>$Schluessel</td>\n";
    @@ -846,7 +853,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2438TV') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            print "<tr $cb> <td>$Schluessel</td>\n";
    @@ -902,7 +909,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2438TC') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            print "<tr $cb> <td>$Schluessel</td>\n";
    @@ -970,7 +977,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2760MO') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
       ${%conf->{$Schluessel}}{'rra_1_interval_rows'} = 2160 unless defined ${%conf->{$Schluessel}}{'rra_1_interval_rows'};
    @@ -1015,7 +1022,7 @@
            elsif ($owserver and $sensor_present) { # print OK only
                    print "<td>OK</td><td>OK</td><td>OK</td>\n"; }
            else { print "<td>n/a</td><td>n/a</td><td>n/a</td>"; }
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td class=rra_hidden><input name=".$Schluessel."_rra_1_interval_rows size=9 maxlenght=9 value=\"$conf{$Schluessel}{'rra_1_interval_rows'}\"></td>\n";
            print "<td class=rra_hidden><input name=".$Schluessel."_rra_5_interval_rows size=9 maxlenght=9 value=\"$conf{$Schluessel}{'rra_5_interval_rows'}\"></td>\n";
            print "<td class=rra_hidden><input name=".$Schluessel."_rra_15_interval_rows size=9 maxlenght=9 value=\"$conf{$Schluessel}{'rra_15_interval_rows'}\"></td>\n";
    @@ -1053,7 +1060,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr></thead>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS1990') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
      my $graphurl = "http://$ENV{'SERVER_NAME'}/graph.pl?--start=-24h;--end=now;-W=WireGate;--slope-mode;--lazy;-h=200;-w=650;--full-size-mode;" 
    @@ -1090,7 +1097,7 @@
            if ($owserver and $sensor_present) {    # print OK only
                    print "<td>$text{'yes'}</td>\n"; }
            else { print "<td>$text{'no'}</td>"; }
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
            #print "Option $item Value $conf{$item}";
    @@ -1122,7 +1129,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2406') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            my @sensed_status = qw( closed open );
    @@ -1166,7 +1173,7 @@
           }
            } else { 
         print "<td>$text{'n/a'}</td><td>$text{'n/a'}</td>"; } # print OK only
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
            #print "Option $item Value $conf{$item}";
    @@ -1199,7 +1206,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2408') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            my @sensed_status = qw( closed open );
    @@ -1232,7 +1239,7 @@
         print "<td>$text{'n/a'}</td>"; 
         } # print OK only
       }
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
            #print "Option $item Value $conf{$item}";
    @@ -1265,7 +1272,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2413') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            my @sensed_status = qw( closed open );
    @@ -1311,7 +1318,7 @@
           }
            } else { 
         print "<td>$text{'n/a'}</td><td>$text{'n/a'}</td>"; } # print OK only
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
            #print "Option $item Value $conf{$item}";
    @@ -1341,7 +1348,7 @@
     print "<td> <b>$text{'owsensorconf_tbl_delete'}</b></td>\n";
     print "</tr>\n";
     
    -while (($Schluessel, $Wert) = each(%conf)) {
    +for $Schluessel (@alleSchluessel) { 
            if ($Schluessel and $conf{$Schluessel}{'type'} eq 'DS2423') {
         my $sensor_present = `owpresent -s $owserver_address $Schluessel`;
            print "<tr $cb> <td>$Schluessel</td>\n";
    @@ -1362,7 +1369,7 @@
           print "<td>". trim($owserver->read("/uncached/$Schluessel/counters.B")) ."</td>\n"; 
            } else { 
         print "<td>$text{'n/a'}</td><td>$text{'n/a'}</td>"; } # print OK only
    -       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? $conf{$Schluessel}{'busid'} : "n/a") ."</td>\n";
    +       print "<td>" . (defined($conf{$Schluessel}{'busid'}) ? (defined($busmasternames{$conf{$Schluessel}{'busid'}})?$busmasternames{$conf{$Schluessel}{'busid'}}:$conf{$Schluessel}{'busid'}) : "n/a") ."</td>\n"; 
            print "<td><input type=checkbox name=".$Schluessel."_ZZdelete value=1></td>\n";
            print "</tr>\n";
            #print "Option $item Value $conf{$item}";

    #2
    Klingt nach einer guten Idee. Danke!

    Kommentar


      #3
      Wäre es möglich einen Screenshot zu posten vom Ergebnis, dann kann jeder für sich schnell prüfen, ob er sein System patchen möchte.

      lg

      Stefan

      Kommentar


        #4
        Voila, Screenshot anbei.

        Busmaster sortiert nach Spalte "Bus", dadurch sind sie in der Reihenfolge, in der sie auch am Hub hängen.

        Sensoren sortiert nach Spalte "Bus", in der die Busmaster NAMENTLICH (statt mit Nummer) stehen. Sekundäres Sortierkriterium ist der Sensorname.

        (Die vielen "n/a"-Sensoren sind einfach noch nicht angeschlossen, aber schon von mir vorbereitet worden).

        VG, Fry
        Angehängte Dateien

        Kommentar


          #5
          Yeah, gefällt mir!

          Aber mit Multisensoren (und dem was alles in der Pipeline ist) usw. geht das dann nicht mehr ganz so einfach.

          Aber sehr schön, Makki wird das sicher noch bewerten, aber frühestens heute abend bzw. morgen.

          merci

          Stefan

          Kommentar


            #6
            Sieht gut aus - diese Sortierung gefällt mir sehr gut.

            Kommentar


              #7
              Ääähm, man kann jetzt schon (seit langem!) durch einen Klick auf die Überschrift sortieren (?!)

              Die Anzeige ist ziemlich tricky, vor allem für die Kandidaten mit einem wackeligen 1-Wire.. Das problem ist das zwischen einlesen der BM und dem Rest durchaus 1-10 Sensoren flöten gehen können, die augenscheinlich "funktionieren"..
              Der BM-Name ist aber entweder schon im SVN - oder wird übernommen

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar

              Lädt...
              X