Skip to content

DevonEnergyHackathon2017/Stranger-Things

Repository files navigation

Stranger-Things

The ability to analyze data as it streams from its source to its destination is a key enabler for making better decisions faster. We have attempted Challenge #2 and have created a webapp that attempts to gamify the stimulation of a well. The goal is to score the highest and stay atop the leaderboard! The user's score is calculated in realtime by our streaming application architecture!

Client App

Mobile-first webapp, with no client-side dependencies. It is simple to use and easy to access.

Audience

The app's target audience is the Person In Charge (PIC) of the stimulation job. There would also be a full browser experience that could show more job info than the mobile version.

Winning

The goal is to manage the cost of the job, by controlling rate, key chemicals, and sand concentration. The realtime data is measured against the plan or design and a score is calculated everytime new data is received from the job site ~ 1 sec on average.

Architecture

We (re)stream, or playback, the realtime data from OSIsoft PI into Azure Event Hub. From there the data is picked up by Azure Stream Analytics where it can be transformed, enhanced, and analyzed. Machine Learning, storage in an Azure Data Lake, and other Azure toolsets are all available for data processing using this architecture! Once the data processing is complete, the data is pushed back to Azure Event Hub where it can be picked up by a client consumer - i.e. WebApp, SQL, or even OSIsoft PI!

Implementation

Feature Status
Streaming Data fully implemented
Streaming Analytics fully implemented
SAP Integration proof of concept
Thin Web Client fully implemented
User Scoring fully implemented
User Leaderboard design concept
Recommend Operational Changes future state
Write Back Results to PI future state

Tools

  • Angular
  • Highcharts
  • .NET Core 2.0 / .NET Standard
  • Azure Event Hub
  • Azure Storage
  • Serilog
  • Application Insights
  • Visual Studio 2017
  • Visual Studio Team Services
  • Slack

Dependencies

Build

Each part of the application stack needs to be build individually and they all work together to produce the product.

  • strange-piwebapi (get data from piwebapi)
    • open the solution in visual studio
    • nuget restore
    • build
  • EventPublisher.ConsoleApp (publish data from strange-piwebapi into Azure Event Hub)
    • open the solution in visual studio
    • nuget restore
    • build
  • Azure Event Hub (configure only, no source code)
  • Azure Stream Analytics (configure only, no source code)
  • EventHubAPI (web client service layer, websockets, etc)
    • open the solution in visual studio
    • nuget restore
    • build
  • collections (webapp)
> npm install
> npm intall -g @angular/cli
> ng build

Deploy

  • strange-piwebapi: runs as a client anywhere (Azure VM for Hackathon)
    • navigate to the /bin/Release/netcoreapp2.0
    • run dotnet strange-piwebapi.dll
  • EventPublisher.ConsoleApp: runs as a client anywhere (Azure VM for Hackathon)
    • navigate to the /bin/Release/netcoreapp2.0
    • run dotnet Hckthn.EventPublisher.ConsoleApp.dll
  • Azure Event Hub: its a cloud service... just let Microsft manage this one!
  • Azure Stream Analytics: oh, glorious cloud!
  • EventHubAPI: azure app service
    • enable 'websockets' on the Azure app service
    • navigate to the /bin/Release/netcoreapp2.0
    • run dotnet EventHubAPI.dll
  • collections: azure app service
    • node ./src/server/index.js

Team

  • Danny.Burrows - Monscierge
  • Don.Morrison - Devon Energy
  • Steve.Pankratz - Devon Energy
  • Jon.Slominski - White Star Petroleum
  • Devon Koetter-Mason - Devon Energy

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •