Перейти к содержанию

Сервис управления приборами учета V1

Описание

Сервис предоставляет gRPC контракт для получения клиентом объектов сервиса Телеметрии и передачи обратно изменений их статусов.

Метод CommandStream

Метод CommandStream публикует объекты Телеметрии, которые описывают оборудование осуществляющее сбор показаний. Объекты публикуются при их создании и изменении в системе Телеметрии.
Основной объект (Device) описывает в зависимости от типа (DeviceType) счетчик (metering_device) или оборудование, необходимое для организации канала связи до счетчика, например, конвертор интерфейсов RS-485/Ethernet (interface_converter). Зависимость счетчика от оборудования связи представлена в виде стуктуры "родитель-потомок" (в поле parent_id содержится ссылка на родителя). Родителем выступает конечный(самый последний device), при этом, счетчик, будет самым последним потомком. Счетчик (metering_device) включает в себя Точку учета (Metric_Point) и массив Индикаторов (Indicator) - каналов измерения прибора учета.


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

Пример структуры:

stateDiagram
    Direction LR
    S1: metering_device
    S7: metering_device
    S5: metering_device
    S9: metering_device
    S2: interface_converter
    S3: m_bus_hub
    S4: metric_point
    S6: metric_point
    S8: metric_point
    S10: metric_point

        S1 --> S3
        S3 --> S2
        S5 --> S2
        S1 --> S4
        S5 --> S6
        S7 --> S1
        S7 --> S8
        S9 --> S10

Клиент, работающий с методом CommandStream и осуществляющий настройки приборов учета, должен отправлять изменившиеся статусы приборов учета в виде объектов ChangeDeviceStatusCommandRequest, в которых указать изменившийся статус прибора учета Device.StatusType

Статусная модель:

stateDiagram

    S1: UNKNOWN
    S2: RECEIVED
    S3: ACTIVE
    S4: WRONG
    S5: ARCHIVE
    state F <<choice>>
        [*] --> S1
        S5 --> [*]
        S1 --> S2
        S2 --> F
        F --> S3
        F --> S4
        S4 --> S2
        S3 --> S5

Предусмотрен технический вызов метода CommandStream с объектом Ping для поддержания соединения активным с целью избежать затрат на открытие нового соединения. Вызов оставлен на усмотрение клиента.

Метод GetDeviceListStream

Метод GetDeviceListStream служит для разовой выгрузки объектов Телеметрии для привязки в системе клиента. После получения объектов клиент должен отправить их статусы в метод CommandStream

Общая диаграмма процесса


sequenceDiagram

participant Device as Прибор учета
participant Client as Клиент
participant TelemetryControlService
participant TelemetryMetricsService

    alt
      TelemetryControlService ->> Client: создан Прибор учета
    else
      Client ->> TelemetryControlService: GetDeviceListStream
    end
    Client ->> Client: привязка к оборудованию
    alt Привязано успешно
      Client ->> TelemetryControlService: state Received
      Client ->> Client: настройка Прибора учета
      alt Настроено успешно
        Client ->> TelemetryControlService: state Active
        Client ->> TelemetryMetricsService: исторические показания
        Device ->> Client: показания Прибора учета
        Client ->> TelemetryMetricsService: показания
      else Настройка не удалась
        Client ->> TelemetryControlService: state Wrong
      end
    else Привязка не удалась
      Client ->> TelemetryControlService: state Wrong
    end

Ссылки