#!/usr/bin/perl
###########################################
# water -- Water Balcony Plants
# Mike Schilli, 2006 (m@perlmeister.com)
###########################################
use warnings;
use strict;

use Device::SerialPort;
use ControlX10::CM11;
use Log::Log4perl qw(:easy);
use Waterscore qw(waterscore);

my $HOUSE_CODE = "K";
my $UNIT_CODE  = "11";
my $SERIAL     = "/dev/ttyS0";
my $BAUDRATE   = 4800;
my $LOCATION   = "USCA0987";

die "You must be root" if $> != 0;

Log::Log4perl->easy_init({
  level => $DEBUG, 
  file  => ">>/tmp/water.log"});

my $score = waterscore($LOCATION);

if($score < 20) {
    INFO "No water.";
    exit 0;
}

my $serial = Device::SerialPort->new(
    $SERIAL, undef);
$serial->baudrate($BAUDRATE);

  # Address unit
ControlX10::CM11::send($serial, 
    $HOUSE_CODE . $UNIT_CODE);

  # Turn water pump on
INFO "Water on";
ControlX10::CM11::send($serial, 
    $HOUSE_CODE . "J");

sleep($score/10);

  # Turn water pump off
INFO "Water off";
ControlX10::CM11::send($serial, 
    $HOUSE_CODE . "K");
