Home Automation Project – Raspberry Pi Heating Controller – Part 1

pi-controlI’m going to build a home automation project which connects a Raspberry Pi to control my central heating. I wasn’t particularly happy ripping out all the existing controls, and wanted to piggyback onto them.. which helps if the Pi ever fails (I’ve still got the old controls to fall back on).

I also didn’t want to mess with the existing heating control board, so bought a duplicate unit (British Gas UP2) from eBay for about £12.. I can perfect the project on that, and install it when I’m ready.

This set of videos goes through each step of the project.. starting off with opening the control board, an overview of what I want to do, and testing out the changes.

Opening up the Control Panel

This was a bit tricky.. it wasn’t quite obvious which plastic clips needed pushing in to pull the board out.. if you were doing this on your actual panel (not an eBay-bought duplicate) then this video should help work out what you need to do to get into it without damaging anything.

 

Project Overview

Next up, I’ll quickly go over what I intend to do to piggyback onto the control board. There’s a project here which did exactly what I wanted to do. He’s not using a PiFace 2 like I intend to use, and he wants to be able to control the hot water as well, but everything else is the same.

 

Safety First – Masking off the High Voltage Area

In this second video, I’ll show how I’m masking off the high voltage area of the board to make it a bit safer when I’m testing things out. Obviously most of the time the board is off, but this helps keep things safer when it is on without the cover.

 

Identifying Solder Points

Luckily this blog gave me a good starting point, but it wasn’t clear where to get the status of the central heating.. I used a multimeter to find a spot which changed voltage when the system was on, and this diagram shows you what I found;

pi-heat-3

Soldering

Since I only needed 4 wires for this project (2 for the switch, and 2 for the system state), I took an old USB cable, cut the ends off, stripped the wires and soldered it to the board without much trouble.

pi-solder

Soldering Complete!

This shows the control board after the soldering has been completed.. it’s pretty simple soldering; the only tricky part was finding the points to connect to for the system state (on/off). I’ve stuck down some of the wires so that they don’t catch or get stuck underneath the control boards buttons.

 

Testing the Wiring

Now that I’ve done the soldering, I’m testing out the wiring.. seeing whether connecting the two wires for the switch turns the central heating on, and when it is on, whether we get voltage on the other two wires to indicate the system state.

 

Controlling from Software

I’ve now hooked it up to the Pi Face 2 board, which can be controlled with a few lines of Python to simulate a button press, and detect the state of the system.

With these basics in place, the rest of the control software can be written to do scheduling, bring in temperature readings, and allow the system to be controlled remotely.

Speed Camera Alerts with Google Maps

After looking a Waze (which has speed camera alerts) I still wanted to carry on using Google Maps, but wanted to get speed/safety camera alerts. I’d also been looking at TomTom Go for Android, which looks like a good app for road warriors, but also does 50 miles for free each month & has offline maps.. handy for getting out of a tight spot when there’s no 3G signal!

There’s actually another app from TomTom specifically for Speed Camera alerts.. it has an ‘overlay’ mode that puts a floating ‘widget’ over the top of *anything* .. so that might just be your homescreen, but can also be Google Maps.. neat!

 

nav4

‘Take Me Home’ shortcut for Google Maps

In the older version of Android I used to have a shortcut on my home sceen which would start up Google Maps in navigation mode & take me home. In the newer versions of Android, the ‘Shortcut’ feature seemed to disappear. I’ve tracked down this feature and this is where to find it;

  • Long-press on a free space on your home screen.. this allows you to add Apps | Widgets | Wallpapers
  • Choose ‘Widgets’
  • Scroll along and find ‘Directions’, then fill out the route information.. and that’s it!

Find the ‘Directions’ widget:

nav3

Enter the route info:

nav2

Done!

nav1

My Android App Essentials

