This post is a follow up to our recent article about low-cost electronics, it’s another quick report about our ongoing expedition into the world of interconnected things. In our previous report we identified our perfect low cost hardware for wireless communication. Now it was time to find out how we can put these modules and sensors together in a way that would allow designers to prototype distributed applications and services. We set ourselves a few goals for this sprint:
This is what we came up with …
PeeNode is a system we’ve set up in our office space. It indicates if the bathroom is currently occupied. The status of the toilet is visualized via laser. Yes, a real laser!
In order to be able to reuse the code and to build a simple platform that would allow us further experiments we set ourself a few design goals:
Meet node.js – A multipurpose toolkit for network applications
node.js is one of the current rising stars of the Open Source web community. It’s a framework that allows you to create scalable web applications in Javascript that can easily be extended by a whole range of contributed modules. Matthias is actually in love with it and might write another article on this topic.
Pusher – The glue for realtime applications
Using node.js enables you to use a bunch of great realtime frameworks – see socket.io for a rock-solid example. Nevertheless we decided to leverage a service called Pusher as our realtime platform. It is a pre-built and solid realtime service one can build upon. It takes advantage of the new Websocket API to open up an ongoing connection with web frontends. This programming model allows us to keep a persistent connection between interfaces and to trigger realtime events.
Mongodb – It’s like a database for human beings
As Javascript is the main weapon of choice and the consistent language from backend to frontend we decided to extend this design concept to the database. Mongodb is a NoSQL database that natively talks Javascript and seemed like a perfect fit for us.
Now that we have a setup that we can use to build further experiments we’ll keep on evolving the platform. Please let us know what you think about our findings so far – we’re always curious about having a chat. Last but not least we’d like to thank Max Williams from Pusher for the instant beta-support, Jean-Claude Wippler for creating the great JeeNode devices and providing the easy-to-use RF12 library and Alex of tinkerlog for helping us to fight our way through converting low level data-types like ints and bytes.