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:
- Build a minimalistic platform for ongoing IoT experiments
- Prototype interactions between people, things and software
- Solve a real world problem in our office with the help of this platform
- Learn along the way
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:
- Use JeeNode modules for simple wireless communication
- Allow realtime interactivity between products, sensors, native apps and web applications
- Allow rapid mobile prototyping with HTML5 front-ends
- Leverage the most interesting and exciting web frameworks in order to build a framework that’s actually fun to prototype with
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 intefaces and to trigger realtime events.
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.