Skip to content
На этой странице:

2. Создание класса устройства

Класс устройства − класс, описывающий Устройство, его свойства и функции в системе.

С помощью класса устройства в системе будут разделены по общим признакам: например, устройства по измерению температуры будут отнесены к одному классу, а устройства по реагированию на тревожные события − к другому классу. К одному классу может быть отнесено множество устройств.

Свойства устройства характеризуются параметрами атрибут или телеметрия.

  • Атрибут − это признак устройства, по которому с устройством можно взаимодействовать.
  • Телеметрия − данные, которые получены от устройства с заданной периодичностью времени. К функциям относятся операции, которые воздействуют на устройство.

Для создания класса устройства используйте метод POST /front-api-srv/api/v1.0/class, при этом:

  • Укажите атрибут, по которому будет идентифицировано устройство при подключении к платформе. Этим атрибутом может быть уникальный заводской параметр устройства или параметр, заданный на устройстве вручную. В примере тела запроса ниже для этой цели указан атрибут "token".

  • В теле запроса укажите другие параметры и значения, характеризующие класс устройства:

ПараметрТипТип данныхОбяз.ОписаниеПример
thingTypebodystring+Тип вещи, на которую создается модель. Enum: ["DEVICE", "ASSET"]DEVICE
protocolbodystring+Протокол класса устройства. Указывается только для классов устройств. Enum: ["MQTT", "COAP", "HTTP", "NIDD", "MQTT_GATEWAY"]. В зависимости от выбранного протокола создаваемый класс отнаследуется от одноимённого абстрактного системного протокольного классаMQTT
namebodystring+Наименование классаУСПД
supportsUnspecifiedPropertiesbodybool+Определяет, является ли класс абстрактным*true
propertiesbodyarray of objects-Свойства вещи-
functionalitiesbodyarray of objects-Функциональность-

* - Устройства абстрактных классов не проверяются относительно атрибутивной схемы: то есть, могут быть добавлены параметры, отсутствующие в модели — Платформа автоматически определит и запишет тип данных. При этом отсутствует возможность использования данных классов в настройках модулей платформы (Rule Engine, Script Executor и так далее).

object "properties"

ПараметрТипТип данныхОбяз.ОписаниеПример
namebodystring+Наименование свойстваtoken
propertyTypebodystring+Тип свойства. Enum: ["TELEMETRY", "ATTRIBUTE"]ATTRIBUTE
namespacebodystring-Пространство имен свойства. Обязателен к заполнению для классов, у которых thingType = "DEVICE" и propertyType = "ATTRIBUTE".
Возможные значения:
  • "CLIENT" (доступен для изменения устройствам клиента)
  • "SERVER" (доступен для изменения клиенту платформы через интерфейс платформы)
  • "SHARED" (нет ограничений на то, кто изменяет)
SERVER
requiredbodybool+Признак обязательности заполнения свойства у вещиtrue
dataTypebodystring+Тип данных свойства. Возможные значения:
  • "LONG_VARIABLE"
  • "BOOLEAN_VARIABLE"
  • "DOUBLE_VARIABLE"
  • "STRING_VARIABLE"
  • "DATETIME_VARIABLE"
  • "TUPLE_VARIABLE"
  • "ARRAY_VARIABLE"
  • "LONG_CONST"
  • "BOOLEAN_CONST"
  • "DOUBLE_CONST"
  • "STRING_CONST"
  • "DATETIME_CONST"
  • "TUPLE_CONST"
STRING_VARIABLE
metabodyarray of objects-Метаданные свойства-

object "meta"

ПараметрТипТип данныхОбяз.ОписаниеПример
namebodystring+Название метаданных-
metaTypebodystring+Тип метаданных.
Возможные значения:
  • "SYSTEM_TAG" − системные теги, определяющие логику работы с устройством. Для данного "metaType" значения "value" выбираются только из списка
  • "USER_TAG" − пользовательские теги. Значения "value" заполняются на усмотрение пользователя
  • "DICTIONARY_TAG" − тип метаданных, позволяющий заполнять свойство только значениями согласно заранее созданному словарю
  • "DICTIONARY_VALUE_TAG" − тип метаданных, позволяющий заполнить свойство выбранным значением из словаря
-
valuebodystring+Комментарий к метаданным. Заполняется только для metaType == SYSTEM_TAG или USER_TAG.
При metaType ==SYSTEM_TAG можно заполнять только следующими значениями: TOKEN
-
valuebodyobject+Описание словаря на основании которых заполняются метаданные. Передается объектом только для metaType = DICTIONARY_VALUE_TAG или DICTIONARY_TAG-

object "meta.value"

ПараметрТипТип данныхОбяз.ОписаниеПример
dictionaryIdbodystring+Наименование справочника-
valueIdbodystring-Идентификатор значения справочника-

object "functionalities"

ПараметрТипТип данныхОбяз.ОписаниеПример
namebodystring+Наименование функциональности-
funcTypebodystring+Тип функциональности ENUM: ["CONTROLLING", "MEASURING"]-
commandsbodyarray of objects-Команды-

object "commands"

ПараметрТипТип данныхОбяз.ОписаниеПример
namebodystring+Наименование команды-
commandTypebodystring+Тип команды. ENUM: ["INPUT", "OUTPUT"]-
params**bodyarray of objects-Параметры команды-

** − object "params" в описании object "properties".

Пример тела запроса:

json
{
    "thingType": "DEVICE",
    "protocol": "MQTT",
    "name": "УСПД",
    "supportsUnspecifiedProperties": true,
    "properties": [
        {
            "name": "token",
            "propertyType": "ATTRIBUTE",
            "required": true,
            "dataType": "STRING_VARIABLE",
            "namespace": "SERVER",
            "meta": []
        }
    ],
    "functionalities": []
}

После успешного выполнения запроса будет получен ответ о сохранении записи, который содержит сохраненные данные класса устройства, а также сформированный идентификатор устройства в системе classId. Значение данного параметра необходимо для прохождения следующих шагов процесса.

В случае ошибки обработки запроса в ответе будет получен код ошибки, по которому можно определить ее характер и устранить возможную проблему.

Пример ответа:

json
{
    "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
}