#!/usr/bin/perl use warnings; use CGI ':standard'; use GD::Graph::bars; $ile_wpisow = 120; print "\n"x30; #odczyt aktualnej temperatury open(PLIK, '/proc/acpi/thermal_zone/THRM/temperature') or die "Nie można otworzyć pliku: $!"; while ($record = ) { $wartosc = $record; } close PLIK; #parsowanie danych $temperatura = int(substr($wartosc, -5, -3)); #przygotowanie aktualnej daty my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime; $year += 1900; $mon += 1; my $datetime = sprintf "%02d:%02d:%02d", $hour, $min, $sec; #dopisanie ostatniej wartoscido pliku open(LOG, '>>', 'log.txt') or die "Nie można otworzyć pliku: $!"; print LOG $datetime.": ".$temperatura."\n"; # zapisywanie close LOG; #wczytanie calego loga do tablic open (LOG,'log.txt'); $licznik=0; @tablica_dat; @tablica_wartosci; while ($record = ) { $data[0][$licznik] = substr($record, 0, 8); #print $data[0][$licznik]; #print $data[1][$licznik]; $data[1][$licznik] = substr($record, -3, 2); $licznik=$licznik+1;#bo do zera! } close LOG; #otworzenie pliku do nadpisania(w celu utzrymania stalej ilosci rekordow) open (LOG, ">", "log.txt"); if($licznik<=($ile_wpisow+2)) { for ($i = 0; $i<$licznik; $i++) { print LOG "".$data[0][$i].": ".$data[1][$i]."\n"; } } if ($licznik>($ile_wpisow+2)) { for ($i = ($licznik-$ile_wpisow); $i<$licznik; $i++) { print LOG "".$data[0][$i].": ".$data[1][$i]."\n"; } } close(LOG); #przygotowanie wykresu use GD::Graph::area; if (20*$licznik<100) {$licznik = 10;} my $mygraph = GD::Graph::area->new(20*$licznik, 500); $mygraph->set( x_label => 'Data', y_label => 'Wartosc temperatury', y_max_value => 80, y_min_value => 40, y_tick_number => 2, y_label_skip => 1, x_label_skip => 15, ) or warn $mygraph->error; my $myimage = $mygraph->plot(\@data) or die $mygraph->error; #generowanie obrazka open(IMG, '>', 'IMG.PNG') or die "Nie można otworzyć pliku: $!"; print IMG $myimage->png; close IMG; #koniec programu print "\n";