1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dzhw0314-onvif

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 23:34 9078538

Протокол ONVIF

Простое управление IP-камерами и другими устройствами, поддерживающими стандарт ONVIF, с помощью реализации протокола ONVIF. Цель этой библиотеки — удобное и простое управление IP-камерами и прочими устройствами, которые поддерживают стандарт ONVIF.

Установка

Чтобы установить библиотеку, используйте команду go get:

go get gitee.com/dzhw0314/onvif

Поддерживаемые сервисы

Реализованы следующие сервисы:

  • Device;
  • Media;
  • PTZ;
  • Imaging;
  • Event;
  • Discovery;
  • Auth (More Options);
  • Soap.

Использование

Общая концепция

  1. Подключение к устройству.
  2. Аутентификация (при необходимости).
  3. Определение типов данных.
  4. Выполнение необходимого метода.

Подключение к устройству

Если в сети есть устройство по адресу 192.168.13.42, а его сервисы ONVIF используют порт 1234, то вы можете подключиться к устройству следующим образом:

dev, err := onvif.NewDevice(onvif.DeviceParams{Xaddr: "192.168.13.42:1234"})

Порт ONVIF может отличаться в зависимости от устройства. Чтобы узнать, какой порт использовать, можно перейти в веб-интерфейс устройства. Обычно это порт 80.

Аутентификация

Если какая-либо функция сервисов ONVIF требует аутентификации, необходимо использовать метод Authenticate.

device := onvif.NewDevice(onvif.DeviceParams{Xaddr: "192.168.13.42:1234", Username: "username", Password: password})

Определение типов данных

Каждый сервис ONVIF в этой библиотеке имеет свой пакет, в котором определены все типы данных этого сервиса, и имя пакета совпадает с именем сервиса и начинается с заглавной буквы. В onvif определены структуры для каждой функции каждого сервиса ONVIF, поддерживаемого этой библиотекой. Определите тип данных функции GetCapabilities сервиса Device. Это делается следующим образом:

capabilities := device.GetCapabilities{Category:"All"}

Почему структура GetCapabilities имеет поле Category и почему значение этого поля равно All?

На рисунке ниже показана документация для GetCapabilities (https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl). Видно, что функция принимает один параметр Category, и его значение должно быть одним из следующих: «All», «Analytics», «Device», «Events», «Imaging», «Media» или «PTZ».

Пример определения типа данных функции GetServiceCapabilities в PTZ (https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl):

ptzCapabilities := ptz.GetServiceCapabilities{}

На рисунке ниже показано, что GetServiceCapabilities не принимает никаких аргументов.

Общие типы данных находятся в пакете xsd/onvif. Типы данных (структуры), которые могут использоваться всеми сервисами, определены в пакете onvif.

Пример того, как определить тип данных функции CreateUsers в Devicemgmt (https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl):

createUsers := device.CreateUsers{User: onvif.User{Username:"admin", Password:"qwerty", UserLevel:"User"}}

На рисунке ниже видно, что в этом примере поле CreateUsers структуры должно быть полем User, тип данных которого — структура User, содержащая поля Username, Password, UserLevel и необязательное поле Extension. Структура User находится в пакете onvif.

Выполнение необходимого метода

Для выполнения любой функции одного из сервисов ONVIF, структура которого была определена, необходимо использовать CallMethod объекта устройства.

createUsers := device.CreateUsers{User: onvif.User{Username:"admin", Password:"qwerty", UserLevel:"User"}}
device := onvif.NewDevice(onvif.DeviceParams{Xaddr: "192.168.13.42:1234", Username: "username", Password: password})
device.Authenticate("username", "password")
resp, err := dev.CallMethod(createUsers)

Большое спасибо

Улучшено и дополнено на основе goonvif.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dzhw0314-onvif.git
git@api.gitlife.ru:oschina-mirror/dzhw0314-onvif.git
oschina-mirror
dzhw0314-onvif
dzhw0314-onvif
master