Listing 1. Refrigerator Temperature Controlling Script

#!/usr/bin/perl

my $temp_min  = 67;
my $temp_max  = 69;

use 5.010;
use strict;
use warnings;
use Carp;
use Device::USB;
use Device::USB::PCSensor::HidTEMPer::Device;
use Device::USB::PCSensor::HidTEMPer::NTC;
use Device::USB::PCSensor::HidTEMPer::TEMPer;
use lib;
use Device::USB::PCSensor::HidTEMPer;

my $pcsensor  = Device::USB::PCSensor::HidTEMPer->new();
my @devices   = $pcsensor->list_devices();
my $logfile   = '/var/log/temper.log';
my $time      = localtime();
my $temperature;

foreach my $device ( @devices ){
   $temperature = $device->internal()->fahrenheit();
}

die unless $temperature;

open LOG, ">> $logfile" or die "Can't open $logfile: $!\n";

# B4 = Fridge power, B5 = Heater power

# turn on heater if I'm 1F below the low temp
if($temperature < ($temp_min - 1)){
   system('/usr/local/bin/br --port /dev/ttyUSB0 B5 ON');
   system('/usr/local/bin/br --port /dev/ttyUSB0 B4 OFF');
   print LOG "$time\t$temperature\tHON\n";
}
elsif($temperature < $temp_min){
   system('/usr/local/bin/br --port /dev/ttyUSB0 B4 OFF');
   system('/usr/local/bin/br --port /dev/ttyUSB0 B5 OFF');
   print LOG "$time\t$temperature\tOFF\n";
}
elsif($temperature > $temp_max){
   system('/usr/local/bin/br --port /dev/ttyUSB0 B4 ON');
   system('/usr/local/bin/br --port /dev/ttyUSB0 B5 OFF');
   print LOG "$time\t$temperature\tCON\n";
}
else{
   print LOG "$time\t$temperature\t\n";
}

close LOG;

