Friday, December 04, 2009

HomeEasy Update - Dave's Bedroom Light Controller

Strap yourselves down, it's my biggest load of waffle ever....

There's been quite a bit of activity over on the HomeEasy pages on, and several people have mailed me to say that they have made progress with various HomeEasy related Arduino Projects.

Hi to David Edmunson, for posting his latest project for an alarm clock, (above) - nicely done - like the interface, clearly, unlike me - you can code in CSS (!) .

What am I up to?, and why have I been neglecting my blog?

Well, the day job is getting in the way again, but I do have *three* projects on the go that I will post updates for shortly - here's where I'm at:

BBSB RF Only Repeater

This is a really easy to build Arduino + TX + RX circuit that just does a dumb repeater job within our house - this is great as it now means that our BBSB messages get repeated all over the house and none of our devices miss a beat (mostly) - I will probably also extend this to repeat HomeEasy messages as well, as we now have a mixture of devices.

This is all built, and working just fine - I discovered that a couple of 15cm lengths of wire make far better antennas then expensive 433mhz stubby antennas purchased because they looked cool.

PIC Based BBSB 'Water Detector'

A couple of years ago, I came in from work one afternoon, only to find it was 'Raining' in our downstairs loo! - Our shower pump in the bathroom above had sprung a minor leak, and flooded the upstairs bathroom. Ever since then we've had a nifty little Velleman 'Water Alarm' wired up to a sensor under the bath where all the plumbing bits are. This works great, and makes a rude noise if the area under there gets wet.

(blurrycam pic , sorry)

This isnt very 2009 though, so it was high time it was empowered a bit. - a peeping alarm in an empty house is no use to anyone!

This little project is based around the PIC 12F675 microcontroller - which is less than £2 at Maplins, I ported the BBSB transmit code that works on the Arduino into the little PIC, resulting in a little 'module' or 'bug' that can send a BBSB ON or OFF code when an input changes status (high-low, low-high etc). I also built a little battery monitor into it so that it sends a signal every few days just to say 'Hi' to the house and confirm its still working! - I managed after a bit of fiddling to build this up with NO PCB, as the 8 pin chip makes a reasonable cowboy construction bed to solder the other components to ...yee-ha.

I dont have the PDF write up for this one done yet, but will post it with code etc as soon as I get around to it. - we also have a small battery drain problem currently Houston - or it has crashed, because it stopped calling in about a week after being installed. ahem! - so perhaps not quite ready for the primetime!

Yale Alarm Integration

This is more a not-even-half-baked-idea but appears to be a go-er.

We've had a Wireless Alarm for some time in our house, which works really well - I do however miss two things - 1) being able to arm/disarm it via the internet, and 2) being able to catch events from all the system's detectors around our house too and act on them.

Internet Alarm Arm/Disarm

The Yale protocol is not published anywhere, and so far my attempts to reverse engineer it have failed I'm assuming it's a code-rolling type system (like a car key fob, so unlikely to be easy to decode) - (I think Yale would also be happy about this too), but what is possible is to interface to the Alarm system via two of it's most commonly available components - a) the Keyfob Remote, and b) the Bell-box - both of which can be learned into the alarm system (even a 2nd bell-box) - The Bell Box itself can actually function as a stand-alone alarm controller on the cheaper Yale system , so in itself it's packed with circuitry and certainly knows if the alarm is ON or OFF.

I bought an extra bell-box from Ebay and learned it to our system, I binned the housing we can re-house it in a smaller box with the 'duino later), amputated the deafening siren (not needed!) and shorted the tamper switch closed (no thanks) - I was left with a little board that I could connect to the Arduino.

My prototype Arduino project monitors the status of the Alarm currently - this is possible because the 3 LED's on the Yale Alarm box have a 'flash' sequence that is different for arming, and dis-arming - by responding to these two different combinations of events, you can tell if the alarm was just armed, or disarmed - I will probably just send a HE or BBSB message via the Arduino when this happens, which will allow the rest of the house to respond to Arm/Disarm events - primarily enabling security schedules , and, more importantly, turning down the heating! -- This isnt really all that smart, as clearly if the Arduino powers-up it wont know whether it's On, or Off - some more probing around the circuit board for the bell-box unit may reveal more. There is definatley a pin somewhere for 'Siren going off' as well, so this should be not too hard to track down either.

