Skip to content

Creating Device Types

In the Manage Device Types menu item, only public Device Types and Device Types that are owned by your own hub are displayed. By that, it is not possible to upload firmware versions to Device Types that you do not own.
Device Types are displayed after they are synchronized from the IE Hub.

The following CPU architectures are supported for Device Types:

  • x86-64
  • arm64

Prerequisites

An IEM instance with Device Builder features is created properly.

Procedure

  1. In the Management UI, navigate to Manage Device Types.
  2. Click Create New Device Type.
    Manage Device Types
    At this step, you are expected to provide a package which contains Device Type information.
    Upload Device Type Package
    The Device Type package is a .zip file which should contain the **device_description.json* and assets referred in the device_description.json.
  3. Select the device package and click Upload.
    After uploading the package, you should be able to see your new Device Type and its details.

New Device Type Details

Creating Device Type Packages with Industrial Edge Device Type Generator

You can manually create a device type package by reviewing the steps here. Also, This device type package can be obtained using the Industrial Edge Device Type Generator tool.

Device Type Packages

If you want to examine a Device Type, you can download its package.
Here is an example file hierarchy for a Device Type package:

    +-- MyVendor_MyDeviceTypeName.zip
        +-- MyDeviceTypeFolder
            +-- device_description.json
            +-- assets
                +-- icon.png
                +-- vendor.png
                +-- ports.png (Optional)

And an example device_description.json:

    {
        "meta": "iedge_devicetype_draft_1",
        "vendor": "MyVendor",
        "name": "MyDeviceTypeName",
        "revision": "",
        "id": "generate-your-device-type-uuid",
        "link": "​​​​​​​https://my_company.com/my_device_type.html",
        "platform": "x86-64",
        "createdAt": "2022-01-01T00:10:00.0000Z",
        "assets": [{
            "path": "assets/icon.png",
            "name": "icon",
            "mimeType": "image/png"
        }, {
            "path": "assets/vendor.png",
            "name": "vendor",
            "mimeType": "image/png"
        }, {
        "path": "assets/ports.png",
        "name": "ports",
        "mimeType": "image/png"
        }],
        "peripherals": {
            "ethernet": {
                "configurationTypes": ["map"],
                "numberOfPorts": 2,
                "map": [{
                    "label": "<network_label_1>",
                    "interface-name": "<corresponding_interface_name_1>"
                }, {
                    "label": "<network_label_2>",
                    "interface-name": "<corresponding_interface_name_2>"
                }],
                "hintMessage":{
                    "text": "Optional custom message for network interface to give information on device onboarding UI."
                }
            }
        },
        "capabilities": {
          "network": true,
          "ntp": true,
          "proxy": true,
          "docker0-config": true
        }
    }

Here an example *.zip file.

You can use the following link to generate a UUID for your Device Type: https://duckduckgo.com/?q=generate+uuid

Field Description
meta Name of the *.json schema, by default "iedge_devicetype_draft_1"
vendor Device vendor, e.g. SIEMENS
name Name of the Device Type, e.g. Industrial Edge - SIMATIC IPC227E
revision Optional field. It can be used to distinguish devices of the same Device Type with different hardware/software capabilities. It can be empty string if it will not be used. If it is provided, it is shown next to the device type name in the device type selection listing view.
id Device Type UUID generated by the Device Builder.
link Link to the information page.
platform Platform of the Device Type, e.g. x86-64, arm64.
createdAt Date created in yyyy-MM-dd'T'HH:mm:ss.SSS'Z' format, e.g. 2022-02-09T12:46:22.000Z
assets There are two mandatory assets: images with name "icon" and "vendor" ("mimeType": "image/png" or "mimeType": "image/svg+xml"). Another image asset named "ports" is recommended for Device Types which will be configured with Label. If "ports" asset is available, it will be shown in network configuration UI.
peripherals Configurable peripherals. Currently, there is only "ethernet".
capabilities Optional Object which consist of four flags used for customization of the new edge device creation wizard.

Ethernet Configuration

Field Description
configurationTypes Array which may contain "map", "macAddress". Detailed information can be found below.
numberOfPorts Number of Ethernet ports which can be configured in the UI.
hintMessage Optional customized message for network interfaces to provide information on the IED onboarding UI.

Capabilities Configuration

Field Description
network Boolean used to determine whether to configure Network Interfaces.
ntp Boolean used to determine whether to configure NTP Server.
proxy Boolean used to determine whether to configure Proxy.
docker0-config Boolean used to determine whether to configure Docker Internal Network.

Device Types configured with "MAC Address"

If macAddress is the only option for configurationTypes as the following example shows, network interfaces can be configured by the corresponding MAC address in the UI.

    "ethernet": {
        "configurationTypes": ["macAddress"],
        "numberOfPorts": 2
    }

Configure Network Interface by MAC Adress

Device Types configured with "Label"

NOTICE

To be able to configure a network interface via a label, the Industrial Edge Device Kit version must be 1.6.0-6 or higher.

If you want to configure your devices with a network label, you must provide "map" in the device description:

    "ethernet": {
        "configurationTypes": ["map"],
        "numberOfPorts": 2,
        "map": [{
            "label": "<device_network_label_1>",
            "interface-name": "<corresponding_interface_name_1>"
        }, {
            "label": "<device_network_label_2>",
            "interface-name": "<corresponding_interface_name_2>"
        }]
    }

You can use the "ip link" command to display network interfaces on a Linux device.

ip link command

So, if the ethernet configuration is:

    "ethernet": {
        "configurationTypes": ["map"],
        "numberOfPorts": 2,
        "map": [{
            "label": "Interface A",
            "interface-name": "enp0s3"
        }, {
            "label": "Interface B",
                "interface-name": "enp0s8"
        }]
    }

then the corresponding network configuration UI will be as follows:

Configure Network Interface Label

Device Types configured with both "MAC Address" and "Label"

You can also configure network interfaces using both MAC address and labels

    "ethernet": {
        "configurationTypes": ["macAddress","map"],
        "numberOfPorts": 3,
        "map": [{
            "label": "X1",
            "interface-name": "eno1"
        }, {
            "label": "X2",
                "interface-name": "eno2"
        }, {
            "label": "X3",
                "interface-name": "eno3"
        }]
    }

So, you will be able to select between MAC and Label:

Configure Network Interface Both

Device Types without a Network Interface Configuration

configurationTypes can be an empty array, if the network interface configuration is not needed:

    "configurationTypes": [],

Then, you will not be able to configure any network interface.

No Network Interface Configuration