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¶
- In the Management UI, navigate to Manage Device Types.
- Click Create New Device Type.
At this step, you are expected to provide a package which contains Device Type information.
The Device Type package is a .zip file which should contain the **device_description.json* and assets referred in the device_description.json. - Select the device package and click Upload.
After uploading the package, you should be able to see your new Device Type and its 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
}
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.
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:
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:
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.