Tuesday, April 8, 2014

Power Solutions

I have a goal - to get my sensors to run on AA batteries for several months at a go. We'll see if I can achieve that.


Tuesday, March 25, 2014

First batch of arduino parts received [Updated]



I posted a few weeks ago about a recent purchase I made on eBay for raw parts that would allow me to make my own sensors for my home automation project. I received a few items already.


What is pictured is the following:

I'm waiting or the rest of the items including the larger Arduino board for the base station, wiring, and other sensors. I'll post when I receive them.

Update on 26 March

A couple more parts came today.


Sunday, March 9, 2014

Prepping for Arduino Sensors with Vera (Z-Wave) Controller

I posted about my recent purchase of the Vera Lite Z-Wave controller the other day in a rather ambiguous blog title. Since then, I've been researching ways in which I can build my own sensors that would ultimately be much cheaper than buying ready-made Z-Wave sensors.

I came across this website that details a project that allows you to build your own sensors using Arduino, and it plugs directly into a Vera. On average, the sensors should cost anywhere around USD 10, but I'll see what the actuals will be after I get all the pieces.

My initial plan is to get the following sensors built:

  1. Temperature for each room of the house (5 or 6)
  2. Humidity+Temperature for the two bathrooms (more on this later!)
  3. Barometric pressure+Temperature for outside (for fun)
I thought about trying to locate most of this stuff in Singapore but I figured I'd end up paying more than double of what I would if I sourced from China myself (and not to mention the time it would take for me to drive around and locate everything!)

The above linked project site was nice enough to link to individual products on eBay, so I decided to dust off my old eBay account and get purchasing.

Phase 1 cost me just about USD 120 (or about SGD 160) for the raw materials. This should get me a good 8 different sensors. Compare this to getting a Z-Wave-enabled Fibaro Universal sensor at GBP 36, plus the cost of the actual sensor chip - I think going this DIY route will save quite a bit of money. 

Future Plans
I have some thoughts of what to do in "Phase 2". Building on the base, I want to do the following:
  1. Automated bathroom exhaust fan (using the humidity sensor)
  2. Automated plant waterer (using the not-yet-purchased moisture sensor)
I'll report back when I get the devices. Work can't start until I move in April or so any way..

Monday, March 3, 2014

Putting the pieces together in anticipation...

It's been a while since I posted here. Primary reason, I had a daughter last March. (my free time disappeared literally overnight). Now that we're getting settled, it's time to get back into the home automation game.

In anticipation to our upcoming move to our first home we'll own, I am ramping up and have decided on the Z-Wave protocol as I don't want to built my own everything from scratch, but instead I'd like to get a baseline on which I can build on top of.

Will I still hack around with the Raspberry Pi? I think so. More on that later.

The Base

As mentioned above, I decided on Z-Wave. (Other competing standards include ZigBee). I ultimately went with the Vera Lite controller that I kind of bought out of the blue the other day at the IT Show here in Singapore (it was discounted by 10%, but it's still more expensive in Singapore than elsewhere because it is Singapore).

The kit included the controller (the Vera Lite), 3 Fibaro dimmer switches, and a motion detector. The dimmer switches will be used for connecting some of my downlights to the network (and I am sure I'll need more later).

Lighting

I bought 12 LIFX bulbs a while back and they arrived a couple of weeks ago.


No, these don't talk Z-Wave, but that will be a fun project for me, see below.

As mentioned earlier, I'll be using dimmer switches (or normal switches) for my other lighting. Even though these switches are expensive (if they are Fibaro), the advantage is, they are small and should fit inside of the light switch socket in the wall (I haven't confirmed this yet with our new condo, so fingers crossed).

My LIFX bulbs will be placed in both ceiling lights as well as lamps, but the final configuration isn't yet confirmed (I still have about 3 not yet taken as I am struggling to find rail lights that fit E27 Edison screw bulbs. Tall order.

LIFX is planning to release an SDK sometime this quarter, they claim. Once they do, the hacking begins - I want to build a Z-Wave interface for LIFX, most likely using a Raspberry Pi with Z-Wave shield (it's a shame that it's bloody expensive though - more than the Pi itself!).

Aircon and other IR Devices

This is where the fun begins. I was thinking of continuing my previous project of the "ThermostatPi" (which I coincidentally posted about a year ago yesterday), making use of a Raspberry Pi and a USB Toy 2, but following a Singapore Home Automation forum on Facebook the last few months, a very interesting product out of China has stoked my interest, the Broadcom RM2. It's a proprietary IR blaster (i.e. that doesn't connect with any other Home Automation standard like Z-Wave), but the reviews promise it "just works" - something I am quite keen on. They are rumored to release an SDK for it in Q1 of this year. And this is where another fun project will come about as I plan to write a RaspberryPi interface to it, much like I plan to do with LIFX as stated above. The goal here is to control everything from single app (switching between apps is too much trouble and certainly not consistent with the whole Home Automation thing).

Curtains

