Home Automation with Android and small embedded systems

In this project many home automation features are linked together to give an insight on practical implementation for Home Automation services.
Many ideas find their root in a project carried out together with TASS, named AMIGO. Although not maintained for several years it serves as an Architecture pattern on which IoT applications can be build. For instance, it uses capability properties and verbs. Also interesting in this context is DLNA/Upnp for media devices.

In this project, a main server controls the Home Automation of supplied services. The server can create peer to peer connections for any attached device, implementing an HTTP server service. Protocols are mainly REST based.

As devices we implemented many USB controllers adding two abstraction layers, one for device virtualization and an application layer. This way it is easy to build a system with many various Home appliances. Android is used for controlling devices, but also Web interfaces are available. One nice feature  is incorporating cheap main voltage controllers, like Klikaan/Klikuit. These are controlled from a dedicated Arduino with RF433 possibilities. Of course other wireless protocols or hardware can be used. (See Techniques used)

Examples, for now, include:

  • Wireless Presenters
  • X10/RF433 Remote control
  • Klikaan/Klikuit and other ‘cheap’ power controllers (with Arduino) (Enabling e.g. garden lightning, day/night control)
  • TVControl (with RC5 control, Arduino, GHI/.NET hardware, NXP ARM-Cortex M3)
  • Light control, Philips AMBX control

Techniques used:

  • Languages used: Object Pascal, C, C++, Javascript
  • USB low level programming with LibusbK
  • Ambx framework
  • MVC, MVP, Rest services, XML, JSON
  • Object serialization and deserialization
  • Hardware protocols: I2C, RC5, RF433, RS232, USB HID
  • Win32 programming (events, async extentions, shared memory)