Protocol Version 3 release candidate
After a long discussion phase, the Production Performance Management Protocol version 3 is finally linked on the specification page. Special thanks to bgusach, bf-bryants, muelsen and alaendle for their contributions via github issues!
The most important changes
The optional context section ccontains information on how to interpret the measurements. This includes
- the field '
type' (Number, String or Boolean value) indicates which format the
unitkey can be used to describe the unit of measurement. There are different understandings and standarizations for units ('C' stands for Coulomb, not Celsius), like International System of Units, SenML, ISO 80000-1:2009, etc.. The
unitkey here is a string without further restriction. If that is needed, it can be specified via an URI in
namespacemay contain an URI to identify further detail on the values in this measurement section. This can be a description of units, lengths or naming conventions for measurement points, but also a reference to a semantic model.
- the field '
seriescan contain other than numeric measurements
context.typecontains any of 'BASE64', 'BOOLEAN', 'NUMBER', 'STRING', 'REF' or 'OTHER', the corresponding measurement in
seriesare represented in this type ('REF', 'OTHER' and 'BASE64' are Strings). This way for example, even small base64 encoded binary data, as send from iolink devices, can be included. 'REF' could be used in multipart messages to reference to other sections or even external content.
stateare introduced in
deviceand replaces v2's
operationalMode, which was found to not clearly diffentiate the functional mode and technical state.
- A common
idwas used and replaces different spellings in
additionalDatain the various sections is used for any kind of not-specified data, that should be included in the telegram. Where v2's
metaDatahad to be key/String pairs,
additionalDatacan also be complex JSON objects.
timefield replaces the v2
$_timefield, which is difficult to represent in some programming languages. Note that
timeis not an Integer anymore but a JSON number, to allow sub-millisecond values.
- no more
shutoffValuescan be expressed as specialValues with a meaningful
shutoffPhaseis the measurement with the latest timestamp
- a common definition.json schema is used for sections that are used in multiple telegrams. With the help of JSON schema 'anyOf', sections inherit and can extend from these base definitions.
The most recent updates and this post should finalize the v3 schema. Vetos with suggestions that find a consensus fairly soon after posting are stil accepted via github issues. Major changes and suggestions should rather be addressed to a v4.
The bindings and server should be updated to accept and validate v3 as well. After updating further dependencies, creating eclipse CQs and undergoing the release process, everything should be wrapped up in the unide release 0.3.0.