Home Automation with Perl and X10
-
Upload
zorita-battle -
Category
Documents
-
view
15 -
download
0
description
Transcript of Home Automation with Perl and X10
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