Code Monkey home page Code Monkey logo

omniaplant's Introduction

Omnia Industrial IoT Platform

The Omnia Industrial IoT Platform is Equinor's platform for accessing contextualized industrial data from Equinor plants. All data and functionality are made available through open APIs so you can spend your time developing applications, applying analytics and accelerate/scale your digital initiatives. The platform is supporting and enabling many of Equinor's major projects on the digital roadmap such as Integrated Operations Centre (IOC), and it is also used for bi-directional data sharing with external suppliers and partners.

Screenshot

The current building blocks in the platform is centered around timeseries metadata and data. It consists of services to export and stream timeseries data and metadata from a number of different timeseries data sources both internally and externally. Data and functionality in Omnia Plant Data Platform is exposed by using APIs that both internal and external customers can use to build new value-adding application and services.

The APIs are products themselves in the Omnia Plant Data Platform, and we adhere to the following overall data sharing principles:

  • All data sharing will happen through open, well-documented (using OpenAPI) and versioned APIs.
  • All data needs to be searchable.
  • Customers writing data back to Omnia Plant Data Platform shall provide it in a machine-readable format (that can be automatically read and processed by a computer).
  • No underlying technology will be exposed through the API - to ensure a continuous optimization of the backend.
  • APIs are defined and developed iteratively, driven by concrete use cases with business value.

The Omnia Plant Data Platform is also adhering to Equinor's API strategy: https://github.com/equinor/api-strategy

Working mode

The team building the platform operates in two-week sprints, and a product goes through Alpha, Beta, General Available (GA) and Deprecation phases. When a product is released in Beta, invited customers and stakeholders will test and provide feedback on the product. When the product is General Available (put into production) customers can expect standard technical support according to Service Level Agreement (SLA), and full documentation will be available.

A product or feature will be available and supported 12 months after customers have been notified that it will be removed. Deprecation takes for instance place when there is a new major release. The previous version can then be used and will be supported for 12 months before it is taken out of production.

Support

Do you need help? Take a look at https://github.com/equinor/OmniaPlant/wiki/Support

omniaplant's People

Contributors

eaidland avatar geirarnerodde avatar murugend avatar rosseboe avatar sense545 avatar ssorenes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

omniaplant's Issues

Add access metadata field for time series data tags

Is your feature request related to a problem? Please describe.
I can use an existing pipeline to transfer time series data from an equinor source system to OmniaPlant Timeseries database, where it will be available for end users based on a different access protection scheme than in the source. Let's call it a privilege escalation bug.

Describe the solution you'd like
Time series tag metadata should include an access-group property
System to system pipelines, i.e. those creating tags, should include on access-group metadata to make it possible for Timeseries api to inherit/reproduce data access to it's end-users.

Describe alternatives you've considered
Don't allow transfer of data from other equinor source data systems.

Additional context

TimeseriesAPI: Support more/arbitrary metadata

Is your feature request related to a problem? Please describe.
I want to make a timeseries in the timeseries API (e.g. the output of a machine learning algorithm), and I know some interesting things about the timeseries which I wants to store in the metadata of the generated timeseries object. Today it seems like I would have to encode all my interesting data into the "description" field, but this can get quite messy.

Describe the solution you'd like
I have 3 different alternatives in sinking order of difficulty and awesomeness:

  1. Allow me to add arbitrary metadatafields which will all be searchable.
  2. Allow me to add arbitrary metadatafields which will not be searchable, but I will see them when I get the timeseries object.
  3. Add a few more hardcoded metadata fields which I can use for my own purpose. In this alternative maybe even give them lame names like "Info1", "Info2" etc to indicate that they have no semantic meaning.

For us point 1 is overkill, but clearly the coolest. We will be happy if we get any of them.

Describe alternatives you've considered
Encode the info into the description field. But this makes it hard to use programmatically.

Timeseries API - Make 404 responses consistent on /query/data/latest

Describe the bug
When querying data in batches on tags that (I think) I dont have access to I get a nice response that says which tags are 404 (not 403 but fair enough..) See screenshot 1.
This is nice since I still get data for tags that are valid and accessible

But when I send in a batch with invalid tag names, the whole batch fails, even for valid tags (see screenshot 2) This makes me lose the whole batch and

Trace ID
"traceId": "0HMT7I3PQEH7M:00000DB3"

To Reproduce
/query/data/latest?federationSource=IMS

[
    {
        "facility": "1219",
        "name":"1219-23PST0502_X",
          "endTime": "2023-09-01T05:00:00Z"
    },
    {
        "facility": "1219",
        "name":"1219-23PT0504_X",
        "endTime": "2023-09-01T05:00:00Z"
    },
     {
        "facility": "1219",
        "name":"GFA1110-23PT0504_X",
        "endTime": "2023-09-01T05:00:00Z"
    }

]

Expected behavior
I would like both requests to give the same format of error output, so that the whole batch does not get lost as in screenshot 2.

Screenshots
Screenshot1 Screenshot 1

image Screenshot 2

Criticality
Low/Medium

EWMA (additional aggregate function)

Is your feature request related to a problem? Please describe.
In 'CBM machine' project, one uses another agreggated function as the ones available in timeseries API, called EWMA.
Because of that, one uses extra components and storage for the sole purpose of calculating this value, which could in principle be useful also for monitoring or analytics purpose.

Describe the solution you'd like
The CBM project might need to come back with the exact requirement, but I would draft it here as : include EWMA to the available aggregate functions (together with MIN, MAX, AVG, COUNT...), as I believe it would be valuable for more than one consumers.
Using EWMA function requires an input parameter 'alpha' between 0 and 1 (as far I know).

Describe alternatives you've considered
Currently the CBM machine proof of concept uses SAP PAI for processing timeseries, and transform timeseries with a product called SAP Data intelligence (similar to Azure data factory, to transform data), and uses Python code to apply EWMA to the timeseries before applying CBM rules. This presents challenges in form of competence, introduction of new technology, costs...

Additional context
EWMA provides a way for smoothing the curve and removing 'noise' or false positives.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.