2. Создание класса устройства
Класс устройства − класс, описывающий Устройство, его свойства и функции в системе.
С помощью класса устройства в системе будут разделены по общим признакам: например, устройства по измерению температуры будут отнесены к одному классу, а устройства по реагированию на тревожные события − к другому классу. К одному классу может быть отнесено множество устройств.
Свойства устройства характеризуются параметрами атрибут или телеметрия.
- Атрибут − это признак устройства, по которому с устройством можно взаимодействовать.
- Телеметрия − данные, которые получены от устройства с заданной периодичностью времени. К функциям относятся операции, которые воздействуют на устройство.
Для создания класса устройства используйте метод POST /front-api-srv/api/v1.0/class
, при этом:
Укажите атрибут, по которому будет идентифицировано устройство при подключении к платформе. Этим атрибутом может быть уникальный заводской параметр устройства или параметр, заданный на устройстве вручную. В примере тела запроса ниже для этой цели указан атрибут "token".
В теле запроса укажите другие параметры и значения, характеризующие класс устройства:
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
thingType | body | string | + | Тип вещи, на которую создается модель. Enum: ["DEVICE", "ASSET"] | DEVICE |
protocol | body | string | + | Протокол класса устройства. Указывается только для классов устройств. Enum: ["MQTT", "COAP", "HTTP", "NIDD", "MQTT_GATEWAY"]. В зависимости от выбранного протокола создаваемый класс отнаследуется от одноимённого абстрактного системного протокольного класса | MQTT |
name | body | string | + | Наименование класса | УСПД |
supportsUnspecifiedProperties | body | bool | + | Определяет, является ли класс абстрактным* | true |
properties | body | array of objects | - | Свойства вещи | - |
functionalities | body | array of objects | - | Функциональность | - |
* - Устройства абстрактных классов не проверяются относительно атрибутивной схемы: то есть, могут быть добавлены параметры, отсутствующие в модели — Платформа автоматически определит и запишет тип данных. При этом отсутствует возможность использования данных классов в настройках модулей платформы (Rule Engine, Script Executor и так далее).
object "properties"
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
name | body | string | + | Наименование свойства | token |
propertyType | body | string | + | Тип свойства. Enum: ["TELEMETRY", "ATTRIBUTE"] | ATTRIBUTE |
namespace | body | string | - | Пространство имен свойства. Обязателен к заполнению для классов, у которых thingType = "DEVICE" и propertyType = "ATTRIBUTE". Возможные значения:
| SERVER |
required | body | bool | + | Признак обязательности заполнения свойства у вещи | true |
dataType | body | string | + | Тип данных свойства. Возможные значения:
| STRING_VARIABLE |
meta | body | array of objects | - | Метаданные свойства | - |
object "meta"
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
name | body | string | + | Название метаданных | - |
metaType | body | string | + | Тип метаданных. Возможные значения:
| - |
value | body | string | + | Комментарий к метаданным. Заполняется только для metaType == SYSTEM_TAG или USER_TAG. При metaType ==SYSTEM_TAG можно заполнять только следующими значениями: TOKEN | - |
value | body | object | + | Описание словаря на основании которых заполняются метаданные. Передается объектом только для metaType = DICTIONARY_VALUE_TAG или DICTIONARY_TAG | - |
object "meta.value"
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
dictionaryId | body | string | + | Наименование справочника | - |
valueId | body | string | - | Идентификатор значения справочника | - |
object "functionalities"
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
name | body | string | + | Наименование функциональности | - |
funcType | body | string | + | Тип функциональности ENUM: ["CONTROLLING", "MEASURING"] | - |
commands | body | array of objects | - | Команды | - |
object "commands"
Параметр | Тип | Тип данных | Обяз. | Описание | Пример |
---|---|---|---|---|---|
name | body | string | + | Наименование команды | - |
commandType | body | string | + | Тип команды. ENUM: ["INPUT", "OUTPUT"] | - |
params** | body | array of objects | - | Параметры команды | - |
** − object "params" в описании object "properties".
Пример тела запроса:
{
"thingType": "DEVICE",
"protocol": "MQTT",
"name": "УСПД",
"supportsUnspecifiedProperties": true,
"properties": [
{
"name": "token",
"propertyType": "ATTRIBUTE",
"required": true,
"dataType": "STRING_VARIABLE",
"namespace": "SERVER",
"meta": []
}
],
"functionalities": []
}
После успешного выполнения запроса будет получен ответ о сохранении записи, который содержит сохраненные данные класса устройства, а также сформированный идентификатор устройства в системе classId. Значение данного параметра необходимо для прохождения следующих шагов процесса.
В случае ошибки обработки запроса в ответе будет получен код ошибки, по которому можно определить ее характер и устранить возможную проблему.
Пример ответа:
{
"id": "00d00000-0ed0-0a0f-beb0-df0b000a0000",
"thingType": "DEVICE",
"name": "УСПД",
"system": false,
"properties": [
{
"id": "00000000-f0cf-00e0-0fdc-c00ba0fcae00",
"name": "token",
"propertyType": "ATTRIBUTE",
"namespace": "SERVER",
"required": true,
"dataType": "STRING_VARIABLE",
"meta": []
}
],
"refs": [
{
"id": "00f00a00-e00f-0a00-af0a-c0af00e0ff00",
"refType": "TENANT",
"extId": "00000fec-000b-0000-a000-ec0b00f0f0e0"
}
],
"functionalities": [],
"assetIds": [],
"propagateUpdateOfProperties": [],
"protocol": "MQTT",
"abstract": false,
"extends": "33333333-3333-3333-3333-333333333333",
"supportsUnspecifiedProperties": true
}