From: Arne Fitzennreiter Date: Tue, 21 Oct 2008 11:34:23 +0000 (+0200) Subject: Add ACPI Thermal Zone support X-Git-Tag: v2.3-rc1~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30189c5045390ca07dd0aa0c0619964553f674b3;p=people%2Fstevee%2Fipfire-2.x.git Add ACPI Thermal Zone support --- diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index dadbf80f19..668e8934a2 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -1039,6 +1039,97 @@ sub updatecpufreqgraph { print "Error in RRD::graph for cpu freq: ".$ERROR."\n" if $ERROR; } +# Generate the Thermal Zone Temp CPU Graph + +sub updatethermaltempgraph { + my $thermalcount = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/thermal-thermal_zone* | wc -l`; + my $period = $_[0]; + my @command = ( + "-", + "--start", + "-1".$period, + "-aPNG", + "-i", + "-z", + "-W www.ipfire.org", + "--alt-y-grid", + "-w 600", + "-h 125", + "-l 0", + "-r", + "-t "."ACPI Thermal-Zone Temperature"." ".$Lang::tr{$period}, + "-v Grad Celsius", + "--color=SHADEA".$color{"color19"}, + "--color=SHADEB".$color{"color19"}, + "--color=BACK".$color{"color21"}, + "COMMENT:".sprintf("%-15s",$Lang::tr{'caption'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j" + ); + + for(my $i = 0; $i < $thermalcount; $i++) { + my $j=$i+1; + push(@command,"DEF:temp".$i."_=".$mainsettings{'RRDLOG'}."/collectd/localhost/thermal-thermal_zone".$i."/temperature-temperature.rrd:value:AVERAGE" + ,"CDEF:temp".$i."=temp".$i."_,1,/" + ,"LINE1:temp".$i.$color{"color1$j"}."A0:Temp ".$i." " + ,"GPRINT:temp".$i.":MAX:%3.0lf Grad C" + ,"GPRINT:temp".$i.":AVERAGE:%3.0lf Grad C" + ,"GPRINT:temp".$i.":MIN:%3.0lf Grad C" + ,"GPRINT:temp".$i.":LAST:%3.0lf Grad C\\j"); + } + + RRDs::graph (@command); + $ERROR = RRDs::error; + print "Error in RRD::graph for thermal temp: ".$ERROR."\n" if $ERROR; +} + +sub updatethermalcoolinggraph { + my $thermalcount = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/thermal-cooling_device* | wc -l`; + my $period = $_[0]; + my @command = ( + "-", + "--start", + "-1".$period, + "-aPNG", + "-i", + "-z", + "-W www.ipfire.org", + "--alt-y-grid", + "-w 600", + "-h 125", + "-l 0", + "-r", + "-t "."ACPI Thermal-Zone Cooling Device"." ".$Lang::tr{$period}, + "-v State", + "--color=SHADEA".$color{"color19"}, + "--color=SHADEB".$color{"color19"}, + "--color=BACK".$color{"color21"}, + "COMMENT:".sprintf("%-15s",$Lang::tr{'caption'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j" + ); + + for(my $i = 0; $i < $thermalcount; $i++) { + my $j=$i+1; + push(@command,"DEF:cooling".$i."_=".$mainsettings{'RRDLOG'}."/collectd/localhost/thermal-cooling_device".$i."/gauge-cooling_state.rrd:value:AVERAGE" + ,"CDEF:cooling".$i."=cooling".$i."_,1,/" + ,"LINE1:cooling".$i.$color{"color1$j"}."A0:cooling ".$i." " + ,"GPRINT:cooling".$i.":MAX:%3.0lf" + ,"GPRINT:cooling".$i.":AVERAGE:%3.0lf" + ,"GPRINT:cooling".$i.":MIN:%3.0lf" + ,"GPRINT:cooling".$i.":LAST:%3.0lf\\j"); + } + + RRDs::graph (@command); + $ERROR = RRDs::error; + print "Error in RRD::graph for thermal cooling: ".$ERROR."\n" if $ERROR; +} + + # Generate a random color, used by Qos Graph to be independent from the amount of values sub random_hex_color { diff --git a/config/collectd/collectd.conf b/config/collectd/collectd.conf index c2a974a100..546c3194ab 100644 --- a/config/collectd/collectd.conf +++ b/config/collectd/collectd.conf @@ -25,6 +25,7 @@ LoadPlugin processes LoadPlugin rrdtool LoadPlugin sensors LoadPlugin swap +LoadPlugin thermal LoadPlugin syslog #LoadPlugin wireless diff --git a/html/cgi-bin/hardwaregraphs.cgi b/html/cgi-bin/hardwaregraphs.cgi index 73885a0d7e..d03f3f2b22 100644 --- a/html/cgi-bin/hardwaregraphs.cgi +++ b/html/cgi-bin/hardwaregraphs.cgi @@ -63,6 +63,14 @@ if ( $querry[0] =~ "hwtemp"){ print "Content-type: image/png\n\n"; binmode(STDOUT); &Graphs::updatehwvoltgraph($querry[1]); +}elsif ( $querry[0] =~ "thermaltemp"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatethermaltempgraph($querry[1]); +}elsif ( $querry[0] =~ "thermalcooling"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatethermalcoolinggraph($querry[1]); }elsif ( $querry[0] =~ "sd?" || $querry[0] =~ "hd?" ){ print "Content-type: image/png\n\n"; binmode(STDOUT); @@ -97,20 +105,33 @@ if ( $querry[0] =~ "hwtemp"){ &Header::closebox(); } - &Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}"); - &Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day"); - &Header::closebox(); + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/thermal-thermal_zone*` ) { + &Header::openbox('100%', 'center', "ACPI Thermal-Zone Temp $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","thermaltemp","day"); + &Header::closebox(); + } - &Header::openbox('100%', 'center', "hwfan $Lang::tr{'graph'}"); - &Graphs::makegraphbox("hardwaregraphs.cgi","hwfan","day"); - &Header::closebox(); + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/thermal-thermal_zone*` ) { + &Header::openbox('100%', 'center', "ACPI Thermal-Zone Cooling $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","thermalcooling","day"); + &Header::closebox(); + } - &Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}"); - &Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day","375"); - &Header::closebox(); + if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sonsors-*` ) { + &Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day"); + &Header::closebox(); - sensorsbox(); + &Header::openbox('100%', 'center', "hwfan $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwfan","day"); + &Header::closebox(); + &Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day","375"); + &Header::closebox(); + + sensorsbox(); + } &Header::closebigbox(); &Header::closepage();