<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>Temporal Anomaly</title>
    <link>http://www.temporalanomaly.com/blog</link>
    <description>Automating our house and other random stuff</description>
    <pubDate>Sun, 20 May 2012 14:40:17 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Home Automation Setup: May 2011</title>
      <link>http://www.temporalanomaly.com/blog/2011/05/08/home-automation-setup:-may-2011</link>
      <pubDate>Sun, 08 May 2011 20:20:07 BST</pubDate>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[backend]]></category>
      <category><![CDATA[xpl]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/05/08/home-automation-setup:-may-2011</guid>
      <description>Home Automation Setup: May 2011</description>
      <content:encoded><![CDATA[<p>I was planning to answer a question in a comment on previous post and
wanted to talk about the number of <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL</a> clients that I have
running.  Rather than just quoting the number, I thought I'd make a
post to put my response in context.</p>
<p>Most of my xPL components support the <a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_HBEAT"><code>hbeat</code></a> schema.  So I
can identify them by sending a <code>hbeat.request</code> message.  My perl
<code>xpl-sender</code> command can do this:</p>
<pre><code>bash$ xpl-sender --schema hbeat.request --wait 10
</code></pre>
<p>By default, the sender just sends the specified message and exits.
But, with the <code>--wait</code> parameter, it prepares to receive replies,
sends the message and waits the specified number of seconds for any
replies.  The output from the above command is a summary of each
received <code>hbeat.app</code> reply:</p>
<pre><code>xpl-stat/hbeat.app: bnz-apcups.apc -&gt; * 5/53556/192.168.32.1
xpl-stat/hbeat.app: bnz-blue.slave -&gt; * 5/51540/192.168.32.1
xpl-stat/hbeat.app: bnz-ccost.slave -&gt; * 5/58435/192.168.32.1
xpl-stat/hbeat.app: bnz-dmx.slave -&gt; * 5/44072/192.168.32.1
xpl-stat/hbeat.app: bnz-gpower.slave -&gt; * 5/59772/192.168.32.1
xpl-stat/hbeat.app: bnz-heyu.slave -&gt; * 5/56009/192.168.32.1
xpl-stat/hbeat.app: bnz-lcdproc.slave -&gt; * 5/41722/192.168.32.1
xpl-stat/hbeat.app: bnz-linux.slave -&gt; * 5/46917/192.168.32.1
xpl-stat/hbeat.app: bnz-lirc.slave -&gt; * 5/33992/192.168.32.1
xpl-stat/hbeat.app: bnz-mpd.slave -&gt; * 5/32798/192.168.32.1
xpl-stat/hbeat.app: bnz-ownet.slave -&gt; * 5/46631/192.168.32.1
xpl-stat/hbeat.app: bnz-rfxcomrx.slave -&gt; * 5/40448/192.168.32.1
xpl-stat/hbeat.app: bnz-rfxcomtx.slave -&gt; * 5/48635/192.168.32.1
xpl-stat/hbeat.app: bnz-sendsms.slave -&gt; * 5/47592/192.168.32.1
xpl-stat/hbeat.app: bnz-smart.slave -&gt; * 5/43472/192.168.32.1
xpl-stat/hbeat.app: bnz-udin.slave1 -&gt; * 5/50553/192.168.32.1
xpl-stat/hbeat.app: bnz-udin.slave2 -&gt; * 5/52187/192.168.32.1
xpl-stat/hbeat.app: bnz-wol.slave -&gt; * 5/33981/192.168.32.1
xpl-stat/hbeat.app: bnz-zenah.slave -&gt; * 5/39324/192.168.32.1
xpl-stat/hbeat.app: bnz-mythtv.vz -&gt; * 5/34473/192.168.32.6
xpl-stat/hbeat.app: bnz-smart.vz -&gt; * 5/34298/192.168.32.6
xpl-stat/hbeat.app: bnz-xosd.vz -&gt; * 5/34487/192.168.32.6
xpl-stat/hbeat.app: bnz-xvkbd.vz -&gt; * 5/49051/192.168.32.6
</code></pre>
<p>Each summary is of the form:</p>
<pre><code>message_type/schema: source-identifier -&gt; target interval/port/ip
</code></pre>
<p>and each source-identifier is of the form:</p>
<pre><code>vendorid-deviceid.instanceid
</code></pre>
<p>My vendor id (developer id) is <code>bnz</code>, the device id is typically the
type of the device being managed, and the instance id is typically the
hostname of the machine running the client.</p>
<p>There are two machines in the list <code>vz</code> (which is my main <a href="http://www.mythtv.org/">mythtv</a>
box) and <a href="http://en.wikipedia.org/wiki/Scorpio_(Blake&apos;s_7)"><code>slave</code></a> (which is the main home automation server).
(The observant may notice that there is also <code>apc</code> but that is
actually running on <code>slave</code> monitoring an <a href="http://www.amazon.co.uk/gp/product/B002EB1FNO?tag=temporalanoma-21">APC UPS</a> via USB but the
instance id is changed as a convinience in order to distinguish
between <code>slave</code> and the UPS as they both report power/battery
information.)  The clients on the <a href="http://www.mythtv.org/">mythtv</a> box are:</p>
<ul>
<li>
<p><code>xpl-mythtv</code> which reports the percentage utilisation of the video
  inputs/tuners,</p>
</li>
<li>
<p><code>xpl-smart</code> which reports disk temperatures so I can turn on fans to
  extract warm air from the server room,</p>
</li>
<li>
<p><code>xpl-xosd</code> which responds to <a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_OSD.BASIC"><code>osd.basic</code> schema</a> messages
  showing on-screen display text using <a href="http://libxosd.sf.net">xosd</a>, and</p>
</li>
<li>
<p><code>xpl-xvkbd</code> which sends fake key presses to the active window
  (probably a security risk even though the keys always go to
  mythfrontend).</p>
</li>
</ul>
<p>The clients on <code>slave</code> are:</p>
<ul>
<li>
<p><code>xpl-apcups</code> which reports status of my APC UPS and sends events if
  when the UPS switches between mains and battery and vice versa,</p>
</li>
<li>
<p><code>xpl-blue</code> which monitors for the presence of various bluetooth
  devices so that my house "knows" when different people are home,</p>
</li>
<li>
<p><code>xpl-ccost</code> which monitors my mains power usage (or at least it did
  until it got confusing when I started exporting power) and the solar
  power generated by the PV panels on my roof,</p>
</li>
<li>
<p><code>xpl-dmx</code> which sends commands to a
  <a href="http://www.amazon.co.uk/gp/product/9792347860?tag=temporalanoma-21">Milford Instruments DMX Transmitter</a> to control a
  <a href="http://www.pulsarlight.com/Products/LEDLighting/ChromaZone/tabid/57/Default.aspx">Pulsar ChromaZone 12 Controller</a> which in turn drives a
  number of <a href="http://www.pulsarlight.com/Products/LEDLighting/tabid/56/Default.aspx">ChromaRange</a> lamps,</p>
</li>
<li>
<p><code>xpl-gpower</code> which reports my power usage information into the
  <a href="http://code.google.com/apis/powermeter/">Google PowerMeter API</a>,</p>
</li>
<li>
<p><code>xpl-heyu</code> which uses the <a href="http://www.heyu.org/">heyu</a> X10 software control my mains
  appliances and lights,</p>
</li>
<li>
<p><code>xpl-jabber</code> which enables interaction via <a href="http://xmpp.org/">XMPP</a> instant messages
  (such as Google Talk),</p>
</li>
<li>
<p><code>xpl-lcdproc</code> which responds to <a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_OSD.BASIC"><code>osd.basic</code> schema</a>
  messages showing text on a <a href="http://www.mini-box.com/picoLCD-4x20-sideshow">picoLCD-4x20-slideshow</a> device
  using the [lcdproc][] protocol,</p>
</li>
<li>
<p><code>xpl-linux</code> which reports Linux battery status and events, system
  temperature, etc.,</p>
</li>
<li>
<p><code>xpl-lirc</code> which reports <a href="http://www.lirc.org/">LIRC</a> IR remote button presses (so that
  I can switch the kettle on or send wake-on-lan packets using a basic
  TV remote control),</p>
</li>
<li>
<p><code>xpl-mpd</code> which controls a <a href="http://musicpd.sf.net/">Music Player Daemon</a> to play music
  in several zones around the house,</p>
</li>
<li>
<p><code>xpl-ownet</code> which is an interface to an <a href="http://www.owfs.org/">OWFS Daemon</a> that
  reads from temperature/humidity sensors and writes to relay
  controllers on the one-wire network in my house,</p>
</li>
<li>
<p><code>xpl-rfxcomrx</code> which is an interface to an <a href="http://rfxcom.com/receivers.htm">RFXCOM RF Receiver</a>
  that reports RF messages received from various sensors, switches,
  etc.,</p>
</li>
<li>
<p><code>xpl-rfxcomtx</code> which sends RF messages via an
  <a href="http://www.rfxcom.com/transmitters.htm">RFXCOM RF Transmitter</a> to control X10, HomeEasy, etc. devices,</p>
</li>
<li>
<p><code>xpl-sendsms</code> which sends SMS messages via any service supported by
   the <a href="http://search.cpan.org/search?query=sms::send">SMS::Send Perl API</a> (I use the service from
   <a href="http://www.csoft.co.uk/">Connection Software</a>),</p>
</li>
<li>
<p><code>xpl-smart</code> which reports disk temperatures,</p>
</li>
<li>
<p>two instances of <code>xpl-udin</code> to control two
  <a href="http://www.audon.co.uk/udin.html">UDIN USB Relay Controllers</a> to momentarily pulse the open/close
  inputs of several blind and curtains,</p>
</li>
<li>
<p><code>xpl-wol</code> which sends wake-on-lan packets (using the <code>etherwake</code>
  command) to wake up devices that are shutdown in order to save power
  (such as my <a href="http://www.mythtv.org/">mythtv</a> box), and</p>
</li>
<li>
<p><code>zenah</code> which is the brains of my house - triggering actions based
  on timers and incoming xPL messages.</p>
</li>
</ul>
<p>I am also running several other clients that run in <code>stealth mode</code> -
that is only sending messages and not listening for or responding to
<code>hbeat.request</code> messages.  These "inputs" include:</p>
<ul>
<li>
<p>a web frontend,</p>
</li>
<li>
<p>an experimental daemon supporting the <a href="http://melloware.com/products/lightswitch/">lightswitch</a> API so that I
  can use existing Android (or iPhone) applications to control my
  house, and</p>
</li>
<li>
<p>some security-related inputs (that I wont be writing much about).</p>
</li>
</ul>
<p>I'm currently trying to refactor the code to separate out the
device-related code from the xPL code and to reduce the coupling
between the web interface and the <code>zenah</code> "brains".  This will
probably involve a couple re-write of the <code>zenah</code> component and the
web interface.</p>]]></content:encoded>
    </item>
    <item>
      <title>Home Automation Protocols: MQTT</title>
      <link>http://www.temporalanomaly.com/blog/2011/05/02/home-automation-protocols:-mqtt</link>
      <pubDate>Mon, 02 May 2011 20:52:23 BST</pubDate>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[mqtt]]></category>
      <category><![CDATA[protocols]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/05/02/home-automation-protocols:-mqtt</guid>
      <description>Home Automation Protocols: MQTT</description>
      <content:encoded><![CDATA[<p>In my previous post, I mentioned some of the issues I was experiencing
with my current choice of home automation protocol, <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL</a>.</p>
<p>The primary issue was the need to perform filtering for every message
on every client due to the use of broadcasts for messaging.  One way
to avoid this is to use a pub/sub messaging system instead.  A number
of people that I respect have been using the <a href="http://mqtt.org/">MQTT Protocol</a> so
I thought I'd take a better look at it.</p>
<p>I figured a good way to understand it would be to implement it.  I've
implemented several protocols from scratch without any documentation
so implementing MQTT from a well-written specification was simple
process.  The basic implementation took less than a week and resulted
in <a href="http://github.com/beanz/net-mqtt-perl">Net::MQTT</a> and <a href="http://github.com/beanz/anyevent-mqtt-perl">AnyEvent::MQTT</a> on CPAN.</p>
<p>The protocol is lightweight and flexible.  This is great.  It works
well in contexts where you are both publisher and subscriber because
you can design the simplest, minimal messaging format between
agents.</p>
<p>However, building communities that can write components that can
interoperate will require some more structure.  For example, using
<a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL</a>, I have a client that monitors messages using the
"<a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_SENSOR.BASIC">sensor.basic</a>" schema and creates/updates
<a href="http://www.mrtg.org/rrdtool/">round robin database</a> files for each sensor reading.  This works
for all xPL clients that support the "<a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_SENSOR.BASIC">sensor.basic</a>"
schema regardless of developer/platform/etc.  Another good example of
this kind of protocol layering is <a href="http://xmpp.org/xmpp-protocols/">XMPP</a> and the
<a href="http://xmpp.org/xmpp-protocols/xmpp-extensions/">XMPP Extension Protocols</a>.</p>
<p>Essentially what is required to make this work is an ontology - a
specification for topic usage and semantics.  I have no idea how
to produce such a suitable ontology but I plan to think about it
some more.  I'll probably draw ideas from various existing sources
such as <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Message_Schema">xPL Message Schema</a>, <a href="http://www.xapautomation.org/index.php?title=Schema">xAP Message Schema</a>, <a href="http://www.pachube.com/">Pachube</a>
feed definitions, etc.</p>
<p>If anyone has any ideas (is it a good idea, how to proceed, etc?) then
I'd love to hear about them.</p>]]></content:encoded>
    </item>
    <item>
      <title>Home Automation Protocols: xPL</title>
      <link>http://www.temporalanomaly.com/blog/2011/04/11/home-automation-protocols:-xpl</link>
      <pubDate>Mon, 11 Apr 2011 22:42:04 BST</pubDate>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[protocols]]></category>
      <category><![CDATA[xpl]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/04/11/home-automation-protocols:-xpl</guid>
      <description>Home Automation Protocols: xPL</description>
      <content:encoded><![CDATA[<p>I've been using the <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL Protocol</a> since 2005, prior to that I
was using Jabber (or <a href="http://xmpp.org/">XMPP</a> as it is known now).  As I'm thinking
about changing protocol, I thought I'd write a bit about <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL</a> and,
in later posts, something about the candidates to replace it.</p>
<p>The <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL Protocol</a> has three types of messages: commands
(<code>xpl-cmnd</code>), triggers (<code>xpl-trig</code>) and status (<code>xpl-stat</code>).  They
have the same simple format consisting of the message type, <em>common</em>
"header" fields, the schema type and schema-specific "body" fields.
For example:</p>
<pre><code>xpl-cmnd
{
hop=1
source=vendor-device.host
target=*
}
x10.basic
{
command=on
device=c3
}
</code></pre>
<p>xPL doesn't use a server as its "message bus" is simply UDP port 3865
on the local network broadcast address.  In order to avoid multiple
devices having to listen on the same port on the same broadcast
address, each host runs a hub that distributes messages to all local
xPL clients.  I think this is a poor solution to this problem.  It
introduces an unnecessary single point of failure (albeit one with
very simple-to-test behaviour).  To avoid this single point of
failure, my <a href="https://github.com/beanz/xpl-perl/">xPL clients</a> also support a hubless mode where
they simply set the <code>SO_REUSEADDR</code> socket option on the listen socket
so that all clients can coexist on the same port on the same broadcast
address.  However, if you need to interoperate with clients from other
developers then you'll need to use the standard hub model.</p>
<p>Using UDP broadcasts to avoid any (unnecessary) single points of
failure is a good idea.  However, I have more than 20 xPL clients on
my network and all clients process all messages they receive,
discarding most of them and responding to relatively few.  This means
that all of the clients have to wake up and consume CPU resource for
every single message.  (This is one of the issues that is prompting me
to re-evaluate my choice of protocol.)</p>
<p>I thought about avoiding this problem by combining several clients in
to one more complex client but this seems like a bad idea as it will
inevitably lead to more complexity and thus more complicated failure
cases.  (My <a href="https://github.com/beanz/xpl-perl/">xPL clients</a> are structured in such a way that
this is very easy to do and some users with lower-powered servers do
this.)</p>
<p>For me, the <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Message_Schema">xPL Message Schema</a> are what make the protocol work so
well.  Essentially, the schema define the fields to expect in the body
of an xPL message.  This means I can write a client for a
<a href="http://www.audon.co.uk/udin.html">UDIN USB Relay Controller</a> or a <a href="http://www.phaedrusltd.com/pages/html/viom.html">Phaedrus VIOM</a> that supports the
<a href="http://xplproject.org.uk/wiki/index.php?title=Schema_-_CONTROL.BASIC">control.basic schema</a> and someone else can write a client that uses
the same schema to control relays and it will happily interoperate
with my clients.  (In fact, I realised this advantage when I migrated
from using a VIOM to several more compact UDIN controllers.  I only
needed to change the names of the relays for open/close on my
blinds/curtains after each set of wires were migrated to the new
hardware.)</p>
<p>The schema, as described in the protocol documentation, support a type
of inheritance.  A message schema that inherits from another must
include all of the mandatory fields of the other, in the same order,
so clients can support the basic function even if they don't
understand the additional sub-schema fields.  However, since
optional vendor-specific fields are also allowed without inheritance
(giving a simple duck typing approach), the inheritance mechanism
doesn't really give much benefit.</p>
<p>Take <code>hbeat</code> messages, there are two types, <code>basic</code>:</p>
<pre><code>xpl-stat
{
hop=1
source=vendor-device.host
target=*
}
hbeat.basic
{
interval=5
}
</code></pre>
<p>and, inherited from <code>basic</code>, <code>app</code>:</p>
<pre><code>xpl-stat
{
hop=1
source=vendor-device.host
target=*
}
hbeat.app
{
interval=5
port=43438
remote-ip=198.51.100.2
}
</code></pre>
<p>Why do the messages need the <code>.basic</code> or <code>.app</code>?  So that a client
knows to expect the port and remote-ip fields?  Why does a client need
to know to expect them?  A client can just parse the message and if
the fields are present - i.e. no <code>}</code> following the <code>interval=5</code> line -
then it can treat the message like an <code>.app</code> message and like a
<code>.basic</code> message if not.  It is simply redundant.</p>
<p>The only obviously valid use of the <code>.suffix</code> is <code>.confirm</code> suffix but
this would probably be better implemented as a fourth message type
such as <code>xpl-ack</code> or <code>xpl-conf</code>.</p>
<p>The wildcard <code>target=*</code> line is also redundant since a lack of
explicit <code>target=vendor-device.host</code> could just as easily be used to
distinguish the wildcard case.</p>
<p>These superfluous elements mean that the "Lite on the wire, by design"
subtitle on the <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL Protocol</a> specification isn't really as
"lite" as it could be (and IMHO should be).</p>
<p>Another confusing aspect of the <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL Protocol</a> is the notion of a
device.  In the protocol spec, for instance in the
<a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document#Device_Groups">Device Groups</a> section, it is clear that the <code>target</code> field is
addressing an individual device - a controller for a single
curtain/drape.  This is fine in theory, but in practice, individual
devices are general addressed using fields in the <em>body</em>.  For
instance, <code>control.basic</code>, <code>remote.basic</code>, <code>sensor.basic</code>,
<code>x10.basic</code>, and <code>x10.security</code> use <code>device</code>, <code>homeasy.basic</code> uses the
combination of <code>address</code> and <code>unit</code>, <code>zwave.basic</code> uses <code>node</code>, etc.
This is because xPL clients are typically controllers/gateways for
several devices.  For instance, I have a 1-wire sensor/relay network
with dozens of devices attached to it but one xPL client opens the
1-wire USB interface and manages all of these devices based on the
<code>device</code> field in <code>control.basic</code> and <code>sensor.basic</code> messages.</p>
<p>The protocol would be simpler to use if addressing of devices was more
consistent.  In fact, devices (rather than clients) should be
first-class citizens on the "network".  That is, they should be
discoverable (like clients are today with <code>hbeat</code> requests) and
probably should be aliasable (so that they can be given memorable
names).</p>
<p>I like the <a href="http://xplproject.org.uk/wiki/index.php?title=XPL_Specification_Document">xPL Protocol</a>; it has been my protocol of choice for
more than 5 years and most of these issues are not a big deal.  The
broadcast message bus is simple (if you ignore hubs) and reliable but
the inefficiency of waking all clients on every message is starting to
become an issue for me.  So, in the next few posts, I'll write about
some of the alternatives I am considering.</p>]]></content:encoded>
    </item>
    <item>
      <title>Solving More X10 Problems</title>
      <link>http://www.temporalanomaly.com/blog/2011/04/09/solving-more-x10-problems</link>
      <pubDate>Sat, 09 Apr 2011 20:56:22 BST</pubDate>
      <category><![CDATA[x10]]></category>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[rfxcom]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/04/09/solving-more-x10-problems</guid>
      <description>Solving More X10 Problems</description>
      <content:encoded><![CDATA[<p>In the previous post, I described two of the three significant X10
problems we had when setting up our home automation system.  This
post will cover the third problem, latency.</p>
<p>Although all our lights have conventional switches (well, momentary
switches in conventional locations), we use a lot of <a href="http://www.amazon.co.uk/gp/product/B00131NWNW?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 RF Remotes</a>
and <a href="http://www.amazon.co.uk/gp/product/B000MC8OP4?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 Motion Sensors</a> to trigger lights and other devices.
Initially, we used a <a href="http://www.amazon.co.uk/gp/product/B0018D1YX0?tag=temporalanoma-21">TM13U RF Transceiver Module</a> that receives the
X10 RF signals and converts them in to X10 powerline signals.  If we
stopped here and let the powerline signals trigger the X10 devices
directly this solution would probably be okay.  However, we wanted
computer control so we have another level of indirection.  The
powerline signals are then received by the <a href="http://www.amazon.co.uk/gp/product/B000KB02S4?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 CM12U Transceiver</a>
and sent to the house computer.  The computer then figures out how to
react to this signal and, if the action involves an X10 device, sends
another signal back to the CM12U where it is sent on the powerline.</p>
<p>The problem with this setup is that the X10 powerline is slow, so converting
the (fast) RF signal to a slow X10 signal to get it to the computer is
not very smart.</p>
<p>Additionally, RF devices repeat their signals which in turn get
repeated on the powerline.  While the repeats are going on, the
computer, responding to the first received signal, is instructing the
X10 Transceiver to transmit a command on the powerline.  This results
in frequent <a href="http://jvde.us/x10/x10_collisions.htm">collisions</a> leading to noticeable delays (and X10
powerline signalling isn't fast to begin with).</p>
<p>So, we purchased a <a href="http://www.wgldesigns.com/w800.html">W800 X10 RF Receiver</a> and gave up on the
<a href="http://www.amazon.co.uk/gp/product/B0018D1YX0?tag=temporalanoma-21">TM13U</a>.  Using the W800 serial port
receiver, the X10 RF could be read directly by the house computer.
This avoids the delay and the collisions of the X10 powerline signals
for the trigger and any triggered X10 commands.</p>
<p>The <a href="http://www.wgldesigns.com/w800.html">W800</a> was a solid piece of kit and worked
very reliably.  However, in the end, I replaced it with an
<a href="http://rfxcom.com/receivers.htm">RFXCOM RF Receiver</a> as that was able to receive additional protocols.
I expect I'll rave about RFXCOM products in future posts.</p>]]></content:encoded>
    </item>
    <item>
      <title>Solving X10 Problems</title>
      <link>http://www.temporalanomaly.com/blog/2011/04/06/solving-x10-problems</link>
      <pubDate>Wed, 06 Apr 2011 20:58:22 BST</pubDate>
      <category><![CDATA[x10]]></category>
      <category><![CDATA[home automation]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/04/06/solving-x10-problems</guid>
      <description>Solving X10 Problems</description>
      <content:encoded><![CDATA[<p>I've written two posts about some of my favourite home automation
features and both happened to use X10.  So, I thought I should
probably mention the significant problems we had with X10 and how we
solved them.</p>
<p>We had three significant problems.  The first was noisy devices
preventing the X10 powerline signals reaching some parts of our house.</p>
<p>Initially, we attempted to resolve the noise problems by using
<a href="http://www.amazon.co.uk/gp/product/B0018D3JR4?tag=temporalanoma-21">X10 FM10 Plug in Filter Modules</a> or
<a href="http://www.amazon.co.uk/gp/product/B000MC8YI6?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 FD10 DIN-mounted Filter Modules</a>.  We still use them on a
number of appliances - things like TVs, fridges, laptop power
supplies, UPSs, etc.  They definitely help but there were still
sockets that didn't get any signal.  (We know because we used an
<a href="http://letsautomate.com/10948.cfm">X10 Signal Tester</a> to check the sockets.)</p>
<p>Eventually, I came across Jeff Volp's excellent explanation of X10
problems and ordered an <a href="http://jvde.us/xtb/xtb_overview.htm">XTB</a> signal booster.  This device takes the
X10 signal from the <a href="http://www.amazon.co.uk/gp/product/B000KB02S4?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 CM12U Transceiver</a> computer interface and
boosts it by a factor of 10.  This fixed our X10 powerline signal
problems completely.  We still occasionally plug in a new,
exceptionally noisy device that needs a filter but this is very
unusual.</p>
<p>The second problem was with X10 RF signals.  When the batteries in an
<a href="http://www.amazon.co.uk/gp/product/B000MC8OP4?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 Motion Sensor</a> run out, they often end up transmitting
excessively.  This effectively jams any RF signals (including my car
key buttons).  Unlike most of the other RF devices we use, these
devices don't report battery status so I've solved this problem by
using an <a href="http://www.amazon.co.uk/gp/product/B000WILI42?tag=temporalanoma-21" title="BC-700 Battery Charger">excellent charger</a>, good quality rechargeable batteries
and reminders to change the batteries every 6 months.</p>
<p>The third problem, with latency, is a bit more complicated so I'll
cover that in another post.</p>]]></content:encoded>
    </item>
    <item>
      <title>X10 Lighting</title>
      <link>http://www.temporalanomaly.com/blog/2011/04/05/x10-lighting</link>
      <pubDate>Tue, 05 Apr 2011 20:46:15 BST</pubDate>
      <category><![CDATA[x10]]></category>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[lighting]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/04/05/x10-lighting</guid>
      <description>X10 Lighting</description>
      <content:encoded><![CDATA[<p>Lighting is an important aspect of our automated home.  Most of our
lights are controlled via either <a href="http://www.amazon.co.uk/gp/product/B000KAZXQ6?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 DIN-mounted Lamp Modules</a> or
<a href="http://www.amazon.co.uk/gp/product/B000KB22K0?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 DIN-mounted Appliance Modules</a>.  (Some are RGB LED lamps but
I'll cover them in a later post.)</p>
<p>Although I am a morning person, I still need a little help waking up
in the morning.  My lovely children help a bit but being able to have
the lights gradually brighten to full brightness when it is time to
get up helps a <em>lot</em>, particularly in the winter.  It also means that
the children wake up at the same time every day, which in turn means
they tend to go to sleep pretty reliably in the evening.  In the event
that they wake up too early, they know it's too early as the lights
aren't on yet so generally don't wake us.</p>
<p>We also have <a href="http://www.amazon.co.uk/gp/product/B000MC8OP4?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 Motion Sensors</a> so can automatically trigger
lights in rooms with no natural light.  Our utility room, where we
change nappies, is a good example as this behaviour is particularly
useful when you have your hands full carrying a reluctant toddler.</p>
<p>The children rather like the low-level stick-on <a href="http://www.amazon.co.uk/gp/product/B00131NWNW?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 RF Remotes</a>
that enable them to turn on their lights (and I like the fact that
they don't have to climb on the furniture to reach the "normal"
switches).  (They also like having the remotes trigger wolf howls,
T-Rex roars and <a href="http://www.youtube.com/watch?v=ytc0U2WAz4s" title="Michael Rosen reading We&apos;re Going on a Bear Hunt">Michael Rosen</a> from the ceiling speakers.)</p>
<p>One disadvantage of the dimmable lights is that most dimmers have a
minimum rating.  The LD11 <a href="http://www.amazon.co.uk/gp/product/B000KAZXQ6?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 DIN-mounted Lamp Modules</a> that we use
require a minimum load of 60W.  This is a problem because it is
becoming increasingly difficult to buy bulbs that meet this
requirement.  At the moment, we typically use <a href="http://www.amazon.co.uk/gp/product/B003VS1SXG?tag=temporalanoma-21">Energy Saver GLS Lamps</a>
which look great and use just enough power to keep the dimmers
happy.</p>
<p>I'd be very interersted to know how others with X10 solve this problem
as I'd love a solution that used less power but which was still
dimmable and produced a pleasant bright light.</p>]]></content:encoded>
    </item>
    <item>
      <title>X10 Remote Kettle</title>
      <link>http://www.temporalanomaly.com/blog/2011/04/04/x10-remote-kettle</link>
      <pubDate>Mon, 04 Apr 2011 22:20:00 BST</pubDate>
      <category><![CDATA[x10]]></category>
      <category><![CDATA[home automation]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2011/04/04/x10-remote-kettle</guid>
      <description>X10 Remote Kettle</description>
      <content:encoded><![CDATA[<p>It has been a while since I wrote a blog entry so I thought I'd write
a few posts to describe the current state of our house (with respect
to home automation, not the washing up or the mess made by my two
lovely children).  I'll start with a few posts covering the most
useful features of our automated home.</p>
<p>The most important device we've automated is the kettle.  We "prime"
the kettle after making a cup of tea by filling it, switching it on
but turning it off at the mains (with an <a href="http://www.amazon.co.uk/gp/product/B000YXYJH8?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 Appliance module</a>).
We can then turn it on using either an <a href="http://www.amazon.co.uk/gp/product/B00131NWNW?tag=temporalanoma-21&amp;m=A2UN5I0HGBX2YJ">X10 RF Remote</a>, a web
interface, timers or via a number of other mechanisms.  This is a real
time saver.  I can "C-c k" from emacs and only go to the kitchen when
the kettle has boiled rather than going to switch it on and wait while
it boils.</p>
<p>Tracy says that this is just laziness.  I probably used to empty/load
the dishwasher while waiting for the kettle, so perhaps she is right.
She prefers the fact that you can hit a remote button by the front
door when you come home on a cold day, or from upstairs before you
come down in the morning, and have the kettle waiting when you get to
the kitchen.</p>
<p>The house computer also monitors the mains current and attempts to
turn the kettle off for you if it sees a drop in current usage
equivalent to the kettle usage.  At the moment, it's working off the
whole house current usage data so it doesn't always work but it still
often manages to recognize the change and switch off the kettle at the
main while you are filling the kettle.</p>]]></content:encoded>
    </item>
    <item>
      <title>X10 Heating</title>
      <link>http://www.temporalanomaly.com/blog/2005/11/06/x10-heating</link>
      <pubDate>Sun, 06 Nov 2005 19:00:00 GMT</pubDate>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[heating]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2005/11/06/x10-heating</guid>
      <description>X10 Heating</description>
      <content:encoded><![CDATA[<p>I've read all sorts of articles about how people have wired up the
heating in their homes to make them controllable. They all seemed
terribly complicated. We felt sure there should be an easier way.</p>
<p>When we got our boiler replaced, we asked the heating engineers to put
in an extra room thermostat under the stairs in the future node 0. (Of
course, there was nothing under there at that time and they thought we
were mad.) However, they did install it and so we had two thermostats,
either of which could "call for heat".</p>
<p>The plan for control is to turn down the thermostat that is in a
sensible position, so that it'll only call for heat if things go
horribly wrong. Then we're going to replace the other thermostat with
an <a href="http://www.letsautomate.com/10001.cfm">AD10 X10 din rail
switch</a>. When you take the
front off, the room stat has three terminals Neutral, Live, and
Switched-Live so it's a simple matter (<em>cough</em> I only blew the fuse on
the heating once!) of connecting these to the Live In, Neutral and
Live Out on the AD10.</p>
<p><a href="/blog/images/x10-heating.jpg"><img alt="X10 Heating" src="/blog/images/t/x10-heating.jpg" /></a></p>
<p>Our brief tests show that this works. Now we just need to persuade our
electrician that it's a good idea.</p>]]></content:encoded>
    </item>
    <item>
      <title>Sunshine</title>
      <link>http://www.temporalanomaly.com/blog/2005/11/04/sunshine</link>
      <pubDate>Fri, 04 Nov 2005 19:00:00 GMT</pubDate>
      <category><![CDATA[home automation]]></category>
      <category><![CDATA[lighting]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2005/11/04/sunshine</guid>
      <description>Sunshine</description>
      <content:encoded><![CDATA[<p>Finally, a fine day, so our decorator installed the
<a href="http://www.solalighting.co.uk/">Solatube</a>. I was entirely taken in by
the product literature the moment I read the slogan - "Stick it where
the sun don't shine!". Fortunately the tube entirely lives up to my
expectations.</p>
<p><a href="/blog/images/sunshine.jpg"><img alt="Sunshine" src="/blog/images/t/sunshine.jpg" /></a></p>
<p>It's still a little odd whenever I catch sight of the previously dingy
room out of the corner of my eye. As you can see there's still a bit
of work to be done before the en suite is ready, so I have a little
bit of time to get over it before that room is functional.</p>]]></content:encoded>
    </item>
    <item>
      <title>Jack O'Lantern</title>
      <link>http://www.temporalanomaly.com/blog/2005/10/29/jack-o'lantern</link>
      <pubDate>Sat, 29 Oct 2005 19:00:00 BST</pubDate>
      <category><![CDATA[home automation]]></category>
      <guid isPermaLink="true">http://www.temporalanomaly.com/blog/2005/10/29/jack-o'lantern</guid>
      <description>Jack O'Lantern</description>
      <content:encoded><![CDATA[<p>In preparation for Halloween on Monday (and so that we could serve
pumpkin soup to our guests) I carved up a pumpkin. We decided to try
installing an <a href="http://www.pulsarlight.com/ChromaMR16.htm">LED light</a>
in it and the result looked pretty good.</p>
<p><a href="/blog/images/pumpkin1.jpg"><img alt="Pumpkin 1" src="/blog/images/t/pumpkin1.jpg" /></a></p>
<p>(It looked even better when I remembered to wipe off the biro I'd used
to mark out the features. ;-) We used an X10 RF signal to trigger a
short chase effect and play an appropriate sound. That was even better
so I created a small <a href="/blog/images/pumpkin.avi">movie of the test</a>.</p>
<p>We waited impatiently until it finally got dark and we could install
it overlooking the driveway.</p>
<p><a href="/blog/images/pumpkin2.jpg"><img alt="Pumpkin 2" src="/blog/images/t/pumpkin2.jpg" /></a></p>
<p>I'm going to be most disappointed if we don't scare a few kids with it
on Monday.</p>]]></content:encoded>
    </item>
  </channel>
</rss>

