When looking at home automation solutions available in the market nowadays,
one of the most important and expected features is to be able to control your
home automation installation from anywhere in the world using a smartphone
app. A vendor of a low-cost home automation solution requested us to add such
a feature to their existing IP gateway product, which only allowed for users
to control their home automation system with their smartphone while they are
connected to their local network at home. We were asked to make it possible to
let the smartphone app connect to the IP gateway from anywhere in the world.
This vendor's IP gateway hard- and software was based on the Mbed platform, so
they needed a solution that could fit within Mbed.
First of all, there are a lot of ways to make a device in a local network
accessible from anywhere in the world: SSH tunneling, port forwarding with
dynamic DNS,... Since our client wanted an open-source, secure, low-cost and
easy to set up solution that he could host himself, we opted to go for
Pagekite. However, since Mbed does not support OpenSSL, Linux sockets or
libev, the existing libpagekite C library was not an option to start from. So
we started to implement a Mbed flavour of the library ourselves, and decided
to make it open-source