After recently moving from an old Samsung Galaxy S3 to LG G3 (which I thought was a bargain at £189), I reviewed the list of apps I had previously installed & made sure they were still relevant to my new phone. I thought it’d be useful to list out the best ones so here’s what I installed (beyond the usual apps like Twitter, iPlayer);

  • ASTRO – For managing files
  • Avast Mobile Security – I use this on all my PCs so adding it to the phone makes sense
  • Barcode Scanner – Primarily for scanning QR Codes
  • BT SmartTalk – Make VoIP calls using my landline pricing structure
  • BT Wi-fi – Connect free to any BT wifi access points
  • Chrome – Better than the stock browser
  • Evernote – We have this on our family phones for keeping notes.. often taking pictures of letters before binning them
  • FreeOTP – An alternative to Google Authenticator
  • MightyText – Receive and send texts from my desktop PC
  • MX Player – Plays any media you can think of
  • National Rail – Train info
  • Network Scanner – Handy for tracking down the IP of devices on my home network
  • Nights Keeper – Set sound profiles based on day/time.. basically turns the sound off at night UPDATE: Replaced by Timerific
  • Photos – Google photos.. enabling easy backup to the cloud
  • Pixlr – Quick and easy image editing on the move
  • Podkicker – Download and listen to podcasts
  • Rewards – Take short surveys to get small amounts of cash to spend in the Google Play Store
  • SwiftKey Keyboard – Better than most stock keyboards
  • System Tuner – Handy for debugging apps
  • Timeriffic – When I was having variable success with Wifi Timer on my LG G3, I found this worked perfectly and could also replace Nights Keeper
  • tinyCam Monitor – Connect to various IP cameras
  • Twilight – Adjust the blue light emissions on the phone’s screen after it’s dark outside
  • Unified Remote – Helps control my HTPC if I need to use a mouse/keyboard
  • Wifi Analyser – Looks at what wifi access points are in range
  • Wifi Timer – Switch of wifi based on time of day.. i.e. switch it off at night + when I’m at work UPDATE: Replaced by Timerific due to problems getting it to work all the time on the LG G3
  • World Clock – Handy when I’m travelling; has a widget to put on my homescreen

Controlling Power Sockets using a Raspberry Pi

The subwoofer we had in our home cinema setup died a few weeks ago, so I did my research and found a nice replacement. The only thing I didn’t spot was the fact it never goes into standby if there’s no signal (unlike the old one). I tried using some eco plugs which turn off peripherals when the TV was turned off.. but it learns the TV remote signals, and completely turns the TV off as well.. meaning that you have to hit the power button twice to turn the TV back on; that doesn’t work well with the Harmony all-in-one remote we use.

What I decided to do was buy an Energenie socket, which can be switched on/off wirelessly from a Raspberry Pi. The kit comes with 2 sockets and a transmitter to attach to the GPIO headers on the Pi, and costs about £20.

In my subwoofer scenario I basically want it switched on when the TV is on, and off when the TV is off. The TV has a Chromecast plugged into it which is visible on my local network. If you’ve got a Smart TV on your network, maybe that’ll be visible in the same way. So when the TV/Chromecast appear on the network, we know to switch on the power socket.

energeniesockets

Here’s the small Energenie transmitter attached to the GPIO headers on my B+.. it’s pretty tiny and the case I’ve got still fits over the top. Notice the small hole where you can attach an aerial.. if you want extra range, then you’ll need to solder one on.. I added a 135mm wire, since the range I got out of it just wasn’t enough to get from the dining room cupboard to the living room.

energeniepi

To put this together, we can use the Raspberry Pi Network Spy code I wrote in my previous blog posts on element14;

Raspberry Pi Network Spy – Part 1 – Initial Setup + d/b Schema
Raspberry Pi Network Spy – Part 2 – D/b Setup + PHP for the scanner

All we need is a new PHP page that’ll call one of the functions we’ve already written.. we need a list of the MAC addresses that are currently visible on the network, then check whether the Chromecast is there. Once we know whether the TV/Chromecast is on or off, we then call a Python script that will turn the Energenie socket on/off.

Here’s the PHP;

arp-chromecast.php

The Python script could follow the Energenie example script, but there’s actually an even more simple Python package which I’ve used in this project. To install it I did the following;

sudo apt-get install python-pip
sudo pip install energenie

Then I wrote this helper Python script (which we’ll call from PHP) that accepts a couple of parameters, like this callenergenie.py [on|off] [switch_number];

callenergenie.py

from energenie import switch_on, switch_off
import sys

if len(sys.argv)==1:
print ‘Please specify arguments like this callenergenie.py [on|off] [switch_number]’
print ‘eg. callenergenie.py on 1’
print ‘eg. callenergenie.py off 2′
else:
on_or_off = sys.argv[1]
which_switch = int(sys.argv[2])

if (on_or_off==’on’):
print ‘Switching on ‘, which_switch
switch_on(which_switch)

if (on_or_off==’off’):
print ‘Switching off ‘, which_switch
switch_off(which_switch)

