Skip to content

System Service

The System Service is a gRPC & Go based system resource tracker and system controller.

System.proto

CPU

CPU type contains CPU utilization at the current moment.

Field Type Label Description
usedCpuPercentage [float](#float) Percentage of used CPU e.g: 20.0
freeCpuPercentage [float](#float) Percentage of available CPU e.g: 80.0
coreCount [int32](#int32) Total available core count for CPU.e.g 2C/4T CPU value will be 4
modelInfo [string](#string) intel x64 etc..
idleTime [double](#double) Idle time of CPU eg: 3662.50 (in seconds)
frequency [double](#double) Frequency of CPU eg: 2495.999 (in MHz)

Device Info

Device Info provides hardware, firmware and network details for Industrial Edge devices.

Field Type Label Description
manufacturerName [string](#string) ManufacturerName identifies the device manufacturer (e.g., "Siemens AG")
serialNumber [string](#string) SerialNumber provides the unique device serial number for identification
productId [string](#string) ProductId contains the product identifier (MLFB for Siemens devices)
firmwareVersion [string](#string) FirmwareVersion indicates the currently installed firmware version
productName [string](#string) ProductName describes the product type (e.g., "SIMATIC Edge Device")
biosVersion [string](#string) BIOS Version

FirmwareInfo

FirmwareInfo contains Firmware Version.

Field Type Label Description
version [string](#string) Firmware version.

Hostname

Represents the network name of a device. It includes the hostname string, which should adhere to specific format and length requirements as needed by your network or system configuration.

Field Type Label Description
name [string](#string) The hostname string. Ensure it follows the necessary format and length constraints.

Limits

System Limits for the EdgeRuntime.

Field Type Label Description
maxInstalledApplications [int32](#int32) Maximum allowed number of installed edge applications.
maxRunningApplications [int32](#int32) Maximum allowed number of running edge applications.
maxMemoryUsageInGB [float](#float) Maximum allowed memory usage in Gigabytes.
maxStorageUsageInGB [float](#float) Maximum allowed disk usage in Gigabytes.
maxCpuUsagePerecentage [float](#float) Maximum allowed percentage of CPU usage.

LogRequest

LogRequest type, determines the destination path for saving log file.

Field Type Label Description
saveFolderPath [string](#string) Folder path for saving gathered logs.

LogResponse

LogResponse type, contains the full path for the collected log archive.

Field Type Label Description
logPath [string](#string) Full file path for collected log archive.

ModelNumber

ModelNumber type indicates device specific model information.

Field Type Label Description
modelNumber [string](#string) Can be MLFB for SIEMENS devices, for 3rd party vendors it can be any model information.

Resource

System Resource , memory or storage.

Field Type Label Description
totalSpaceInGB [float](#float) Total capacity of storage device in Gigabytes e.g: 3.5
freeSpaceInGB [float](#float) Free space of storage device in Gigabytes e.g: 40.4
usedSpaceInGB [float](#float) Used space of storage device in Gigabytes e.g: 23.2
percentageFreeSpace [float](#float) Percentage of available space e.g: 3.5
percentageUsedSpace [float](#float) Percentage of used space e.g: 96.5
diskType [string](#string) Type of disk eg: "HDD" or "SSD" or "EMMC"
diskTotalReadSectorsInMB [float](#float) Total number of sectors read successfully in Megabytes e.g: 58.9
diskTotalWriteSectorsInMB [float](#float) Total number of sectors written successfully in Megabytes e.g: 32.7

Stats

System Utilization type. CPU, storage and memory utilization.

Field Type Label Description
cpu [CPU](#siemens.iedge.dmapi.system.v1.Cpu) CPU Utilization
storageDevices [Resource](#siemens.iedge.dmapi.system.v1.Resource) repeated StorageDevices array of Resource type.
memory [Resource](#siemens.iedge.dmapi.system.v1.Resource) RAM Utilization Information
upTime [string](#string) Elapsed time since the device is started.

SystemService

System service ,uses a UNIX Domain Socket "/var/run/devicemodel/system.sock" for GRPC communication. protoc generates both client and server instance for this Service. GRPC Status codes : https://developers.google.com/maps-booking/reference/grpc-api/status_codes .

Method Name Request Type Response Type Description
RestartDevice [.google.protobuf.Empty](#google.protobuf.Empty) [.google.protobuf.Empty](#google.protobuf.Empty) Restarts the device
ShutdownDevice [.google.protobuf.Empty](#google.protobuf.Empty) [.google.protobuf.Empty](#google.protobuf.Empty) ShutsDown the device.
HardReset [.google.protobuf.Empty](#google.protobuf.Empty) [.google.protobuf.Empty](#google.protobuf.Empty) Performs host side actions in addition to edge-core for hard reset. e.g: cleaning hard-reset flag(mandatory) ,custom device builder steps(optional) and finally reboots the system(mandatory).
GetModelNumber [.google.protobuf.Empty](#google.protobuf.Empty) [ModelNumber](#siemens.iedge.dmapi.system.v1.ModelNumber) Returns model number (mlfb) for siemens or any type model for 3rd party vendors.
GetFirmwareInfo [.google.protobuf.Empty](#google.protobuf.Empty) [FirmwareInfo](#siemens.iedge.dmapi.system.v1.FirmwareInfo) Returns firmware information of currently installed firmware
GetResourceStats [.google.protobuf.Empty](#google.protobuf.Empty) [Stats](#siemens.iedge.dmapi.system.v1.Stats) Returns current CPU, Memory, Uptime and Storage usage
GetLimits [.google.protobuf.Empty](#google.protobuf.Empty) [Limits](#siemens.iedge.dmapi.system.v1.Limits) Returns limits for how many applications and how much cpu, ram and storage should be available for applications.
GetCustomSettings [.google.protobuf.Empty](#google.protobuf.Empty) [.google.protobuf.Any](#google.protobuf.Any) Returns device specific custom settings.
ApplyCustomSettings [.google.protobuf.Any](#google.protobuf.Any) [.google.protobuf.Empty](#google.protobuf.Empty) Applies device specific custom settings.
GetLogFile [LogRequest](#siemens.iedge.dmapi.system.v1.LogRequest) [LogResponse](#siemens.iedge.dmapi.system.v1.LogResponse) Collects and compress all Journald logs (mandatory) from host ,(plus optional device specific log/report) and then returns a single file path for this new log archive.
UpdateHostname [Hostname](#siemens.iedge.dmapi.system.v1.Hostname) [.google.protobuf.Empty](#google.protobuf.Empty) Updates the hostname of the device with the provided string.
GetDeviceInfo [.google.protobuf.Empty](#google.protobuf.Empty) [DeviceInfo](#siemens.iedge.dmapi.system.v1.DeviceInfo) Returns DeviceInfo information of system.
GetHostname [.google.protobuf.Empty](#google.protobuf.Empty) [Hostname](#siemens.iedge.dmapi.system.v1.Hostname) Retrieves the current hostname of the device.

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)

NOTICE

Funding Acknowledgment: Funded by the Federal Ministry for Economic Affairs and Energy based on a decision by the German Bundestag | Your funding provider: Kicks for Edge as part of the EU funding program IPCEI-CIS (FKZ:13IPC008)