Indigo: Home Automation on the Mac – Part 1
14 years after moving into the Automated Home we’re still using those X10 DIN rail modules in the loft. There’s still no status available and the signals simply don’t make it through sometimes.
But we’re well over a decade into the 21st Century and it’s time to move on. This means our trusty rackmount HomeVision has been shut down (and is for sale) and we’re looking for a new system to take over control of our house.
There are contemporary hardware controllers available but these can limit you to one or two technologies. We’re looking for something that’s as flexible as possible to give us lots of control options both now and in the future.
Out of the Blue – We’ve been watching Perceptive Automation develop its smart home software suite “Indigo” since v1.2 in 2003. A few weeks ago v6.0 was released and with it, built-in support for Z-Wave was added to the existing X10 and Insteon standards (here’s the full list of all the interface devices supported by Indigo).
It’s worth mentioning that although Insteon is now in the UK and Europe, Indigo currently only supports a couple of American interface devices. We’d love to see support for the Insteon Hub as it’s an Ethernet unit meaning (unlike the US only USB interfaces currently supported ) you can site it somewhere in your house that’s optimised for transmission – not just beside the Mac. For now we’re using an old CM12U connected straight into one of the Mac mini’s USB ports for X10 control.
In addition Indigo supports over 40 third party plugins meaning it can link to a huge variety of additional hardware. For example if you plugin an RFXCOM RFXtrx433 USB stick you’ll be able to control LightwaveRF, HomeEasy and multitude of other wireless systems.
If a plugin doesn’t exist to link to your hardware of choice, and you have the chops for it, then Perceptive Automation offer comprehensive documentation on their API and Plugin SDK. C-Bus or KNX anyone?
Most users seem to run Indigo on a Mac mini, they’re small, fast, efficient and in our experience super stable with OS X. If you don’t already have one you can pickup a core 2 duo machine on eBay for under £200. However if, like us you already have a mini that’s employed 24/7 in another role but has tons of spare capacity then your only outlay is the cost of the software.
The software is available in 2 versions. Indigo Lite (£78) has a 20 device limit and cannot use third-party plugins. You’ll almost certainly want the unrestricted Pro version (£156) but you can start with Lite and pay the difference to upgrade to Pro later on if you like. Here’s a detailed comparison chart of the differences between the two versions.
Setting Up - Indigo installs like any other Mac app. Once up and running your first task is to add all your home automation devices to the system.
Devices – Every item in your home automation system gets added to the Devices screen. That’s things like your X10 and Z-Wave dimmers and also things like plugins and timers. The screen provides an overview of the status of each device in your home and allows you to control it directly or change its settings.
Triggers – If you’d like an action to fire on an event then it goes in the Triggers section. An example is setting a variable each time the system detects a change in the external temperature reported from the Netatmo weather station plugin.
Triggers can be instigated from a variety of inputs including an incoming email, a X10 / Z-Wave signal, system event or plugin.
Schedules – Think of these as über smart programmable timer clocks. The example below turns off our upstairs hall lights 30 mins after dawn (sunrise + 30) each morning.
You can build logic rules into triggers and schedules using Indigo’s point and click Condition Editor or get stuck in with your own powerful AppleScript or Python Scripts (check out the excellent Python course at codecademy.com).
There’s plenty of sample code on the Perceptive Automation website and we have created a trigger that sends a push notification to our phone (using our Boxcar email address) based on the example below.
# Putting a variable’s data into the subject and body
theVar = indigo.variables
theSubject = “The value of %s” % (theVar.name)
theBody = “The value of %s is now %s” % (theVar.name, theVar.value)
indigo.server.sendEmailTo(“email@example.com”, subject=theSubject, body=theBody)
Timers and Pesters – One of the functions we used most with HomeVision was timers. These are especially useful when automating lighting based on movement sensor data. Indigo’s “Timers and Pesters” plugin adds this functionality, allowing you to define, start, stop, pause and resume timers in your logic. ’Pesters’ are mini timers that you can set to repeat multiple times – perhaps to remind you to complete a task.
Action Groups – There are often groups of actions that you’d like to call on again and again. Rather than create this list of action in each schedule or trigger You can define them once in the Action Groups screen and then use them often. This may be something as simple as a lighting scene or perhaps a script to email you a message.
Variables – You can use variables to store an integer or floating value – the temperature for example. You can also store boolean variables (True or False) which replaces our HomeVision ‘flags’ concept. You might want to set a variable ‘HouseOccupied’ or ‘GarageDoorOpen’ for example. Indigo has a built in “isDaylight” variable which gives a useful approximation of whether or not it’s dark outside based on your Latitude and Longitude.
Control Pages – Indigo’s built in web server provides a browser interface to your home. Several pages are automatically created for controlling your system including one suitably sized for mobile devices meaning your Android, Windows Phone or other mobile can always control the system too. Other pages allow you to fire any Actions as well as view and edit your Variables. There’s even an RSS feed of the current device, action group, and variable states.
In addition to these standard web pages, Indigo also includes a system for creating custom control screens. These are created in a click and drag style designer and can be used in a browser window or with the free companion iOS app Indigo Touch.
Within a few minutes we had CCTV images from our IP cameras along with control buttons and variable values appearing on our iPhone. There are some great examples of the control screens users have created in this thread on the Indigo forums.
Event Log – Every action and error is logged to the Indigo Event Log. There are different levels of logging and plugins can often be set to debug mode to produce even more detail when trying to diagnose an issue.
The Pro version of Indigo lets you run in Client / Server mode. This is an excellent feature and with simple port forwarding on your router (port 1176 for the remote client and port 8176 for the web interface) allows you to pull up the full Indigo App on your machine from anywhere, and program and control as if you were on your home machine. If you’d rather not mess with your router then Perceptive also offer a zero config path back to your home Indigo system called Prism Reflector that deals with dynamic IP’s too.
Up and Running – So for now all our X10 devices have been added and the Automated Home is up and running on Indigo. The setup process was pain free and we’re defiantly impressed with Indigo. Our schedules are starting to take shape and the system is pulling data from our Netatmo Weather Station to display outside and inside temperatures on our control pages.
What’s Next? – Over the coming weeks and months we’ll be looking at some of the features mentioned above in more detail and we’ll be covering more home automation hardware and software additions to our Indigo system. The first non-X10 modules we’re eyeing up to add are the Z-Wave Aeotec’s Z-Stick along with some Z-Wave motion detectors and garage door sensors. We’ll also be covering adding the RFXCOM and the Global Cache iTach IP2CC. Fun times at the Automated Home!