Skip to content

Device Discover API

/*
 * Copyright (c) Siemens AG 2023 ALL RIGHTS RESERVED.
 */

// Device Discover Interface

syntax = "proto3";

import "common_address.proto";
import "common_filters.proto";
import "common_identifiers.proto";

package siemens.industrialassethub.discover.v1;

service DeviceDiscoverApi {
    // Get the list of supported Filter Types
    rpc GetFilterTypes ( siemens.common.filters.v1.FilterTypesRequest ) returns (siemens.common.filters.v1.FilterTypesResponse) {}
    // Get the list of supported Filter Options
    rpc GetFilterOptions ( siemens.common.filters.v1.FilterOptionsRequest ) returns (siemens.common.filters.v1.FilterOptionsResponse) {}

    // Start a device discovery with given filters and options.
    // Returns the discovered devices.
    rpc DiscoverDevices (DiscoverRequest) returns (stream DiscoverResponse) {}
}

message DiscoverRequest {
    /*
    optional: Filters which are used to filter the discover result, e.g. a special device type
    values of identical keys are logically "OR" combined
    values of different keys are logically "AND" combined
    */
    repeated siemens.common.filters.v1.ActiveFilter filters = 1;
    /*
    optional: Options which are used to perform the discover, e.g. timeout, hierarchy level, ...
    values of identical keys are logically "OR" combined
    values of different keys are logically "AND" combined
    */
    repeated siemens.common.filters.v1.ActiveOption options = 2;
    /*
    optional: Specify the target where the discovery should be performed
    If it's not specified, the whole system is scanned
    */
    repeated siemens.common.address.v1.Destination target = 3;
}

message DiscoverResponse {
    // Holds information on one or more discovered devices
    repeated DiscoveredDevice devices = 1;
}

message DiscoveredDevice {  
    // List of default device identifiers of a device supported by the protocol
    repeated siemens.common.identifiers.v1.DeviceIdentifier identifiers = 1;

    // The whole connection parameters, to establish the communication with
    // the discovered device, including the schema and sub-driver configuration
    siemens.common.address.v1.ConnectionParameterSet connection_parameter_set = 2;

    // Timestamp when device was last seen
    // 64 bit unsigned integer which represents the number 
    // of 100 nano-second [0.1 microsec] intervals since January 1, 1601 (UTC).
    fixed64 timestamp = 3; 
}

iah_discover.proto

Message Field Type Label Description
DiscoverRequest filters siemens.common.filters.v1.ActiveFilter repeated Filters which are used to filter the discover result
options siemens.common.filters.v1.ActiveOption repeated Options which are used to perform the discover
target siemens.common.address.v1.Destination repeated Specify the target where the discovery should be performed
DiscoverResponse devices DiscoveredDevice repeated Holds information on one or more discovered devices
DiscoveredDevice identifiers siemens.common.identifiers.v1.DeviceIdentifier repeated List of default device identifiers of a device supported by the protocol
connection_parameter_set siemens.common.address.v1.ConnectionParameterSet The whole connection parameters, to establish the communication with the discovered device
timestamp fixed64 Timestamp when device was last seen

For more details and descriptions on the import proto files refer: