#!/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");