Mascha van Oosterhout | User eXperience Consultant | eProseed NL
Nico van Benthem | Senior SOA & BPM Consultant | eProseed NL
A few weeks ago we attended the Internet of Things Hackathon organized by eProseed and Oracle in Utrecht, the Netherlands.The assignment was to create an IoT app using the Raspberry Pi and any of the sensors provided. We had 1.5 day to develop a working demo and show why our app is awesome and share great stories around the data. Quite a challenge!
With Thanasis Tegos and Luc Bors we formed the eProseed NL-team. Together we created
the Sesame-ST Parking Assistance Service
We decided to develop a solution for a parking problem everyone has encountered in his driving life:
Just to check: Did you ever…
- …have trouble finding a parking spot in a busy parking?
- …forget where you parked your car?
- …make use of a service which helps you park and saves you a lot of stress?
The full flash parking assistance service will solve your problems:
- For companies to offer to their visitors, customers and employees.
- To make peoples parking life more easy:
- Reservation of an empty parking spot on entrance
- Guidance to the spot with directions and a light
- Telling you where your car is after you’ve parked it
A day before the start of the Hackathon, I went to the 2nd hand store and found a 2-storey Sesame Street farmhouse which we could rebuild into an indoor parking. I also collected some Dinky Toys. I indicated several parking spots on each storey and we mounted the sensors, the LED’s and an LCD to the ‘indoor parking’.
In the meantime Thanasis and Nico worked on the code to get the parking assistance service working.
The first step was to get the current state of each parking space into central database. In our design each Raspberry Pi controls a set of parking spaces and for each parking space an Ultrasonic Ranger sensor detects whether or not the parking space is currently occupied. To do this, we created a REST service using the Oracle Service Bus and the Database Adapter to allow each Raspberry Pi clients to update the state of one or multiple parking spaces at once. A simple python script on the Raspberry Pi reads the current sensor values and sends the corresponding status updates in an endless loop. The updates take place every 60 seconds or any time a change of state is detected by the Raspberry Pi. This ensures robustness and timely updates without congesting the service bus with unnecessary updates.
While Nico and Thanasis were working very hard to get things done, I worked out the demo scenario.
The next step was to create an app that guides the user to an empty parking space assigned to the car when entering the Sesame-ST indoor parking
To be able to demo the scenario, I designed the UX for the parking assistance app and then Luc built the multi-platform (iOS and Android) app using Oracle Mobile Application Framework (MAF).
To make it all work together, Nico and Thanasis created a second REST service which, using the vehicle’s registration number, reserves an empty parking space in the database and returns the details of the reserved space like the floor number and space number. The reservation stays active until the parking space is occupied.
Since there was no time to implement the automatic registration plate recognition, the user has to enter the registration number of the car manually into the app. Next to showing the reservation details returned by the service, the app gives the user visual guidance on how to get to the reserved parking space by displaying a map.
Now with our basic functionality working, we could add features to improve the user experience. The first feature was to illuminate the parking space until the user locates it and parks the car, using a colored LED. By using different colors for different parking spaces which are close to each other, the color helps the user find the right parking space more easily. In order to make this feature work, we extended the update service to return the reserved status for each parking space including the registration number. In python, we added logic to turn on the LED for a parking space when the status is reserved, until the parking space is occupied.
We also wanted to help the user find the reserved parking space when returning to the car. The app was already able to guide the user to the reserved parking space based on the registration number, so we only needed to extend the logic of the reservation service to return to the same parking space when a registration number was entered for an active reservation. We also needed to extend to reservation to be active until the parking space is not occupied anymore after a short period of occupancy and added logic to illuminate the parking space again.
The last feature we could add was to show a simple personalized welcome text, on an LCD RGB Backlight, the moment the user arrives at the reserved parking space. This would not only help the user find the right parking space but also prevent others to accidentally park on the reserved space. Since we could only control a single LCD RGB Backlight on a single Raspberry Pi and there was no time left to setup a 2nd Raspberry Pi, we decided to display a nice welcome message at the entrance of the Sesame-ST indoor parking containing the license number. And after that, the hacking time was up.
Together with 5 other hackathon teams we did a demo of our application in 3 minutes. Want to see them all? Look at http://www.eproseed.com/iot/.
It took the judges half an hour to come to a verdict. Each app was evaluated based on the following criteria:
- Execution and Productizability– How fully developed and implemented is the solution? How much would it take to productize? Are there potential downstream add-ons to the entry?
- Enterprise Applicability– Judging heavily for strong, demonstrated use cases for the enterprise.
- User Experience– Is the entry engaging? Will users find value and want to use it? Is it a delight to use?
We were gladly surprised when the jury announced that our app was awarded the first price.
We didn’t expect that we would be able to achieve so much in so little time and at the same time have so much fun.