Клиент событий в «бесконечном» HTTP-соединении для 1С: Предприятие 8

Native Компонента в отдельном потоке обрабатывает пакеты событий, в «бесконечном» http соединении и передаёт данные в очередь внешних событий.

Пригодится для прослушивания событий серверов видеонаблюдения, СКУД и др. которые предоставляют доступ к событиям по http протоколу, в "бесконечном" соединении.

Для подключения к серверу, компоненте передаём строку запроса типа

МояКомпонента.Connect("http://192.168.60.11:8080/event?login=misha&password=383D802A4C84AF5AC3719276218CC918&filter=c9d6d086-c965-4cf8-aef6-85b3894e3a4a&responsetype=json"), компонента передаёт её на сервер событий и ожидает собственно события от него, получив его в 1С обработке генерирует ВнешнееСобытие куда передаёт данные принятые от сервера.

1. Подключаем внешнюю компоненту к обработке:

АдресВоВременномХранилище = неопределено;
МояКомпонента = Неопределено;
ПодключениеВыполнено = Ложь;
МакетОбработки = ПолучитьМакет("ВнешняяКомпонента");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(МакетОбработки, Новый УникальныйИдентификатор);
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(АдресВоВременномХранилище,"VIDEO" ,ТипВнешнейКомпоненты.Native);

Если   ПодключениеВыполнено Тогда
МояКомпонента = Новый ("AddIn.VIDEO.AddInNativeEvents");
Иначе
КонецЕсли;

2. Передаём строку адреса сервера с параметрами (HTTP API сервера к которому подключаемся):

МояКомпонента.Connect("http://192.168.60.11:8080/event?login=misha&password=383D802A4C84AF5AC3719276218BB918&filter=c9d6d086-c965-4cf8-aef6-85b3894e3a4a&responsetype=json");

3. Описываем обработку внешнего события:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "AddInNativeEvents" Тогда
Попытка

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Данные);
Событие = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();

Если Событие.EventId <> "e9e7a69c-7ee2-3fee-a530-9f8a88124fcc" Тогда

Сообщить(Событие.Timestamp+" "+Событие.ChannelId+" "+Событие.ChannelName+" "+Событие.Numberplate+" "+Событие.direction[0]);
КонецЕсли;
Исключение
Сообщить("Ошибка чтения JSON");
КонецПопытки;

КонецЕсли;
КонецПроцедуры

4. При закрытии завершаем работу компоненты:

МояКомпонента.Disable();

Протестировано на:

1С Предприятие 8.3.10

5 Comments

  1. sergvagner2018

    (0) а где такое на практике у себя применяли?

    Очень интересно было бы про опыт услышать.

    Reply
  2. starovton

    (1)Есть сервер видеонаблюдения Macroscop, у него есть HTTP API, он клиенту отсылает chanked пакеты в которых описывает события которые произошли ( распознание номера, распознание лица и т.д.) по этим событиям обработка 1С формирует картинку для охранников.

    Reply
  3. sergvagner2018

    (2) технологично!

    Reply
  4. Matematik

    Судя по параметрам вы конкретно событие распознавание автомобильного номера запрашиваете. Изображение с данной камеры в виде стоп-кадра за этот момент времени получали?

    Reply
  5. starovton

    Нет не получал, но по событию, можно запросить у сервера архив распознанных номеров

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *