Skip to content
greese edited this page Jan 25, 2013 · 6 revisions

Imaginary Home opens up all software aspects of home automation up to the device. Our objective is to make sure that you can control any devices with an API from any cloud service supporting open home automation in a secure manner.

Quick Start

Overview

A typical home automation system consists of three components:

  • A cloud service like http://meethue.com for Philips Hue light bulbs
  • A controller relay like the Hue hub
  • The devices such as Hue light bulbs

If we're lucky like we are with Philips Hue, the vendor opens up the API for controlling the devices so that we can write our own tools. A rich ecosystem is growing up around the Philips Hue light bulbs. Imaginary Home, for example, contains a Java API for interacting with your Philips Hue light bulbs.

In most cases, however, the cloud service is very proprietary as well as the communication channel between the controller relay and the cloud service. With Philips Hue, for example, the ecosystem tools work only so long as you are inside your house. To do anything remotely, you must go through the Philips Hue cloud service.

There are a number of problems with this approach.

First, if the http://meethue.com web site doesn't do something you want (like blinking the lights), you can't do it.

Second, you can control only your light bulbs via this site. If you want to control your thermostat, you go to the thermostat vendors web site. And so on. And so on.

Imaginary Home opens all of this up. Anyone who implements the REST APIs (Java haters -> no one even has to use the code in this project), can interact with your home automation devices. For example, someone might build "one cloud service to rule them all" on top of all of this. You can use that service to tie together all your devices. Or, let's say, several different people build different cloud services with different strengths. You can use all of them (with just a single controller relay) and they won't step over each other. You will also continue to be able to use the proprietary cloud services as well.

What does this mean for you?

  • If you want, you can write your own custom cloud service using the code here as a base
  • Or you can use someone else's cloud service based on this API
  • Or you can do both
  • You can add custom behavior into your controller relay since the code is open source
  • You can use a controller relay based on this API bundled into a device hub
  • You can use the Java APIs in this project to write your own client code to talk to any cloud service based on this api
  • You can use the Java APIs in this project to directly control your devices