<?xml version="1.0" encoding="UTF-8"?>
<feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="en"
   >
  <title type="text">Temporal Anomaly</title>
  <subtitle type="text">Automating our house and other random stuff</subtitle>

  <updated>2012-05-20T14:40:18Z</updated>
  <generator uri="http://blogofile.com/">Blogofile</generator>

  <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog" />
  <id>http://www.temporalanomaly.com/blog/feed/atom/</id>
  <link rel="self" type="application/atom+xml" href="http://www.temporalanomaly.com/blog/feed/atom/" />
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Sumpod 3d Printer improvements]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/05/20/sumpod-3d-printer-improvements" />
    <id>http://www.temporalanomaly.com/blog/2012/05/20/sumpod-3d-printer-improvements</id>
    <updated>2012-05-20T12:56:19Z</updated>
    <published>2012-05-20T12:56:19Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <summary type="html"><![CDATA[Sumpod 3d Printer improvements]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/05/20/sumpod-3d-printer-improvements"><![CDATA[<p>My <a href="http://sumpod.com/">Sumpod</a> 3d printer now has several upgrades.  I've upgraded the
software to Marlin (Thanks to Stohn and Erik for the <a href="https://github.com/stohn/SUMPOD_Marlin">firmware</a>.)
This gives noticeable improvements in print quality and allows the
printer to be driven a bit quicker.</p>
<p>I've upgraded the hardware adding:</p>
<ul>
<li>
<p>an SD card reader (for printing without a computer),</p>
</li>
<li>
<p>an rotary encoder (knob) to control the printer and navigate the SD
   card, and</p>
</li>
<li>
<p>a speaker for feedback from the rotary encoder. (I'm planning
   to add beeps for error events in the firmware so it is more obvious
   when something goes wrong or when the printer is preventing me doing
   something stupid - like extruding when it is too cold.)</p>
</li>
</ul>
<p>This morning I printed these coins for my children:</p>
<p><a href="/blog/images/sumpod/20120520/gold-coin.jpg"><img alt="" src="/blog/images/sumpod/20120520/t/gold-coin.jpg" /></a></p>
<p><a href="/blog/images/sumpod/20120520/gold-skull.jpg"><img alt="" src="/blog/images/sumpod/20120520/t/gold-skull.jpg" /></a></p>
<p>They are very happy with them.  I uploaded the designs to
<a href="http://www.thingiverse.com/">Thingiverse</a> as <a href="http://www.thingiverse.com/thing:23369">thing 23369</a> and
<a href="http://www.thingiverse.com/thing:23374">thing 23374</a> respectively.</p>
<p>Most of my other prints have been things for the printer itself, such
as a small mount for the SD card reader and a
<a href="http://www.thingiverse.com/derivative:28957">spool holder</a>.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Making more things on my Sumpod 3d Printer]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/04/14/making-more-things-on-my-sumpod-3d-printer" />
    <id>http://www.temporalanomaly.com/blog/2012/04/14/making-more-things-on-my-sumpod-3d-printer</id>
    <updated>2012-04-14T20:19:50Z</updated>
    <published>2012-04-14T20:19:50Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <summary type="html"><![CDATA[Making more things on my Sumpod 3d Printer]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/04/14/making-more-things-on-my-sumpod-3d-printer"><![CDATA[<p>Now my <a href="http://sumpod.com/">Sumpod</a> 3d printer is working, I've been taking requests for things
to print.  Tracy designed these with inkscape and I did the rest:</p>
<p><a href="/blog/images/sumpod/20120414/cog-pendant.jpg"><img alt="" src="/blog/images/sumpod/20120414/t/cog-pendant.jpg" /></a></p>
<p><a href="/blog/images/sumpod/20120414/earth-pendant.jpg"><img alt="" src="/blog/images/sumpod/20120414/t/earth-pendant.jpg" /></a></p>
<p>Caleb asked for a blue snake. I did my best to design one:</p>
<p><a href="/blog/images/sumpod/20120414/snake.jpg"><img alt="" src="/blog/images/sumpod/20120414/t/snake.jpg" /></a></p>
<p>He loves it which is what matters but I think it needs more work -
both the design and the printing.  I did rather like watching it print
especially the hex in-fill:</p>
<p><a href="/blog/images/sumpod/20120414/snake-during.jpg"><img alt="" src="/blog/images/sumpod/20120414/t/snake-during.jpg" /></a></p>
<p>and it was good to see that the printer coped with the slight overhang
created by building up and out on the lowest layers.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Bed levelling my Sumpod 3d Printer]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/04/14/bed-levelling-my-sumpod-3d-printer" />
    <id>http://www.temporalanomaly.com/blog/2012/04/14/bed-levelling-my-sumpod-3d-printer</id>
    <updated>2012-04-14T14:02:37Z</updated>
    <published>2012-04-14T14:02:37Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <summary type="html"><![CDATA[Bed levelling my Sumpod 3d Printer]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/04/14/bed-levelling-my-sumpod-3d-printer"><![CDATA[<p>I initially used spheres of blutack to level the bed on my <a href="http://sumpod.com/">Sumpod</a>
3d printer.  This worked surprisingly well and was good enough to
start testing but wasn't very robust.</p>
<p>For something more robust, I followed
<a href="http://sumpod.jumpwiki.com/wiki/Bed_Leveling">Stohn's method</a>.  The components I used were:</p>
<ul>
<li>
<p><a href="http://www.ebay.co.uk/itm/150724908735">M5 Stainless Steel Countersunk Allen Screws</a> from ebay,</p>
</li>
<li>
<p><a href="http://www.ebay.co.uk/itm/370541729609">M5 captive pronged tee nuts</a> from ebay,</p>
</li>
<li>
<p><a href="http://www.amazon.co.uk/gp/product/B000QF7JTO?tag=temporalanoma-21">9.5x15.9mm springs</a> from a set on Amazon, and</p>
</li>
<li>
<p><a href="http://www.amazon.co.uk/gp/product/B000LFY8MU?tag=temporalanoma-21">washers</a> from a set on Amazon.</p>
</li>
</ul>
<p>For each corner in turn, I used a screw with a large washer (to spread
the force) through the platform without the bed in place to drive a
captive pronged nuts into the platform and then removed the screw again.</p>
<p>I then put the springs and bed in place and put the screws back in (using
smaller washers). I screwed it together leaving a bit of space to tighten
it during levelling.</p>
<p>I don't know how others are doing the actually levelling, but I used
replicatorg with X axis and Y axis homed then moved the Z axis until
it was less than .5mm from the bed.  I then attempted to slide a
business card under the nozzle; and tightened the closest screw until
the card wouldn't go under and then loosened it very slightly until
the business card just went under.  I then moved slowly towards
another corner. Every 10mm (or sooner if it looked too close), I tried
the business card and, if necessary, adjusted the screw (of the corner
I was heading towards).</p>
<p>I'd welcome comments about better processes for bed levelling.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Success with Sumpod 3d Printer]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/04/12/success-with-sumpod-3d-printer" />
    <id>http://www.temporalanomaly.com/blog/2012/04/12/success-with-sumpod-3d-printer</id>
    <updated>2012-04-12T22:23:04Z</updated>
    <published>2012-04-12T22:23:04Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <summary type="html"><![CDATA[Success with Sumpod 3d Printer]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/04/12/success-with-sumpod-3d-printer"><![CDATA[<p>I've never been so pleased to see a pink alligator!</p>
<p>Today I did exactly what I said I'd do in the previous blog
post. First, I took apart the hot end of my <a href="http://sumpod.com/">Sumpod</a> 3d printer to
clean it.  I'm not sure if Tracy approved but found a Brulee torch
(like <a href="http://www.amazon.co.uk/gp/product/B004RB86FY?tag=temporalanoma-21">this</a> one) made a perfect tool for cleaning the
nozzle.  I used it to burn off all the PLA from an earlier leak.  I
kept at it until the smoke stopped.  Although the smell wasn't as nice
as burning sugar, then end result was almost as satisfying as a Creme
Brulee.  I definitely recommend this to others who've got a dirty
nozzle.</p>
<p>Next, I put everything back together with a fresh piece of PTFE tube
(from <a href="http://www.ebay.co.uk/itm/PTFE-Tube-4-x-2mm-RepRap-3d-printers-Bowden-hot-end-1-75mm-filament-guide-/320877644451">ebay</a>).  This presented a small problem as my hot end has
a very slight misalignment between the PEEK/insulator and the nozzle.
(This is probably why I initially failed to insert the PTFE fully and
thus caused a leak.)  I'd got around this last time I reassembled the
hot end by shaving a <em>very tiny</em> amount of the tube with a pencil
sharpener.  This seemed to work but didn't lead to a successful print
so I thought I'd try something else this time.</p>
<p>So, I threaded the push fitting, the MDF holder, and the PEEK onto the
PTFE tube.  Then I pushed the PTFE into the nozzle making sure it went
in completely.  I then screwed the nozzle and PEEK together - this way
the PTFE is pushed in really tight.  Finally (with some care to push
the fitting down) I screwed the PEEK and push fitting together.  This
seemed to work better than any of my previous attempts where I screwed
everything together first and pushed the tube in last.  It seems a
more reliable procedure to ensure success than the obvious/natural (?)
way I'd been doing it before.</p>
<p>I said that I was planning to clean the filament as it entered the
extruder.  I did this but it was rather half-hearted effort and I
don't think it made much difference.</p>
<p>I printed the same 20mm x 20mm x 3mm block with solid in-fill that I
tried yesterday and it came out <em>much</em> better:</p>
<p><a href="/blog/images/sumpod/20120412/20x20x3-top.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/20x20x3-top.jpg" /></a></p>
<p><a href="/blog/images/sumpod/20120412/20x20x3-edge.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/20x20x3-edge.jpg" /></a></p>
<p>One corner is slightly less neat than the rest - the corner where the
layers start:</p>
<p><a href="/blog/images/sumpod/20120412/20x20x3-corner-1.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/20x20x3-corner-1.jpg" /></a> <a href="/blog/images/sumpod/20120412/20x20x3-corner-2.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/20x20x3-corner-2.jpg" /></a></p>
<p>This was quite a short print less than 30 minutes, but I was
optimistic enough that I'd beaten the jamming problems that I called
Richard Sum to thank him for this help and let him know I'd made good
progress.</p>
<p>This evening I tried a <a href="http://www.thingiverse.com/thing:13612">more complicated</a> (and more
useful) print.  This time I used the default skeinforge hexagonal
in-fill and the print took a bit less than an hour.  I watched
very nervously as it took shape:</p>
<p><a href="/blog/images/sumpod/20120412/mralligator-starting.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/mralligator-starting.jpg" /></a></p>
<p><a href="/blog/images/sumpod/20120412/mralligator-nearly-done.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/mralligator-nearly-done.jpg" /></a></p>
<p>I was very relieved when it finished (especially as the pink filament
was close to running out):</p>
<p><a href="/blog/images/sumpod/20120412/mralligator-done.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/mralligator-done.jpg" /></a></p>
<p>and I'm pleased with the result:</p>
<p><a href="/blog/images/sumpod/20120412/mralligator-1.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/mralligator-1.jpg" /></a></p>
<p><a href="/blog/images/sumpod/20120412/mralligator-2.jpg"><img alt="" src="/blog/images/sumpod/20120412/t/mralligator-2.jpg" /></a></p>
<p>Now I have to actually think about what I'm going to use
<a href="http://sumpod.com/">this printer</a> for.  I'm sure my lovely boys will have some
ideas.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[More troubleshooting of Sumpod 3d Printer]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/04/11/more-troubleshooting-of-sumpod-3d-printer" />
    <id>http://www.temporalanomaly.com/blog/2012/04/11/more-troubleshooting-of-sumpod-3d-printer</id>
    <updated>2012-04-11T22:15:09Z</updated>
    <published>2012-04-11T22:15:09Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <summary type="html"><![CDATA[More troubleshooting of Sumpod 3d Printer]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/04/11/more-troubleshooting-of-sumpod-3d-printer"><![CDATA[<p>Today, I spent a bit of time cleaning out the hot end of my <a href="http://sumpod.com/">Sumpod</a>
3d printer.  I put everything back together making sure I was really
pushing home the PTFE tube.  Unfortunately prints are still messed up
by intermittent jamming.</p>
<p>I wondered if perhaps the jamming was corresponding to the natural
temperature oscillations of the heating process.  I did several prints
at different temperatures (195'C, 200'C and 205'C) and videoed the
process with the temperature reading visible on the LCD. The good news
is that the best print occurred with the set point at 200'C which was
the temperature I was using. The bad news is that the intermittent
jamming occur-ed with all prints and the video showed that the jamming
wasn't directly related to the temperature variations.</p>
<p>The 200'C print started very well:</p>
<p><a href="/blog/images/sumpod/print-looking-really-good.jpg"><img alt="" src="/blog/images/sumpod/t/print-looking-really-good.jpg" /></a></p>
<p>but then on the third layer there is a trough where the filament jammed
temporarily:</p>
<p><a href="/blog/images/sumpod/jamming-left-gap-on-diagonal.jpg"><img alt="" src="/blog/images/sumpod/t/jamming-left-gap-on-diagonal.jpg" /></a></p>
<p>The intermittent jamming continued right up to the top layer but there were
still periods of good extrusion:</p>
<p><a href="/blog/images/sumpod/periodic-jamming-resulting-in-gaps.jpg"><img alt="" src="/blog/images/sumpod/t/periodic-jamming-resulting-in-gaps.jpg" /></a></p>
<p>While cleaning the hot end, I noticed that the Bowden tube was warped:</p>
<p><a href="/blog/images/sumpod/warped-tube.jpg"><img alt="" src="/blog/images/sumpod/t/warped-tube.jpg" /></a></p>
<p>I need to think about what caused this.</p>
<p>My next steps are:</p>
<p>1) replacing the Bowden tube with a fresh piece,</p>
<p>2) cleaning the hot end again to make sure there is no old filament around
   the interface between the nozzle and PTFE tube, and</p>
<p>3) Add a bit of lint-free cloth before the extruder to clean the filament.</p>
<p>On a more positive note, I attempted something like Stohn's bed
levelling <a href="http://sumpod.jumpwiki.com/wiki/Bed_Leveling">mechanism</a> which worked very well and was significantly
easier to control than the squashed blutack I was previously using.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Initial prints on Sumpod 3d Printer]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2012/03/31/initial-prints-on-sumpod-3d-printer" />
    <id>http://www.temporalanomaly.com/blog/2012/03/31/initial-prints-on-sumpod-3d-printer</id>
    <updated>2012-03-31T08:07:00Z</updated>
    <published>2012-03-31T08:07:00Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="sumpod" />
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <summary type="html"><![CDATA[Initial prints on Sumpod 3d Printer]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2012/03/31/initial-prints-on-sumpod-3d-printer"><![CDATA[<p>My <a href="http://sumpod.com/">Sumpod</a> 3d printer arrived a while ago but it has taken me this
long to paint (sand, paint again, sand again, ...) the MDF.  I
finished most of the build last weekend. Since then, I've been
attempting to calibrate it in any spare moment. After initial problems
with the extruder and with the X axis belt being too loose, it does
feel like I'm making progress. This print started quite well:</p>
<p><a href="/blog/images/sumpod/IMAG0304.jpg"><img alt="" src="/blog/images/sumpod/t/IMAG0304.jpg" /></a></p>
<p>and the bottom layer looks pretty good:</p>
<p><a href="/blog/images/sumpod/IMAG0310.jpg"><img alt="" src="/blog/images/sumpod/t/IMAG0310.jpg" /></a></p>
<p>but quality of the sides varies quite a bit:</p>
<p><a href="/blog/images/sumpod/IMAG0306.jpg"><img alt="" src="/blog/images/sumpod/t/IMAG0306.jpg" /></a>
<a href="/blog/images/sumpod/IMAG0305.jpg"><img alt="" src="/blog/images/sumpod/t/IMAG0305.jpg" /></a></p>
<p>and the top looks dreadful:</p>
<p><a href="/blog/images/sumpod/IMAG0307.jpg"><img alt="" src="/blog/images/sumpod/t/IMAG0307.jpg" /></a></p>
<p>so there is definitely some calibration to do.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Making gift tags with a Silhouette Cameo cutter]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2011/12/19/making-gift-tags-with-a-silhouette-cameo-cutter" />
    <id>http://www.temporalanomaly.com/blog/2011/12/19/making-gift-tags-with-a-silhouette-cameo-cutter</id>
    <updated>2011-12-19T19:07:00Z</updated>
    <published>2011-12-19T19:07:00Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="creations" />
    <category scheme="http://www.temporalanomaly.com/blog" term="cutter" />
    <summary type="html"><![CDATA[Making gift tags with a Silhouette Cameo cutter]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2011/12/19/making-gift-tags-with-a-silhouette-cameo-cutter"><![CDATA[<p>A month or so ago I bought Tracy a <a href="http://www.amazon.co.uk/Silhouette-Cameo-cutter-plotter/dp/B0064LI6UU?tag=temporalanoma-21">Silhouette Cameo</a> cutter as
an early Christmas present.  Today she made some 'Dad' gift tags for
my Christmas presents from my two lovely boys, so I thought I'd have a
go at making some tags for her presents too.  I think they came out
quite well considering it was pretty much my first attempt at using
inkscape and that we were using the <a href="http://gitorious.org/robocut">robocut</a> software rather than
the official windows-only software.</p>
<p><a href="/blog/images/snowmen.jpg"><img alt="Snowmen Gift Tags" src="/blog/images/t/snowmen.jpg" /></a></p>
<p><a href="/blog/images/baubles.jpg"><img alt="Baubles Gift Tags" src="/blog/images/t/baubles.jpg" /></a></p>
<p>While poking out snowmen eyes with a pointy stick, I remembered the
excellent (but tedious to make by hand) paper graphs that Nick O'Leary
wrote about a <a href="http://knolleary.net/2009/01/17/paper-graphs/">few</a> <a href="http://knolleary.net/2010/10/22/more-paper-graphs/">times</a>.  The cutter would be
great for making them.</p>
<p>The SVG files, <a href="/blog/images/snowmen.svg">snowmen.svg</a> and <a href="/blog/images/baubles.svg">baubles.svg</a>, are licensed under
a
<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[What can you tell about me just by looking at my keyboard?]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2011/06/28/what-can-you-tell-about-me-just-by-looking-at-my-keyboard-" />
    <id>http://www.temporalanomaly.com/blog/2011/06/28/what-can-you-tell-about-me-just-by-looking-at-my-keyboard-</id>
    <updated>2011-06-28T19:45:22Z</updated>
    <published>2011-06-28T19:45:22Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="fun" />
    <summary type="html"><![CDATA[What can you tell about me just by looking at my keyboard?]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2011/06/28/what-can-you-tell-about-me-just-by-looking-at-my-keyboard-"><![CDATA[<p>I recently read a blog post about people
<a href="http://mindyourdecisions.com/blog/2011/01/27/game-theory-and-probability-of-iphone-passwords/">"figuring out iphone unlock codes just by looking at marks on the screen"</a>
and it made me wonder about my work laptop keyboard.  It looks like
this (click for high res version):</p>
<p><a href="/blog/images/keyboard.jpg"><img alt="My Laptop Keyboard" src="/blog/images/t/keyboard.jpg" /></a></p>
<p>It was new when I got it but it is showing signs of age now.  How old
do you think it is?  What can you tell about me just by looking at my
keyboard?  What operating system do I use on my work laptop?  What
IDE/editor?  Anything else?  Polite answers in the comments please.</p>]]></content>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Home Automation Setup: May 2011]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2011/05/08/home-automation-setup:-may-2011" />
    <id>http://www.temporalanomaly.com/blog/2011/05/08/home-automation-setup:-may-2011</id>
    <updated>2011-05-08T20:20:07Z</updated>
    <published>2011-05-08T20:20:07Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="home automation" />
    <category scheme="http://www.temporalanomaly.com/blog" term="backend" />
    <category scheme="http://www.temporalanomaly.com/blog" term="xpl" />
    <summary type="html"><![CDATA[Home Automation Setup: May 2011]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2011/05/08/home-automation-setup:-may-2011"><![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>
  </entry>
  <entry>
    <author>
      <name>Beanz</name>
      <uri>http://www.temporalanomaly.com/blog</uri>
    </author>
    <title type="html"><![CDATA[Home Automation Protocols: MQTT]]></title>
    <link rel="alternate" type="text/html" href="http://www.temporalanomaly.com/blog/2011/05/02/home-automation-protocols:-mqtt" />
    <id>http://www.temporalanomaly.com/blog/2011/05/02/home-automation-protocols:-mqtt</id>
    <updated>2011-05-02T20:52:23Z</updated>
    <published>2011-05-02T20:52:23Z</published>
    <category scheme="http://www.temporalanomaly.com/blog" term="home automation" />
    <category scheme="http://www.temporalanomaly.com/blog" term="mqtt" />
    <category scheme="http://www.temporalanomaly.com/blog" term="protocols" />
    <summary type="html"><![CDATA[Home Automation Protocols: MQTT]]></summary>
    <content type="html" xml:base="http://www.temporalanomaly.com/blog/2011/05/02/home-automation-protocols:-mqtt"><![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>
  </entry>
</feed>

