Salt Energy - Proof of Concept - OPC UA Client Server Challenge

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Challenge Objectives
  • Setup nodejs based OPC UA Server
  • HTML5 Client

Project Background

Salt Energy OPC UA aims to setup a OPC UA Server that collects and stores performance data.  This Server will acquire readings from the system performance subsystem or another OPC UA Server reading.  The OPC UA Server will be configured to read system process data or an external OPC UA Server value.  This data will be stored with a time stamp in an internal database.  The OPC UA Server will provide an DA (Data Access) interface for current values and an HA (Historical value) Interface to provide access to the stored historical data.  The Client will be an OPC UA Client that visualizes it data in an HTML dashboard that can be configured to show a subset of the tags on the OPC UA Server.  Selecting an item on the dashboard will show a historic plot of the data for that reading.

Succesful implementation of the Proof of Concept can bring more projects from this client.

Technology Stack
  • OPC UA (https://opcfoundation.org/about/opc-technologies/opc-ua/)
  • Nodejs (https://nodejs.org/en/)
  • NodeOPCUA (http://node-opcua.github.io/)
  • HTML5
Individual requirements

1. NodeOPCUA Server: Create the server following the tutorial available and set up OPCUA Variables (Key system performance readings) that can be exposed.

The key system performance readings to be made available include the below, but any available in the standard interface can be provided as an option.
  • Average CPU utilization over the last X period (This should be updated/sent every 5m maximum, 5s is more common in use cases like this, so probably go with ~1m updates in this challenge)
  • System & per-process basis
  • Min/max/ average over the period
  • Memory utilization and free memory
  • System & per-process basis
  • Min/max/ average over the period
  • Disk space (same as you defined it)
  • Per-process run-time (we can deduce when a process when up/down via analytics)

2. HTML5 Client: Develop an HTML5 client which can display and visualize the data. Refer the node-opcua-htmlpanel project for more details.

Deployment Guide and Validation Document

Make sure to provide two separate documents for validation.

A README.md that covers:
  • Deployment - Steps involved to deploy your solution in a new environment.
  • Configuration - Details of any configuration specific to the server or client.
  • Dependency installation - Any dependencies that need to be installed in a new environment to run the project.

A Validation.md that covers:
A Validation.md file that describes how the requirement can be validated by reviewers.

Validation video / screencast
A video that can be quite helpful for review and validation.

Important Notes
The 3 main system metrics that need to be captured are 
1. CPU (System & per-process basis)
2. Memory (System & per-process basis) (a similar example already given in the tutorial link)
3. Disk Usage

There will be libraries available to get these system metrics which you can post in challenge forum to get approval.

For getting the statistics like <metric> over the last X period, min & max the samples need to be persisted so that it can be calculated. 

So except "Per-process run-time" all other key system performance readings are mandatory for the success of this challenge. However contestants are encouraged to find solution for the "Per-process run-time" so that your submission stands out!

Final Submission Guidelines

What To Submit

- Source code
- Documentation
- Youtube Video
 

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30067761