I'm still researching this and will post more about what plan to do. It looks as though the mechanisms to control curtains is quite costly, so this may need to take a back seat for a while.

Saturday, March 2, 2013

ThermostatPi - Controlling airconditioning with the Raspberry Pi and USB IR Toy - First Release!

Finally got around to getting the first release of my current project up!

Code: https://bitbucket.org/cdrum/thermostatpi

It's called ThermostatPi and it makes use of a Raspberry Pi, a USB IR Toy 2 (see my library here), your bargain basement DS18B20 One Wire Temperature Sensor, some Blu-Tack, and a few other miscellaneous wires and such.

In it's current form, it monitors temperature, and allows the user through a web browser control the wall mount airconditioner over IR. The code contains a command line tool to store presets. (In my case, my air conditioner is complicated, and I couldn't extract individual button clicks, but instead, the complete configuration of whatever is on the remote at the time.



Software

I wrote everything in PHP. I used Foundation for the web framework. I used RRDTool for charting.

Right now, there are two major screens. First is the current temperature with historic graph.

The next tab is there the controls are shown.


 You see to the right are the last 6 or so commands run. I use SQLite3 to store the history. (I plan to add settings to the db as well down the road).

Using Foundation's alerts, I show immediate feedback after button presses.

It also works on Mobile, thanks to Foundation.



I have a cron running to update the history charts each minute.

Lastly, I use dyndns so I can access it from my mobile phone. Makes it simple to turn on the air con when I'm on the way home!

Hardware

This is pretty self explanatory. I have the DS18B20 chip plugged into the GPIO pins.


And lastly, the IR Toy is positioned to point at the air con using Blu-Tack. Thank goodness for Blu-Tack!


 Next Up

I want to start building some intelligence into it. I want to set a temperature, and have it attempt to maintain that temperature. We'll see how that goes.

Friday, February 15, 2013

PHP Library for Receiving from/Transmitting to the USB IR Toy v2 Ready!

I am a fan of PHP. I am lazy, and I don't really want to learn Python. Since the IR Toy is a critical component for my next Raspberry Pi project, (of which the code would be primarily written in PHP), I needed a PHP library to interface with the IR Toy.

I found a good, simple to use Python library to interface with the IR Toy by Chris LeBlanc called PyIrToy. I decided to port it to PHP. Thanks, Chris!

My library is unoriginally called "phpIRToy".

I have open sourced my code under GPL v3. You can grab it from my bitbucket site (mercurial) at https://bitbucket.org/cdrum/phpirtoy/. Right now it's on version 1.0 (why not?)

In the repository, other than the License and Readme files, you'll see 2 main files. In the "lib" folder, the library itself sits. In the "test" folder, I have an example on how to receive a button press from an IR device, and then right away send (transmit) that same button click.

Enjoy! And let me know what you think!

Tuesday, February 12, 2013

Flashing the USB IR Toy v2

I finally had some time to work on my temperature project and the first step was to make sure my 2 USB IR Toys worked (they finally arrived about 2 weeks ago).

One seemed to work fine (meaning my Raspberry Pi recognised it and enabled the device /dev/ttyACM0), but the other wasn't being recognised. (In fact the LED was constantly on). I thought I got a faulty one.

I decided to try reflashing it.

Dangerous Prototypes had a howto on how to flash it, but I found it slightly confusing, so here are my instructions (that are for flashing the v2 board with a v22 firmware) on the Raspberry Pi:


Short pins PGC and PGD

First, need to short the PGC and PGD pins. This is simple enough - I just used simple jumper wire.


Get latest Firmware

Downloaded from http://code.google.com/p/dangerous-prototypes-open-hardware/downloads/detail?name=USBIRToy.package.v22.zip


wget http://dangerous-prototypes-open-hardware.googlecode.com/files/USBIRToy.package.v22.zip

unzip USBIRToy.package.v22.zip

Get latest IRToy-specific Firmware Update Utility

wget http://jesshaas.com/software/IRToy-fw_update.tar.gz

This apparently is a patched utility from the board maker at Diolan.

Compile

Note, I had to do all of us sudo - kept getting errors while running these as user pi.
export LIBS=-lusb
sudo apt-get install libusb-dev
sudo ./configure (I got g++ errors if I run as pi)
sudo make
cd ..

Flash!

sudo IRToy-fw_update/fw_update -e -w -v -m all -vid 0x04D8 -pid 0xFD0B -ix USBIRToy.package.v22/firmware/USBIRToy.v22.hex

Make sure your paths are correct in the above command. 

The successful output should look like:
U2IO flash erasing: DONE.
U2IO id programming: DONE.
U2IO eeprom programming: DONE.
U2IO flash programming: DONE.
U2IO id programming: DONE.
U2IO eeprom programming: DONE.
U2IO flash verifying: DONE.
U2IO id verifying: DONE.
U2IO eeprom verifying: DONE.
RESET Device
Operation successfully completed.

I was lucky. The IR Toy I thought was bad now seems to work fine!