260 likes | 332 Views
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
E N D
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 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”
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
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::CM11 device: "/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: m@perlmeister.com
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