260 likes | 336 Views
Explore X10 technology for home automation using Perl and cheap devices to control electrical appliances and devices with ease. Learn about X10 signals, setting up serial ports, and using Perl modules for automation tasks.
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