Now that we’ve written the PHP & Python, all we need to do is run the PHP every minute to scan the network and do the switching. We’ll do this using another cron job;

crontab -e

*/1 * * * * sudo /usr/bin/php /var/www/arp-chromecast.php

Increasing battery life on a Galaxy S3 with Android 4.3

The latest software update to the Samsung Galaxy S3 upped it to use Android 4.3, but included a whole bunch of Samsung bloatware. From a full charge, it was only taking 20 hours to run down flat, with it feeling slightly warm all the time. There was also a really annoying app that was requesting I sign into Facebook after each restart.

From what I can see, there are a bunch of things that you can disable to improve the battery life & get things back to normal. Here’s what I did;

Go to.. Settings > More > Application Manager > All

Open & disable each of these.. (obviously if you use a particular service, like Dropbox, leave it alone);

Amazon MP3
Backup
Dropbox
DropboxOOBE
Face Unlock
Game Hub
Music (the official Top 40 app)
Music Hub
O2 Space
PageBuddyNotiSvc
S Suggest
S Voice
Samsung Account
Samsung Apps
Samsung Backup Provider
Samsung Browser SyncAdapter
Samsung Calendar SyncAdapter
Samsung Cloud Data Relay
Samsung Cloud Quota
Samsung Contact SyncAdapter
Samsung Link
Samsung Push Service
Samsung SMemo SyncAdapter
Samsung Syncadapters
SamsungAppsUNA2
SNS
Video Hub

Foscam FI8910W Review, Unboxing, and tips

foscam Over the past 3 years I’ve had the Edimax IC-1310 working in my home without many problems. It’s great to be able to monitor the house when I’m away & know that I’ll not have any nasty surprises when I get back.. well at least from a living room point-of-view.

The Foscam range of webcams caught my eye, specifically the FI8910W which can use a wireless network connection, and is steerable. I like the fact that this gives it a lot of placement flexibility.. just needing a power source & off it goes. This newer model has an IR-Cut filter which gives better colour reproduction from it’s predecessor. I paid about £65 for the white version from the official UK-based Foscam distributor; there was a 10% coupon code floating around on the web, which brought the price lower than Amazon.

Here’s what’s in the box;

Initial setup of the camera is supposed to include you installing some Windows app to find the camera’s IP address on your network; my router gives me a list of connected devices, so I chose to forego the app and use the router’s info instead. I could log into the camera once I had it’s IP address, and configured it to connect over wifi, altering a few other settings as I went (disabling the DDNS service, since my Edimax camera is already updating dyndns.org with my externally visible IP).

As long as you’re used to fiddling with things like port forwarding you’ll have everything set up within 10-15 minutes; there’s not a lot to it & these days it’s handy to have a phone on 3G to check things are working correctly. I added a few extra user accounts, and had TinyCam Monitor for Android working in no time at all.. specifying the local network IP on the main settings, and the DynDNS address on the extra 3G settings page.

Being able to steer the camera is really handy.. when you have it pointing in the right direction, you can save it as a preset, both from your browser, or from an app like TinyCam Monitor. I’ve set mine to mostly look out of the back window, but can swivel it round to look into the kitchen & hallway.. even up to the skylights, etc.

The quality of the images is pretty decent, but at 640×480, they’re not exactly HD quality. Motion detection is a tad limited.. even compared to my 3yr old Edimax. There’s no way to specify zones for motion detection, and it only uploads 2 .jpeg files for each motion capture event (the Edimax can upload 5 second videos!).

Annoyingly, even if you turn off the IR LEDs, they’ll switch back on the next time the camera is rebooted.. which is a real pain when the camera is looking out of a window (you only see the bright glare of the LEDs shining back at you!). Hopefully that’ll get fixed in a future firmware update, but I’m not betting on it. Talking of firmware, make sure you upgrade it.. the latest versions include some (unspecified) security fixes.

Overall, I’m still impressed with the camera.. the price point is just right when you compare it with the features and annoying niggles.

For anyone who wants a direct URL to a jpeg snapshot from the camera, then this is the correct URL format;

http://your-external-ip:port/snapshot.jpg?user=whoever&pwd=letmein

That should be handy for anyone who has a HTML dashboard page, or a desktop widget that accepts webcam image URLs.

And here’s a sample image from the camera as it points out of my back window.. a window that needs a clean! And yes, that’s a sink plunger on the patio.. for some bizarre reason the kids enjoy playing with this more than the billion toys they’ve got ;)

Foscam FI8910W snapshot