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}