#!/usr/bin/perl

use 5.034;
no warnings;

my $VERBOSE = 0;

my $voice = $ARGV[0] // 0;

# check for commads needed
for ( qw(sensors uptime ps wc) ){
   say "No $_" if (length( `which $_`) < 3);
}
die "Install 'lm-sensors'" if ( length ( `which sensors` ) < 3);

my ($cpu, $cpuload, $nproc, $g, $c, $sens, $minicount);
while (1) {
    # detection phase
    $sens = `sensors`;
    $cpu = `uptime`;
    $nproc = `ps aux | wc -l`; 
    # processing phase
    if ($cpu =~ /load average: (\d+\,\d+)/) {  # first \, is spanish; change to \. to english
	$cpuload = $1;
    }
    chomp ($nproc);
    $nproc--;
    if ( $sens =~ /Package id 0\:\s+\+(\d+)\.\d(.+C)\s/ ){                     # i.e. 65.0°C  no resolution by decimals
	$g = $1;
	$c = $2;
	if ($voice && ++$minicount > 5){
	    system "echo \"Temperatura $g grados celsius, $cpuload CPU, y $nproc procesos\" | espeak -v es" if $VERBOSE;
	    $minicount = 0;
	}
	print "  " x ($g-24), "$g$c cpu $cpuload nproc $nproc ";   # histogram
	if ($g < 30){
	    say "\x{2705}";            # ok
	}elsif ($g < 40){
	    say "\x{1F192}";           # cool
	}elsif ($g < 50){
	    say "\x{1F4F6}";           # up
	}elsif ($g < 60){
	    say "\x{1F3C1}";           # race 
	}elsif ($g < 70){
	    say "\x{1F419}";           # octopus
	}elsif ($g < 80){
	    say "\x{1F4DB}";           # ignition  
	}else{
	    say "\x{1F198}";           # sos
	    system "echo \"ALERTA. RECALENTAMIENTO\" | espeak -v es";
	}
    }
    sleep 60;
}

exit 3;

__END__
  Util**3
 
