| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| |
| <title>PPMP Specification | Unide</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| |
| <link rel="icon" href="/images/icon.ico"> |
| |
| |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" integrity="sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+" crossorigin="anonymous"> |
| |
| <link rel="stylesheet" href="/unide/css/styles.css"> |
| </head> |
| <body> |
| <nav class="navbar navbar-inverse"> |
| <div class="container"> |
| |
| <div class="navbar-brand navbar-right"> |
| <a href="/unide/"><img src='/unide/images/logo.png'></img></a> |
| </div> |
| |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-menu-navbar" aria-expanded="false"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| </div> |
| |
| <div class="collapse navbar-collapse" id="main-menu-navbar"> |
| <ul class="nav navbar-nav"> |
| |
| <li><a class="" |
| href="/unide/index.html">Home</a></li> |
| |
| <li><a class="" |
| href="/unide/proposal">Proposal</a></li> |
| |
| <li><a class="active" |
| href="/unide/specification">Specification</a></li> |
| |
| <li><a class="" |
| href="/unide/archives">Blog Archives</a></li> |
| |
| <li><a class="" |
| href="/unide/faq">FAQ</a></li> |
| |
| </ul> |
| |
| </div> |
| </div> |
| </nav> |
| |
| <div class="container"> |
| <div class="row"> |
| <div class="col-sm-12 content-main specification_index"> |
| <h1> |
| PPMP Specification |
| </h1> |
| <h1 id="Rationale"> |
| <a href="#Rationale" class="headerlink" title="Rationale"></a> |
| Rationale |
| </h1> |
| <p> |
| Noticeably in recent years, there’s a continuous increase in demand, price pressure and complexity in manufacturing.<br>Things need to move faster, be more flexible, and fulfill higher quality standards forcing manufacturers to optimize<br>their processes. |
| </p> |
| <p> |
| Production facilities and their performance have a huge impact on the overall performance of manufacturing processes.<br>However, to identify bottlenecks and possibilities for improvements detailed data from machines are required. |
| </p> |
| <p> |
| Such data is surely provided by machines either via modern protocols such as OPC UA or via proprietary access methods but<br>it is not provided in a common and easily accessible format, which can be used to do performance analysis and<br>optimization. This renders holistic process improvement efforts infeasible for many, especially smaller organizations. |
| </p> |
| <p> |
| The Production Performance Management Protocol (PPMP) specifies a format that allows to capture data that is required<br>to do performance analysis of production facilities. It allows monitoring backends to collect and evaluate key metrics<br>of machines in the context of a production process. It is doing that by allowing to relate the machine status with<br>currently produced parts. |
| </p> |
| <p> |
| The specification is structured into two payload formats: Measurement payload and message payload. The Measurement<br>payload contains measurements from machines such as the temperature of a machine at a specific point in time together<br>with the currently produced part. The message payload contains arbitrary messages sent by a machine, e.g. alerts or<br>the like. |
| </p> |
| <p> |
| The payload is meant to be transported via http as a json object. This allows for an easy integration into various<br>backend systems. |
| </p> |
| <h1 id="Communicating-Parties"> |
| <a href="#Communicating-Parties" class="headerlink" title="Communicating Parties"></a> |
| Communicating Parties |
| </h1> |
| <p> |
| Two parties are involved in a PPMP message exchange: the sender and the receiver.<br>The sender pushes a message to the receiver. Usually the sender is a machine or a sensor of a machine. |
| </p> |
| <p> |
| The receiver waits for messages. It offers a API that allows for sending either measurement payloads or message<br>payloads. |
| </p> |
| <p> |
| The communication is unidirectional. Only the sender can contact the receiver and send messages. No feedback from<br>receiver to sender is provided. |
| </p> |
| <img src="images/collaborators.png" alt="Overview PPMP" title="Overview PPMP" class="center-block img-responsive"> |
| |
| <h1> |
| <a name="#Measurement-Payload" title="Measurement Payload"></a> |
| Measurement Payload |
| </h1> |
| <p>The measurement message is the format to exchange simple (non-structured, non-complex ) measurement data. It also allows to transport multiple measurement data (eg. values over time), called 'series'.</p> |
| <img src="images/measurementPayload.png" alt="Class diagram of the measurement payload" title="Class diagram of the measurement payload" class="center-block img-responsive"> |
| |
| <div class="panel panel-default"> |
| <div class="panel-heading">Structure of payload</div> |
| <div class="panel-body"> |
| <ul class="toc"> |
| <li><a href="#content_spec">content-spec</a></li> |
| <li><a href="#device">device</a> |
| <ul> |
| <li><a href="#deviceID">deviceID</a></li> |
| <li><a href="#operationalStatus">operationalStatus</a></li> |
| <li><a href="#metaData">metaData</a></li> |
| </ul> |
| </li> |
| <li><a href="#part">part</a> |
| <ul> |
| <li><a href="#partTypeID">partTypeID</a></li> |
| <li><a href="#partID">partID</a></li> |
| <li><a href="#result">result</a></li> |
| <li><a href="#code">code</a></li> |
| <li><a href="#metaData">metaData</a></li> |
| </ul> |
| </li> |
| <li><a href="#measurements">measurements</a> |
| <ul> |
| <li><a href="#ts">ts</a></li> |
| <li><a href="#result">result</a></li> |
| <li><a href="#code">code</a></li> |
| <li><a href="#series">series</a> |
| <ul> |
| <li><a href="#__time">$_time</a></li> |
| </ul> |
| </li> |
| <li><a href="#limits">limits</a> |
| <ul> |
| <li><a href="#upperError">upperError</a></li> |
| <li><a href="#lowerError">lowerError</a></li> |
| <li><a href="#upperWarn">upperWarn</a></li> |
| <li><a href="#lowerWarn">lowerWarn</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| |
| <h3> |
| <a name="measurement-example" title="Measurement Example"></a> |
| measurement example |
| </h3> |
| <pre> |
| { |
| "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2", |
| "device": { |
| "deviceID": "a4927dad-58d4-4580-b460-79cefd56775b" |
| }, |
| |
| "measurements": [{ |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "series": { |
| "$_time" : [ 0, 23, 24 ], |
| "temperature" : [ 45.4231, 46.4222, 44.2432] |
| } |
| }, { |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "series": { |
| "$_time" : [ 0, 13, 26 ], |
| "pressure" : [ 52.4, 46.32, 44.2432 ] |
| } |
| }] |
| } |
| </pre> |
| |
| <h1> |
| <a name="#Measurement-Payload" title="Measurement Payload"></a> |
| Machine Measurement Payload |
| </h1> |
| <p>The main purpose of the machine message format is to allow devices and integrators to send messages containing an interpretation of measurement data or status.</p> |
| |
| <img src="images/messagePayload.png" alt="Class diagram of the message payload" title="Class diagram of the message payload" class="center-block img-responsive"> |
| |
| <div class="panel panel-default"> |
| <div class="panel-heading">Structure of payload</div> |
| <div class="panel-body"> |
| <ul class="toc"> |
| <li><a href="#content_spec">content-spec</a></li> |
| <li><a href="#device">device</a> |
| <ul> |
| <li><a href="#deviceID">deviceID</a></li> |
| <li><a href="#operationalStatus">operationalStatus</a></li> |
| <li><a href="#metaData">metaData</a></li> |
| </ul> |
| </li> |
| <li><a href="#messages">messages</a> |
| <ul> |
| <li><a href="#ts">ts</a></li> |
| <li><a href="#origin">origin</a></li> |
| <li><a href="#type">type</a></li> |
| <li><a href="#severity">severity</a></li> |
| <li><a href="#code_msg">code</a></li> |
| <li><a href="#title">title</a></li> |
| <li><a href="#description">description</a></li> |
| <li><a href="#hint">hint</a></li> |
| <li><a href="#metaData">metaData</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| |
| <h3> |
| <a name="minimal-message-example" title="Minimal Message Example"></a> |
| minimal message example |
| </h3> |
| <pre> |
| { |
| "content-spec":"urn:spec://eclipse.org/unide/machine-message#v2", |
| "device": { |
| "deviceID": "2ca5158b-8350-4592-bff9-755194497d4e" |
| }, |
| "messages": [{ |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "code": "190ABT" |
| }] |
| } |
| </pre> |
| |
| <h3> |
| <a name="multiple-messages-example" title="Multiple Messages Example"></a> |
| multiple messages example |
| </h3> |
| |
| <pre> |
| { |
| "content-spec":"urn:spec://eclipse.org/unide/machine-message#v2", |
| "device": { |
| "deviceID": "2ca5158b-8350-4592-bff9-755194497d4e", |
| "operationalStatus": "normal", |
| "metaData":{ |
| "swVersion": "2.0.3.13", |
| "swBuildID": "41535" |
| } |
| }, |
| "messages": [{ |
| "origin": "sensor-id-992.2393.22", |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "type": "DEVICE", |
| "severity": "HIGH", |
| "code": "190ABT", |
| "title": "control board damaged", |
| "description": "Electronic control board or its electrical connections are damaged", |
| "hint": "Check the control board", |
| "metaData": { |
| "firmware": "20130304_22.020" |
| } |
| }, { |
| "ts": "2002-05-30T09:30:10.125+02:00", |
| "type": "TECHNICAL_INFO", |
| "severity": "HIGH", |
| "code": "33-02", |
| "title": "Disk size limit reached", |
| "description": "Disk size has reached limit. Unable to write log files." |
| }] |
| } |
| </pre> |
| |
| |
| <h1> |
| <a name="#fields-definition" title="Fields definition"></a> |
| Fields definition |
| </h1> |
| |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="content_spec" title="content-spec"></a> |
| content-spec |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Defines the format version</td> |
| </tr> |
| |
| <tr> |
| <th>Possible values:</th> |
| <td> |
| <ul> |
| |
| <li>"urn:spec://eclipse.org/unide/machine-message#v2"</li> |
| |
| <li>"urn:spec://eclipse.org/unide/measurement-message#v2"</li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>enum indicating the type of this payload.</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="device" title="device"></a> |
| device |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Contains information about the device</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#deviceID" title="go to deviceID">deviceID</a> |
| </li> |
| |
| <li> |
| <a href="#operationalStatus" title="go to operationalStatus">operationalStatus</a> |
| </li> |
| |
| <li> |
| <a href="#metaData" title="go to metaData">metaData</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| device: { |
| "deviceID": "0815" |
| } |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="deviceID" title="deviceID"></a> |
| deviceID |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The unique ID of the device. As this is used to identify a device independently from time or location. The ID itself must be stable and unique. The recommendation is to use a universally unique identifier (UUID).</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>true</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>reprentation could follow <a href="http://www.gs1.org/global-individual-asset-identifier-giai" title="GIAI" target="_blank" rel="external">GIAI</a>, <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier" title="UUID" target="_blank" rel="external">UUID</a> or others</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "deviceID": "6e7807d0-5491-11e6-9d32-02423234b390" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="operationalStatus" title="operationalStatus"></a> |
| operationalStatus |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The operationalStatus describes the status of a device. It is a string matching a definition in the Production Performance Manager.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "operationStatus": "MM" //Maintenance Mode |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="metaData" title="metaData"></a> |
| metaData |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Additional key-value pairs in a JSON structure format. Key and value must be strings.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>subfields can be any key/string value pair</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "metaData": { |
| "swVersion": "2.0.3.13", //software (firmware) version |
| "swBuildID": "41535" //software (firmware) build identifier/number |
| } |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="part" title="part"></a> |
| part |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Contains information regarding the part which this payload relates to</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#partTypeID" title="go to partTypeID">partTypeID</a> |
| </li> |
| |
| <li> |
| <a href="#partID" title="go to partID">partID</a> |
| </li> |
| |
| <li> |
| <a href="#result" title="go to result">result</a> |
| </li> |
| |
| <li> |
| <a href="#code" title="go to code">code</a> |
| </li> |
| |
| <li> |
| <a href="#metaData" title="go to metaData">metaData</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "part": { |
| "partTypeID": "F00VH07328", |
| "partID": "420003844", |
| "result": "OK", |
| "code": "HUH289", |
| "metaData": { |
| "lotID" : "845849", |
| "toolID" : "32324-432143" |
| } |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="partTypeID" title="partTypeID"></a> |
| partTypeID |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Identifies the type of the part</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "partTypeID": "F00VH07328" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="partID" title="partID"></a> |
| partID |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Identifies a part. This ID comes from a 3rd party system and thus we have no guarantees if this is unique or not.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>256</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "partID": "420003844" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="result" title="result"></a> |
| result |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Information if the quality of the produced part was ok or not</td> |
| </tr> |
| |
| <tr> |
| <th>Possible values:</th> |
| <td> |
| <ul> |
| |
| <li>"UNKNOWN"</li> |
| |
| <li>"OK"</li> |
| |
| <li>"NOK"</li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>Default value is "UNKNOWN"</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "result": "OK" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="code" title="code"></a> |
| code |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The code is an addendum to the result which allows to pass information in the case the result was NOK.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>36</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>The value often stems from the integrated system e.g. a PLC code</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "code": "HUH289" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="measurements" title="measurements"></a> |
| measurements |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>A list of sensor readings</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>if sensor readings have the same timestamp/-offsets, they can be combined in one measurement block. Otherwise they are added to the measurements list as individual block.</td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#ts" title="go to ts">ts</a> |
| </li> |
| |
| <li> |
| <a href="#result" title="go to result">result</a> |
| </li> |
| |
| <li> |
| <a href="#code" title="go to code">code</a> |
| </li> |
| |
| <li> |
| <a href="#limits" title="go to limits">limits</a> |
| </li> |
| |
| <li> |
| <a href="#series" title="go to series">series</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "measurements": [{ |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "series": { |
| "$_time" : [ 0, 23, 24 ], |
| "temperature" : [ 45.4231, 46.4222, 44.2432] |
| } |
| }] |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="ts" title="ts"></a> |
| ts |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Start time of the the data measurment in <a href="http://www.w3.org/TR/NOTE-datetime" title="ISO 8601" target="_blank" rel="external">ISO 8601 format</a></td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>http://www.w3.org/TR/NOTE-datetime</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "ts": "2002-05-30T09:30:10.123+02:00" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="limits" title="limits"></a> |
| limits |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Provides information about limits for data provided in the series element. The limits is an JSON object where the key is the name of a Measurement Point (see also series element) and the value is a structure of different upper/lower limits.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>each subfield key corresponds to one measurement point and holds an object with the error/warning levels.</td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#upperError" title="go to upperError">upperError</a> |
| </li> |
| |
| <li> |
| <a href="#lowerError" title="go to lowerError">lowerError</a> |
| </li> |
| |
| <li> |
| <a href="#upperWarn" title="go to upperWarn">upperWarn</a> |
| </li> |
| |
| <li> |
| <a href="#lowerWarn" title="go to lowerWarn">lowerWarn</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "limits": { |
| "temperature": { |
| "upperError": 4444, |
| "lowerError": 44, |
| "upperWarn": 2222, |
| "lowerWarn": 46 |
| } |
| } |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="upperError" title="upperError"></a> |
| upperError |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Indicates the upper error threshold, given by the device/integrator</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "upperError": 4444 |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="lowerError" title="lowerError"></a> |
| lowerError |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Indicates the lower error threshold, given by the device/integrator</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "lowerError": 44 |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="upperWarn" title="upperWarn"></a> |
| upperWarn |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Indicates the upper warning threshold, given by the device/integrator</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "upperWarn": 2222 |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="lowerWarn" title="lowerWarn"></a> |
| lowerWarn |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Indicates the lower warning threshold, given by the device/integrator</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "lowerWarn": 46 |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="series" title="series"></a> |
| series |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The series data collected for the measurements. Every subfield key matches a measurement point of the device type. Every subfield value is an array. All arrays are of equal length and an entry at a given index corresponds to another arrays value at this index</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>In the case of a time series, one column contains the time offset (positive values in ascending order starting with 0). In this case the key is <i>$_time`</i>.</td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#__time" title="go to $_time">$_time</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "ts": "2015-07-23T16:04:10.223+02:00", |
| "series": { |
| "$_time": [0, 22, 24, 27], |
| "temperature": [33, 34, 33, 32], |
| "pressure": [1, 1.001. 2.52. 3.2] |
| } |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="__time" title="$_time"></a> |
| $_time |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>An array of time offsets in miliseconds from the <href="#ts">ts field of this series</href="#ts"></td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>the offsets are of unsigned long integer values</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "$_time": [0, 22, 24, 27] |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="messages" title="messages"></a> |
| messages |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>A list of machine messages</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Sub Fields:</th> |
| <td> |
| <ul> |
| |
| <li> |
| <a href="#ts" title="go to ts">ts</a> |
| </li> |
| |
| <li> |
| <a href="#origin" title="go to origin">origin</a> |
| </li> |
| |
| <li> |
| <a href="#type" title="go to type">type</a> |
| </li> |
| |
| <li> |
| <a href="#severity" title="go to severity">severity</a> |
| </li> |
| |
| <li> |
| <a href="#code" title="go to code">code</a> |
| </li> |
| |
| <li> |
| <a href="#title" title="go to title">title</a> |
| </li> |
| |
| <li> |
| <a href="#description" title="go to description">description</a> |
| </li> |
| |
| <li> |
| <a href="#hint" title="go to hint">hint</a> |
| </li> |
| |
| <li> |
| <a href="#metaData" title="go to metaData">metaData</a> |
| </li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "messages": [{ |
| "ts": "2002-05-30T09:30:10.123+02:00", |
| "code": "190ABT" |
| }] |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="origin" title="origin"></a> |
| origin |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The origin of the message if not the device identified by deviceID in the header element.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>Could be used to identify a subsystem or a particular sensor/part of the device where the <br> message actually relates to.</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "origin": "sensor-id-992.2393.22" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="type" title="type"></a> |
| type |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The type of message. Default is DEVICE but can be set to TECHNICAL_INFO indicating a problem with the integration of the actual device.</td> |
| </tr> |
| |
| <tr> |
| <th>Possible values:</th> |
| <td> |
| <ul> |
| |
| <li>"DEVICE"</li> |
| |
| <li>"TECHNICAL_INFO"</li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "type": "DEVICE" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="severity" title="severity"></a> |
| severity |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Severity of the message.</td> |
| </tr> |
| |
| <tr> |
| <th>Possible values:</th> |
| <td> |
| <ul> |
| |
| <li>"HIGH"</li> |
| |
| <li>"MEDIUM"</li> |
| |
| <li>"LOW"</li> |
| |
| <li>"UNKNOWN"</li> |
| |
| </ul> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>Default is "UNKNOWN"</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "severity": "HIGH" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="code_msg" title="code"></a> |
| code |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>Code identifying the problem described in the message.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>yes</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>36</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td>The value often stems from the machine e.g. a PLC code. Is similar to <a href="#code" title="go to measurement code">code</a> in measurement interface.</td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "code": "190ABT" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="title" title="title"></a> |
| title |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The title of the message</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>1000</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "title": "control board damaged" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="description" title="description"></a> |
| description |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>The description is used to describe the purpose of the message, e.g. the problem</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>2000</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "description": "Electronic control board or its electrical connections are damaged" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| <h4> |
| </h4> |
| |
| <div class="panel panel-default field-definition table-responsive"> |
| <div class="panel-heading"> |
| <a name="hint" title="hint"></a> |
| hint |
| <a href="#" title="go up"> |
| <span class="glyphicon glyphicon-chevron-up pull-right" aria-hidden="true"> </span> |
| </a> |
| </div> |
| <table class="table"> |
| <tr> |
| <th>Definition:</th> |
| <td>In case a problem is reported, the hint can be used to point out a possible solution.</td> |
| </tr> |
| |
| <tr> |
| <th>Required:</th> |
| <td>no</td> |
| </tr> |
| <tr> |
| <th>Size restriction:</th> |
| <td>2000</td> |
| </tr> |
| <tr> |
| <th>Note:</th> |
| <td></td> |
| </tr> |
| |
| <tr> |
| <th>Example:</th> |
| <td> |
| <pre>... |
| "hint": "Check the control board" |
| ...</pre> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| |
| |
| </div> |
| |
| </div> |
| </div> |
| <footer class="blog-footer"> |
| <div class="container"> |
| <div id="footer-info" class="inner"> |
| <ul> |
| <li> |
| <a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a> |
| </li> |
| <li> |
| <a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a> |
| </li> |
| <li> |
| <a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a> |
| </li> |
| <li> |
| <a href="http://www.eclipse.org/legal/">Legal</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </footer> |
| |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script> |
| <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> |
| |
| |
| </body> |
| </html> |