Сервис управления приборами учета 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