Connected World Magazine hosted the M2M App Challenge this summer from June 7-9 in Santa Clara, California. This was very lucky for us at DST Controls, as we are only about an hour away. All of our PI System developers were up for the challenge, so we entered and looked forward to the fun!
A little background about M2M App Challenge. Each team had 36 hours to develop an application that used one or more technologies from five partners. The selection was OSIsoft, Aeris Communcations, Esri, ILS Technology, and ioBridge. The U.S. Department of energy also provided us with information on how to access thousands of open data sets from the U.S. Government. The rules were pretty simple. Start an application from scratch at on Friday 9:00 p.m. and be ready for judging the following Sunday at 10:00 a.m. I think there was a one hour break in there. Like we need only an hour of rest. Food and drinks, mostly of the quick energy variety, were provided to keep us fueled.
Our team consisted of five DST’ers, Benny Bray, Andrew Pong, Justin Bagley, Roozbeh Nakhaee, and me. We are all PI programmers, so we naturally selected OSIsoft’s platform, but not wanting to just go with what we knew, we also planned on using Esri’s mapping and GIS technology.
Our concept was to create an application that we called SmartCity. This app would pull data in from a PI System and visualize information associated with a city infrastructure. Things like utilities, traffic, weather, and demographic would be combined to provide a view of a city to help people better understand how their communities behave. Our inspiration was from SimCity, but instead of watching a simulation, we intended to use real data and have a playback feature. A user could pick any time range, press play, and watch the city come to life. We also wanted to include a live view, where real time information is displayed and objects animated.
Since we had five developers, part of the challenge for us was to figure out how to design, split work, and create a working application in a very short time. We all had to learn new things. It was great to see everyone focused so intently for a short time on a single purpose. I was surprised with what we were able to accomplish.
Three of us worked on the back-end of the system. This involved getting a PI System up and running, creating a cloud base web api (using Micrsoft’s Azure cloud platform) that would allow our application to access AF and PI data directly, and populating the system with data from open data sets provided by the U.S. Government. We also created simulation data for information that we did not have access to, such as utilities.
An interesting twist that OSIsoft provided, was a live feed of a car’s data as it drove around the Bay Area. This data was collected and stored on our PI Server. In our application the car data represented traffic information.
The other two team members focused on using Esri .Net SDK to create a map and overlay objects which represented various aspects of the city. The last goal was to add animation and playback.
We didn’t just want to use the PI System to store our real-time time series data, but also took advantage of AF to describe our city’s asset. Because of time limitations, we had to settle on a few asset types. The first one we picked was weather stations, with actual data and locations pulled from the National Oceanic and Atmospheric Administration, also known as NOAA. NOAA National Weather Service is pretty much the primary source of all weather information for the US. The data is freely available to anyone, so we grabbed about a 1000 weather stations with a year’s worth of data and imported it into our PI System.
The other two assets types, were pipe lines, and vehicles. For all the assets we stored geolocation data to enable us to display objects on the map. The application used our API to get asset information and the Esri’s API for the map. As the user zoomed in and out and panned, we queried the PI system to get all assets within set radius, like 10 miles. Current values were shown as animation features, like changing colors based on temperature or line pressure. If the user picked a date range in the past, then a play button was presented and the user could watch values change over that period. We also provided a slider bar so the user could move back and forth over the time range.
We were able to meet all our goals and showed the judges a working system!
Here are some screen shots:
What was the experience like?
This was the first time any of us had participated in a hackathon. It was long, hard, and at times seemed impossible. I would never do it again. Just kidding, it was actually the opposite in all aspects. Time was our enemy; we just didn’t have enough. Sleep was also an enemy; we didn’t have enough. Red Bulls, coffee, and other power drinks were our friends; we had plenty. Support from OSIsoft and Esri staff were huge friends.
The line I gave upper management is that this would be a great team building event. It is a frequently over-used term, so I try to avoid saying stuff like that; but I have to admit, once you have programmed side-by-side with a few people over two days; you get to know each other. We learned how to work together and manage our time. After it was over we felt pretty proud of what we had done, and each of us did a part of the application, regardless of skills or ability.
Even though I kept telling myself that it does not matter if we win or not, I still wanted to win! I guess it is just that competitive spirit in me. We placed 2nd in both OSIsoft and Esri platforms, which is pretty respectable and even won $3,000. Looking back I think that was a great accomplishment, and am over not taking first. What really matters most to me was the experience. We learned so much about working together, using new technologies, and just having fun. Even though we spend many of our normal working days programming; this was nothing like that. It was a blast and I would do it again.
Here is the team:
Top to Bottom, Left to Right: Roozbeh Nakhaee, Justin Bagley, Benny Bray, Andrew Pong, Lonnie Bowling
Roozbeh: That is not a good taste in my mouth, Justin: Let’s step outside, Benny: Can a person be any cooler, Andrew: This is my best tough look, Lonnie: Time to sleep, must sleep.
Here is a video of me summarizing the project.
That is a wrap, I'm looking forward to the next one!