Sample Message for Timeseries Metadata¶
Timeseries Metadata Sample¶
The sample metadata message is relevant "c/{clientId}/o/opcua/v3/u/m/t" topic.
Resources like Asset Types, Assets and Aspect Types are created only by this operation. Update and Delete operations are not possible.
Note
The code below is just a json representation of the UADP message format. You have to create an UADP message in binary format before sending it to the topic.
Metadata Sample¶
Sample
{
"networkMessageHeader": {
"versionFlags": -112,
"extendedFlags1": {
"value": 132
},
"extendedFlags2": {
"value": 8
},
"publisherId": "vehicle-001-publisher",
"uadpversion": 0,
"groupHeaderEnabled": false,
"payloadHeaderEnabled": false,
"timestampEnabled": false,
"picoSecondsEnabled": false,
"promotedFieldsEnabled": false,
"securityEnabled": false,
"chunkMessage": false,
"networkMessageType": "DISCOVERY_RESPONSE",
"extendedFlags2Enabled": true,
"publisherIdEnabled": true,
"publisherIdDataType": "String",
"dataSetClassIdEnabled": false,
"extendedFlags1Enabled": true
},
"payload": {
"messages": [{
"discoveryResponseHeader": {
"responseType": "DATA_SET_METADATA_MESSAGE",
"sequenceNumber": 0
},
"discoveryResponseMessage": {
"dataSetWriterId": 1000,
"metaData": {
"structureDataTypes": [{
"structureDefinition": {
"dataTypeId": {
"namespaceIndex": 1,
"value": 1,
"nullNodeId": false,
"idType": "Numeric"
},
"name": {
"namespaceIndex": 0,
"name": "ElectricEngine"
},
"defaultEncodingId": {
"namespaceIndex": 0,
"value": 12,
"nullNodeId": false,
"idType": "Numeric"
},
"baseDataType": {
"namespaceIndex": 0,
"value": 12,
"nullNodeId": false,
"idType": "Numeric"
},
"structureType": "< Ignored Value >",
"fields": [{
"name": "Voltage",
"description": {
"text": "Shows voltage of the device"
},
"dataType": {
"namespaceIndex": 0,
"value": 11,
"nullNodeId": false,
"idType": "Numeric"
},
"valueRank": -1,
"optional": false
}, {
"name": "Current",
"description": {
"text": "Shows current over the device"
},
"dataType": {
"namespaceIndex": 0,
"value": 11,
"nullNodeId": false,
"idType": "Numeric"
},
"valueRank": -1,
"optional": false
}]
}
}, {
"structureDefinition": {
"dataTypeId": {
"namespaceIndex": 1,
"value": 2,
"nullNodeId": false,
"idType": "Numeric"
},
"name": {
"namespaceIndex": 0,
"name": "Battery"
},
"defaultEncodingId": {
"namespaceIndex": 0,
"value": 12,
"nullNodeId": false,
"idType": "Numeric"
},
"baseDataType": {
"namespaceIndex": 0,
"value": 12,
"nullNodeId": false,
"idType": "Numeric"
},
"structureType": "< Ignored Value >",
"fields": [{
"name": "Charging",
"description": {
"text": "Indicates whether it's currently charging"
},
"dataType": {
"namespaceIndex": 0,
"value": 1,
"nullNodeId": false,
"idType": "Numeric"
},
"valueRank": -1,
"optional": false
}, {
"name": "ChargeLevel",
"description": {
"text": "Shows battery charge level"
},
"dataType": {
"namespaceIndex": 0,
"value": 6,
"nullNodeId": false,
"idType": "Numeric"
},
"valueRank": -1,
"optional": false
}]
}
}],
"name": "vehicle-001-publisher",
"description": {
"text": "OPCUA Pub/Sub Publisher for vehicle-001"
},
"fields": [{
"name": "vehicle-001/engine",
"description": {
"text": "Engine that provides the needed torque to move the vehicle",
"localeId": "< Ignored Value >"
},
"fieldFlags": {
"promotedField": false
},
"builtInDataType": "ExtensionObject",
"dataType": {
"namespaceIndex": 1,
"value": 1,
"nullNodeId": false,
"idType": "Numeric"
},
"dataSetFieldId": "< Ignored Value >",
"properties": [{
"encodingMask": 12,
"key": {
"namespaceIndex": 0,
"name": "Voltage_unit"
},
"value": "V"
}, {
"encodingMask": 12,
"key": {
"namespaceIndex": 0,
"name": "Current_unit"
},
"value": "A"
}]
},
{
"name": "vehicle-001/batteries/primary",
"description": {
"text": "Primary battery feeding the engine",
"localeId": "< Ignored Value >"
},
"fieldFlags": {
"promotedField": false
},
"builtInDataType": "ExtensionObject",
"dataType": {
"namespaceIndex": 1,
"value": 2,
"nullNodeId": false,
"idType": "Numeric"
},
"dataSetFieldId": "< Ignored Value >",
"properties": [{
"encodingMask": 12,
"key": {
"namespaceIndex": 0,
"name": "ChargeLevel_unit"
},
"value": "%"
}]
},
{
"name": "vehicle-001/batteries/secondary",
"description": {
"text": "Secondary battery feeding the engine",
"localeId": "< Ignored Value >"
},
"fieldFlags": {
"promotedField": false
},
"builtInDataType": "ExtensionObject",
"dataType": {
"namespaceIndex": 1,
"value": 2,
"nullNodeId": false,
"idType": "Numeric"
},
"dataSetFieldId": "< Ignored Value >",
"properties": [{
"encodingMask": 12,
"key": {
"namespaceIndex": 0,
"name": "ChargeLevel_unit"
},
"value": "%"
}]
}
],
"configurationVersion": {
"majorVersion": {
"value": 123
},
"minorVersion": {
"value": 123
}
}
},
"statusCode": {
"value": 0,
"description": "",
"severity": 0,
"bad": false,
"good": true,
"notBad": true,
"notGood": false,
"notUncertain": true,
"uncertain": false,
"semanticsChanged": false,
"structureChanged": false,
"subcode": 0,
"infotype": 0,
"limitBits": 0,
"historianBits": 0,
"valueAsIntBits": 0,
"name": "GOOD",
"overflow": false
}
}
}]
}
}
Device Asset¶
If the metadata message above arrives in the OPC UA PubSub Service, some assets, aspect types and asset types are created in Asset Management as below:
Sample
{
"assetId": "967bbda37d5d4cd09a3c80cafcdea100",
"tenantId": "connint5",
"name": "vehicle-001-publisher",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "34308ff4497a4295856c3f87fac5556c",
"typeId": "core.opcuadatamodel",
"hierarchyPath": [{
"assetId": "34308ff4497a4295856c3f87fac5556c",
"name": "connint5"
}],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/967bbda37d5d4cd09a3c80cafcdea100"
},
"aspects": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/967bbda37d5d4cd09a3c80cafcdea100/aspects"
},
"variables": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/967bbda37d5d4cd09a3c80cafcdea100/variables"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/967bbda37d5d4cd09a3c80cafcdea100/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/34308ff4497a4295856c3f87fac5556c"
},
"children": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets?filter=%7B%22parentId%22:%22967bbda37d5d4cd09a3c80cafcdea100%22%7D"
}
}
}
Hierarchy Assets¶
All the Hierarchy Assets are created as below:
Sample
{
"assetId": "2b9c1a342527440a90c7120afad20425",
"tenantId": "connint5",
"name": "vehicle-001",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "967bbda37d5d4cd09a3c80cafcdea100",
"typeId": "core.opcuahierarcydatatype",
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad20425"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad20425/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/967bbda37d5d4cd09a3c80cafcdea100"
}
}
},
{
"assetId": "1a9c1a342527440a90c7120afad20431",
"tenantId": "connint5",
"name": "batteries",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "967bbda37d5d4cd09a3c80cafcdea100",
"typeId": "core.opcuahierarcydatatype",
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1a9c1a342527440a90c7120afad20431"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1a9c1a342527440a90c7120afad20431/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad20425"
}
}
}
Data Point Assets¶
All the Data Point Assets are created as below:
Sample
{
"assetId": "2b9c1a342527440a90c7120afad1234",
"tenantId": "connint5",
"name": "engine",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "2b9c1a342527440a90c7120afad20425",
"typeId": "connint5.ElectricEngine",
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int..io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad1234"
},
"aspects": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad1234/aspects"
},
"variables": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad1234/variables"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad1234/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/2b9c1a342527440a90c7120afad20425"
}
}
},
{
"assetId": "4e4ae801a075434c8628c59b5155db1a",
"tenantId": "connint5",
"name": "primary",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "1a9c1a342527440a90c7120afad20431",
"typeId": "connint5.Battery",
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/4e4ae801a075434c8628c59b5155db1a"
},
"aspects": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/4e4ae801a075434c8628c59b5155db1a/aspects"
},
"variables": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/4e4ae801a075434c8628c59b5155db1a/variables"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/4e4ae801a075434c8628c59b5155db1a/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1a9c1a342527440a90c7120afad20431"
}
}
},
{
"assetId": "1e1ae801a075434c8628c59b5155db23",
"tenantId": "connint5",
"name": "secondary",
"timezone": "Europe/Berlin",
"twinType": "performance",
"parentId": "1a9c1a342527440a90c7120afad20431",
"typeId": "connint5.Battery",
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1e1ae801a075434c8628c59b5155db23"
},
"aspects": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1e1ae801a075434c8628c59b5155db23/aspects"
},
"variables": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1e1ae801a075434c8628c59b5155db23/variables"
},
"location": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1e1ae801a075434c8628c59b5155db23/location"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assets/1a9c1a342527440a90c7120afad20431"
}
}
}
Asset Types¶
All the Asset Types are created as below:
Sample
{
"parentTypeId": "core.opcuadatatype",
"instantiable": true,
"tenantId": "connint5",
"name": "ElectricEngine",
"description": "ElectricEngine Asset Type",
"scope": "private",
"aspects": [{
"name": "ElectricEngineFields",
"aspectType": {
"id": "connint5.ElectricEngineFields",
"tenantId": "connint5",
"name": "ElectricEngineFields",
"category": "dynamic",
"scope": "private",
"description": "Information about ElectricEngine Data Instance Fields",
"variables": [{
"name": "Voltage",
"unit": "V",
"searchable": true,
"qualityCode": true,
"defaultValue": null,
"dataType": "DOUBLE"
},
{
"name": "Current",
"unit": "A",
"searchable": true,
"qualityCode": true,
"defaultValue": null,
"dataType": "DOUBLE"
}
],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/aspecttypes/connint5.ElectricEngineFields"
}
}
}
}],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assettypes/connint5.ElectricEngine"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assettypes/core.opcuadatatype"
}
},
"id": "connint5.ElectricEngine"
},
{
"parentTypeId": "core.opcuadatatype",
"instantiable": true,
"tenantId": "connint5",
"name": "Battery",
"description": "Battery Asset Type",
"scope": "private",
"aspects": [{
"name": "BatteryFields",
"aspectType": {
"id": "connint5.BatteryFields",
"tenantId": "connint5",
"name": "BatteryFields",
"category": "dynamic",
"scope": "private",
"description": "Information about Battery Data Instance Fields",
"variables": [{
"name": "Charging",
"unit": "",
"searchable": true,
"qualityCode": true,
"defaultValue": null,
"dataType": "BOOLEAN"
},
{
"name": "ChargeLevel",
"unit": "%",
"searchable": true,
"qualityCode": true,
"defaultValue": null,
"dataType": "INT"
}
],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/aspecttypes/connint5.BatteryFields"
}
}
}
}],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assettypes/connint5.Battery"
},
"parent": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/assettypes/core.opcuadatatype"
}
},
"id": "connint5.Battery"
}
Aspect Types¶
All the aspect types which are created as below:
Sample
{
"id": "connint5.ElectricEngineFields",
"tenantId": "connint5",
"name": "ElectricEngineFields",
"category": "dynamic",
"scope": "private",
"description": "Information about ElectricEngine Data Instance Fields",
"variables": [{
"name": "Voltage",
"unit": "V",
"searchable": true,
"qualityCode": true,
"dataType": "DOUBLE",
"defaultValue": null
},
{
"name": "Current",
"unit": "A",
"searchable": true,
"qualityCode": true,
"dataType": "DOUBLE",
"defaultValue": null
}
],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/aspecttypes/connint5.ElectricEngineFields"
}
}
},
{
"id": "connint5.BatteryFields",
"tenantId": "connint5",
"name": "BatteryFields",
"category": "dynamic",
"scope": "private",
"description": "Information about Battery Data Instance Fields",
"variables": [{
"name": "Charging",
"unit": "",
"searchable": true,
"qualityCode": true,
"dataType": "BOOLEAN",
"defaultValue": null
},
{
"name": "ChargeLevel",
"unit": "%",
"searchable": true,
"qualityCode": true,
"dataType": "INT",
"defaultValue": null
}
],
"_links": {
"self": {
"href": "https://connint5-assetmanager.eu1-int.mindsphere.io/api/assetmanagement/v3/aspecttypes/connint5.BatteryFields"
}
}
}