26
Home Automation with Perl and X10 Mike Schilli, Yahoo! 06/25/2007

Home Automation with Perl and X10 Mike Schilli, Yahoo! 06/25/2007

Embed Size (px)

Citation preview

Home Automation with Perl and X10

Mike Schilli, Yahoo!

06/25/2007

What’s X10?

• Sender sends signals over power lines

• Receiver switches electrical devices on/off

• Cheap Technology – Sender $10 – Receiver $10

What can you do with X10?

Examples include …

• Water your plants

• Reboot your cable modem

• Control any device via Gaim/Jabber

X10 Signal Flow

X10 CM11 Control Unit

• Serial plug connects to PC

• Power plug injects X10 signals into power line

• < $10 plus shipping on Ebay

• Don’t have a serial port? Buy a PCI card (ttyS4/5)

• Alternatively: CM17 (RF)

No Serial Port?

• PC: $10 PCI card– /dev/ttyS4

• Mac: $30 Keyspan 19HS– /dev/ttyS0

Receiver

• E.g. connected to your Cable Modem:

Protocol

• One four-bit house code (A-P)

• One or more four-bit unit code(s) (1-16)

• One four-bit command

• Example:“House Code K”, “Unit 9”, “Turn on”

How X10 transmits

How X10 transmits

Protocol

• 1110 Starting sequence

• Binary 1: Presence, Absence

• Binary 0: Absence, Presence

• Each signal sent twice

• Overall data transfer: 20 bits/sec

Setting up a serial port

• Init serial port:use Device::SerialPort;

my $serial = Device::SerialPort->new(

“/dev/ttyS0”, undef);

$serial->baudrate(4800);

• Send command:use ControlX10::CM11;

ControlX10::CM11::send($serial,

$house_code . $unit_code);

ControlX10::CM11::send($serial,

$house_code . “J”); # J=ON K=OFF

Receivers

• Lamp Module:– Triac Solid State– On/Off/Dimming– No Appliances or electronic devices

• Appliance Module:– Relay switches On/Off– Maintains last state during power outages

Example 1: Lights on/off with Gaim

• Net::Jabber

Example 1: Lights on/off with Gaim

• A Jabber listener performs X10::CM11 commands:

Example 2: X10 Console

• YUI components for ajaxed web console

• Reboot routers, print servers, DSL modem

Example 3: Water your Plants

• Aquarium Pump in Water container

• Switched on/off by X10

• Host checks weather report (Weather::Com) to determine amount of water

• Secured by external timer

Video Demo

X10::Home

use X10::Home;

my $x10->X10::Home->new();

# Address services by name

$x10->send("bedroom_lights", "on");

# Also remembers status

X10::Home

#x10.conf sample file

module: ControlX10::CM11device: "/dev/ttyS0“receivers: - name: office_lights code: K10 desc: Office Back Lights

- name: water code: K11 desc: Plant Sprinkler

Problems with X10

• No security on the X10 level

• No feedback with cheap units

• Signals get lost

• Power outages might affect outcome

• Two senders: Collisions

• Slow (1 sec/command)

Precautions

• Use Fail Safe strategies

• Limit potential damage

• Consider additional autonomous devices like digital timers

Q&A

Questions?

Thanks!

Contact: [email protected]

References

• X10 YUI Console http://www.linux-magazin.de/heft_abo/ausgaben/2007/04/heimschaltwarte

• http://www.linux-magazine.com/issue/50/Perl_Building_a_Jabber_Bot.pdf

• ftp://ftp.x10.com/pub/manuals• http://misterhouse.net• Moshe Bar, “Home Automation with Perl”, TPJ,

02/2003

References (continued)

http://forums.cabling-design.com/X10-and-Linux-article12453--49.htm