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
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'}`) ."°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}";
Kommentar