As you might have worked out by now, the easy way to arm/disarm the Alarm using the Arduino interface is to connect some output pins from the trusty 'duino across the keyfob buttons for arm/disarm - again very nasty - but also very secure - provided you shut the remote in a box somewhere the entire unit can remain wireless with the Arduino onboard also - especially if you are using 433mhz messages to HomeEasy/BBSB when events occur. - I wouldnt recommend allowing the insecure protocols like this to actually 'do' stuff like disarm the alarm however, for obvious reasons - I will probably do this 'some other way' using cabling inside the house.

So - unfinished masterpiece currently, but perhaps more progress over Xmas on that one - if you have any ideas on this one, or circuit diagrams(!!!!) let me know - of if you just want to hack-along on this project, I'll set up a wiki or something.

Thats it for now.

Sunday, October 04, 2009

HomeEasy Meets Arduino - HomeEasy Automatic Protocol

After several late nights on this one, I've finally cracked it.
Thanks to Barnaby and Peter's postings on I've managed to build an Arduino sketch that will send On/Off signals to a HomeEasy HE302 socket via a little 433 mhz transmitter.

This code takes a HE device code (6 digits) and sends an on signal, then an Off signal.

Code is here, If you want to build this, you just need a little Arduino board, and the 433mhz transmitter I talk about in earlier posts.
Now, go forth and build my friends 8-)

Saturday, September 26, 2009

BBSB Meets Arduino (Part 3) Home Easy to BBSB Repeater

Thanks to some sample code found here, I've churned out a handly little HomeEasy to ByeByeStandby RF Repeater.
This little project will pick up selected HomeEasy Advanced Protocol devices (like the HE300 Remote and HE303 PIR) and translate them into any ByeByeStandby device code you want.
Thanks to Barnaby and Peter here, and several hacking types, here. You will need a similar 433mhz Transmitter and Receiver to my previous posts, as well as that little £12 Arduino board that you bought and havent used yet 8-)

Monday, September 21, 2009

Putting your Watts on the Web..

Several people have blogged about their solution to publishing their electricity usage online. Here's our solution: Using a CurrentCost Classic, a cool little Linksys NSLU2 (Unslung), and Pachube, the excellent cloud based sensor monitoring service.

Quite a few folks are activley monitoring using this hardware solution, but I think this solution gets the 'quick and dirty' award, as very little else is needed, the data is collected and posted using a little shell script, with no need for perl, ruby or other such stuff.
  • We got the older CurrentCost Classic as the serial data comes out a little slower (9600baud) than the newer, shiny CC128 model, which suited hooking it up to stuff that cant swallow the data rate of the newer model.
  • Get the CurrentCost USB cable as well, it has a USB/Serial converter built in , which you'll need unless you already have a separate one (CurrentCost serial port is 5v RS232, so hooking it up to a serial port directly will get you nothing or magic smoke 8-( )
  • Unsling your NSLU2 so you can telnet/SSH into it and run stuff. (see links above)
  • Hook your CurrentCost to the spare USB port on the NSLU2 (it should also work on a hub btw, but the device below may be different to mine.)
  • run dmesg and look for the device ID of the serial port that is detected - ours was /dev/ttyUSB0
  • Try this filthy script out - you'll need to edit it, to replace: YOUR_PACHUBE_API_KEY with your actual Key from your pachube account, and also your YOUR_FEED_ID in this file to get it to work. - I just have two integer values, one for watts, one for temp on this feed.
  • Two little scripts are provided get-watts , and get-temp which should just echo the data from the CurrentCost to the console, as well as update-pachube which does the biz to the pachube service.

Footnotes: You may need to do some ipkg install magic on the NSLU2, you need grep, sed, cut and curl I forget which ones are in the slugos already.

The NSLU2 is a great platform for this type of stuff, the power consumption is less than 3w according to our killawatt, with processing power to spare, for ..... more stuff in the near future 8-)


