#!/usr/bin/perl

use strict;
use CGI qw(:all escapeHTML);
use CGI::Carp qw(fatalsToBrowser);
#use ControlX10::CM11;
use ControlX10::CM17;
use Device::SerialPort;

#$PortObj = new Device::SerialPort ($PortName, '1')
my $serial_port = Device::SerialPort->new('/dev/ttyS0',1);
die "Can't open serial port $serial_port: $^E\n" unless ($serial_port);

$serial_port->error_msg(1); # use built-in error messages
$serial_port->user_msg(0);
$serial_port->databits(8);
$serial_port->baudrate(4800);
$serial_port->parity("none");
$serial_port->stopbits(1);
$serial_port->dtr_active(1);
$serial_port->handshake("none");
$serial_port->write_settings || die "Could not set up port\n";

# turn A2 off
#&ControlX10::CM11::send($serial_port, 'A2');
#&ControlX10::CM11::send($serial_port, 'AK');

my $default_page='http://www.joewise.com/sprinklers/index1.html';
my $zone_base='http://www.joewise.com/sprinklers/zone';

# which 'zone' was clicked?
my $zone = param ("zone");
#my $mh_comm ="";

# I'm a virgin, or I'm a dirty dirty whore (i.e. somebody's passing bogus parms)
if ( ( "$zone" < -7 ) || ( "$zone" > 7 ) ) 
{
	print redirect("$default_page");
}
# Called with correct parm
else
{
	# if our only goal was to turn everything off, do it and get out
	if ( "$zone" == 0 )
	{
		print redirect("$zone_base"."$zone".".html");
		#$mh_comm = '/usr/local/mh/bin/mhsend -host localhost -run "front_yard off"';
		&ControlX10::CM17::send($serial_port, 'A1K');
		&ControlX10::CM17::send($serial_port, 'A2K');
		&ControlX10::CM17::send($serial_port, 'A3K');
		&ControlX10::CM17::send($serial_port, 'A4K');
		&ControlX10::CM17::send($serial_port, 'A5K');
		&ControlX10::CM17::send($serial_port, 'A6K');
		&ControlX10::CM17::send($serial_port, 'A7K');
		&ControlX10::CM17::send($serial_port, 'A8K');
		
	#	&ControlX10::CM11::send($serial_port, 'A1');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A2');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A3');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A4');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A5');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A6');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A7');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	#	&ControlX10::CM11::send($serial_port, 'A8');
	#	&ControlX10::CM11::send($serial_port, 'AK');
	}
	elsif ( "$zone" < 0 )
	{
		$zone =~ s/-//g ;
		print redirect("$zone_base"."0".".html");
		# turn it off
		&ControlX10::CM17::send($serial_port, "A${zone}K");
		#&ControlX10::CM11::send($serial_port, "A${zone}");
		#&ControlX10::CM11::send($serial_port, 'AK');
	}
	else
	{
		print redirect("$zone_base"."$zone".".html");
		# turn it on
		&ControlX10::CM17::send($serial_port, "A${zone}J");
		#&ControlX10::CM11::send($serial_port, "A${zone}");
		#&ControlX10::CM11::send($serial_port, 'AJ');
	}

	#system("$mh_comm >/dev/null 2>/dev/null &");

}

exit;
