The current office we’re working in at 9e has an annoying hindrance: The door opener is located a couple of steps away from every office, so everytime someone would ring the door someone had to interrupt his work to walk to the door opener. If you do that often enough you’ll be getting inventive.
During our hackathons, some of us took an arduino board and build a simple webserver. Upon each GET request, the door would open. Unfortunately, this was rather a first estimate and couldn’t be used productively. The poor man’s version of this was an ethernet controlled plugboard. I just sticked an USB charger into one of the sockets and connected the +5V to the relay. Now we were able to at least open the door via the plugboard webinterface.
We later refined that arduino idea: In a second try, we took a thin client and wrote a rails application that would just use the arduino as an I/O interface to trigger the relays that simulated pushing the door opener button. Clients would communicate via web sockets now.
Unfortunately, the rails application often stopped working and took quite a moment to actually open the door. There was a remarkable delay between sending a client’s request to open the door and the door actually opening. Out of curiosity (because I was exploring the possibilities of using Qt for web services), I replaced the server component with a Qt app that ran on the thin client, which was performing stable for weeks and still is blazingly fast: The door appears to open instantly.
The next improvement was replacing the awkward combination of a thin client and the arduino board with an Olimex OLinuXino A20. Apart from reducing power consumption and size, we could now connect the relay directly to the GPIO of the Olimex board. Also, everything is now powered by a single USB charger. On the client side, we have written Qt and Swift clients for all Android and iOS devices.
Since this is also a learning experience for us figuring out how we can develop rock-solid apps on embedded devices, we are keen on sharing all the source code with you as free software. Get your copy here and let us know if you found it useful (or not, in any case :): https://github.com/cybercatalyst/dooropener