UPDATE: An abusive co-worker who is attempting to follow my vague and inaccurate posting has reminded me that there are two missing steps in this post:

  • You need to install some extra packages on your slug, I *think* these are:
  1. picocom - 1.4-1 - A minimal dumb-terminal emulation program. (you will want this to see what is happening on the com port from the current cost)
  2. libcurl - 7.19.5-1 (you need curl for the pachube posting)
  3. coreutils - 7.4-1 -(I think coreuils has cut in it, among other utilities)

(e.g # ipkg install picocom; ipkg install libcurl; ipkg install coreutils)

  • You need to install the PL2303 kernel module so the USB-To-Serial cable is recognised. (following worked for my official currentcost cable) - after doing this check with dmesg for the name of the serial port to point to for your data.

Further abusive comments welcome from anyone, if this is still not correct 8-/ - my apologies.

Friday, September 11, 2009

Hyper-V RDP Issues on Windows 2008? - Disable yer Large Send Offload.

Nasty one this - Hyper-V on Windows 2008 R2 just wouldnt give a stable network connection for remote desktop to Guests, and the host sometimes.

I spent hours searching for a solution on the net, fiddling with Netsh, MTU sizes, switches and NIC drivers, until I spotted this blog entry. Turn off the Large Send Offload setting on the NIC. POW Fixed. Thanks to Daniel Petri. No reboot required.

Friday, June 19, 2009

BBSB Meets Arduino (Part 2)

Ok, So a better BBSB Repeater project would be able to do everything the previous post refers to, AND be able to recieve BBSB codes and send them to the BBSB Controller - unfortunatley this requires some interrupt driven Arduino magic, which I havent been able to get working - so , as the king of unfinished masterpieces - here is an RF->Network only repeater version.

You need to connect your compatible RF Receiver to pin 4.

On my unit , component side -

pin 1 = 5v
pin 2 = GND
pin 3 = Antenna (or nothing!)
pin 4 = GND
pin 5 = GND
pin 6 = not connected
pin 7 = rx data out (arduino pin 4)
pin 8 = 5v

Updated documentation is er.. not written yet. 8-) - as always refer to the receiver datasheet before wiring things up 8-), and also note that I was unable to complete testing this because my BBSB controller is not connecting to the BBSB mothership tonight 8-(

Comments etc here please:


Sunday, June 14, 2009

BBSB meets Arduino (Part 1) - updated.

In the first of several posts, here's a nifty little project that may help if you have radio signal range issues with your ByeByeStandby (BBSB) Online Controller. We have lots of thick brick walls at home, and the controller cant send messages to all our sockets:

I have to admit, this work has been 90% google and 10% coding - there are already libraries for Arduino on the net that can transmit BBSB/Domia's radio protocol.

This project will re-transmit the 433.92mhz Domia/BBSB signals emitted by the BBSB Online controller v2 on your local network.

Build instructions are here, along with source code Arduino sketch here. See pdf for further details.

If you have comments or questions please post to the BBSB Forum here.

Further enhancements are in the works, stay tuned for the next part - a two-way repeater.

15/06/09: Updated to fix a bug already! - Device code support 1-16 (in theory , but untested)

Monday, May 18, 2009

iPeng for IPhone and SqueezeCenter

Do you like the idea of multiroom audio, Sonos or Squeezebox Duet?

(Image: )
Well, if you have one (or more) squeezebox players, and an iPod Touch/iPhone, how about iPeng?

This little £5.99 iPhone app by Coolio is actually more pretty than the Squeezebox Duet remote, and if you have a iPod touch or iPhone works really nicely over your WiFi connection - it even 'finds' your slimserver automatically and doesnt need setting up.

Nicely done Coolio.

Update: Squeezecenter on Synology CS407

Our music library is quite large, and is slowing down our Media Center PC as it lives on our home NAS. I just moved SlimCenter to our Synology CS407 NAS where our music lives for better performance.

If you want to get IRBlaster (see below) to work on the Linux/Synology version of SqueezeCenter, then there are a couple of spookily similar little tweaks required:

IRBlaster will give the 'unable to write file' message in the IR learning app (just as it does in Windows), to fix do this:

  1. Download and install the latest Synology firmware (we're running DSM 2.1-0844)
  2. Download and install the SqueezeCenter for Synology.
  3. Telnet/SSH to your Synology (after enabling Telnet/SSH in the web gui.)
  4. cd to /var/packages/SqueezeCenter/target/Plugins
  5. create a new folder there (mkdir IRBlaster) - note case
  6. grant world-write permissions to the folder (chmod 777 IRBlaster)
  7. Try the IRBlaster learning app again, and you should find it worked!

The CS407 isnt the fastest embedded Linux box, but SqueezeCenter runs just fine - when installing plug-ins and re-scanning the music library it does groan a little under the strain, and SqueezeCenter stopped a couple of times, but once scanned, it's working just cool.

Tuesday, May 05, 2009

Taming the Logitech Squeezebox - Controlling your amplifier!

Some time ago Logitech launched the excellent Squeezebox Duet multiroom capable audio system. Naturally, I bought one seeing as I was already very impressed with the Squeezebox 3.
Now, if you have dribbled over the Multiroom Sonos audio system, one of the things you can do with this system (and more expensive built-in systems), is start/stop and control music in any room where there is a player - for the guys at Logitech, they got so close to doing this, but with one exception - There is no amplifier onboard the Squeezebox 3 (The Boom device has a built-in amp of course) - In the GadgetMan's house there was nothing but silence from the Squeezebox in the dining room, because the Amplifier wasnt switched on - authough with the Squeezebox Duet controller, you have complete control over the player in another room, you still had to run in there and turn on the Amp.. GRRR.

Now it turns out that Logitech did think of this - the headphone jack on the back of the Squeezebox2 and Squeezebox3 doubles as an IR Sender port, but they didnt actually provide the entire solution, that honour goes to Felix Mueller for the IRBlaster plug-in for Squeezecenter.
We got this up and running in 2 minutes on our Squeezebox3, sadly the Duet headless-player, doesnt support being an IRBlaster, so a more innovative solution for that is required (Felix actually has a 'Power Switch' circuit for devices like this as well if you care to try.

Here's how we did it - with a couple of tricks to make it work because we probably didnt read the instructions, or used Windows instead of Linux 8-/
  1. Find a compatible IR Transmitter with a 3.5mm plug on it - we used that free one that you get with the Microsoft Media Center Remote Reciever, that you probably threw somewhere because you werent using a set-top-box - it plugs right in and works.
  2. Download the IRBlaster plug-in (its listed in Squeezecenter on the add-ins page)
  3. Download IRBlaster again from the site above (I had to unzip it to C:\Program Files\SqueezeCenter\server\Plugins
  4. Add your slimcenter 'user' as 'full control' on the C:\Program Files\SqueezeCenter\server\Plugins\IRBlaster folder (otherwise you wont be able to create IR Profiles
  5. Restart SlimCenter
  6. Go to the plug-in in the settings page, and start the IRLearning Wizard - from there you can teach your squeezebox the IR commands for your Amp - we used Power On/Off and Vol+/Vol-, which worked first time on our Denon amp.

Sonos, move over! (a bit, cos clearly you're better, obviously).

Sunday, March 01, 2009

New version of SleepTool with BBSB V2 Support

If you have one of those nifty ByeByeStandby online controllers, you may have upgraded it to the new V2 firmware, or just bought it with that on.

Here's a new version of my SleepTool system-tray utility, this version has BBSB V2 support, so you can now send your PC to sleep with a BBSB V2 controller.

As ever, please dont use this as a shining example of how to code in VB6, the code quality in here is shameful but functional 8-) - it also seems to work fine in Windows 7 - though you may need to download the setup kit for VB6 apps to get the required .ocx files etc.

Download SleepTool v1.0.27 Here - source code included.



Monday, January 05, 2009

Is this the Treos last stand?

Shiny newish htc s620 has arrived. Treos meet your ebay maker.

Sent from my Windows Mobile® phone.