Making things talk: PeeNodes, a JeeNode powered toilet laser

Written by
Matthias Wagler
02 Mai 2012

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 …

The result: PeeNode  – A JeeNode powered toilet laser

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!

Behind the scenes: Goals, insights and findings

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

Insight: Our favorite tools

      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 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.

      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 conecpt to the database. Mongodb is a NoSQL database that natively talks Javascript and seemed like a perfect fit for us.

To be continued …

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.

Team – We created this thing together

  • Martin (Chief of soldering department and JeeNode lover)
  • Matthias (Head of backend fumbling and Javascript weirdo)
  • Sven (Front end artist and pixel perfectionist)
  • Jonas (Musical meastro and retro-keyboard collector)