Hackathon Write-Up and Code

Discussion created by debois on Jun 26, 2012
Latest reply on Jun 26, 2012 by debois

Team RoviSys (aka "3 Guys, a Girl, and a PI Server")


The RoviSys team consisted of Bryan DeBois, Xander Dumaine, Bandon Lewicki, and Farhanah Sheets.  We came to the Hackathon with an idea based on a need of our customers: leveraging PI Notifications to generate PI Event Frames.  We also wanted to build a compelling visualization of Event Frames using HTML5.  Since the Connected World Conference was all about connected devices, we simulated three types of devices to feed data into PI: a Network Router, an Office Security System, and a Truck Monitoring System.  We accomplished a lot in the approximately 36 hours we had for the competition, specifically:

  • We built a simulator (code-named "Lynx") that      could feed data from our three simulated devices into the PI System,      periodically triggering anomalies.
  • The heart of the system is "Cougar," a      program that registers for PI Notification events, and creates Event      Frames when Notifications fire.  The trigger value for the      Notification is recorded in the Event Frame, as well as other relevant      data.  When the trigger condition for the Notification is no longer      true, we close out the Event Frame, and log some final relevant data to      the Attributes (such as the Maximum and Average value of the tag.)
  • For the visualization, we built "Bobcat," an ASP.NET MVC 3 web service that calls into the AFSDK and converts the data to JSON.  Bobcat includes an HTML5 display that shows a real-time view of the PI data, with Event Frames overlaid.  It also includes a list of recent Event Frames, with detailed information provided.

Below is the architecture of the final system.  All purple squares were developed at the Hackathon.




The Bobcat HTML5 visualization, combining Event Frames data with PI data:




The code, as well as the AF export and PI tag config files, can be found here:


We'd like to thank OSIsoft for extending to us the invitation to participate and making us feel welcome and appreciated.  We'd also like to thank our fellow competitors; although we didn't get to chat much (with everyone so focused), we'll happily share an adult beverage with you if our paths cross again!