goonvif

package module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2020 License: MIT Imports: 14 Imported by: 0

README

Goonvif

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

Установка

Для установки библиотеки необходимо воспользоваться утилитой go get:

go get github.com/newmind/goonvif

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

Следующие сервисы полностью реализованы:

  • Device
  • Media
  • PTZ
  • Imaging

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

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

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

dev, err := goonvif.NewDevice("192.168.13.42:1234")

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

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

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

device := onvif.NewDevice("192.168.13.42:1234")
device.Authenticate("username", "password")
Определение типов данных

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

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

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

На рисунке ниже показана документация функции GetCapabilities. Видно, что функция принимает один пареметр Category и его значение должно быть одно из следующих: 'All', 'Analytics', 'Device', 'Events', 'Imaging', 'Media' или 'PTZ'.

Device GetCapabilities

Пример определения типа данных функции GetServiceCapabilities сервиса PTZ:

ptzCapabilities := PTZ.GetServiceCapabilities{}

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

PTZ GetServiceCapabilities

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

Пример оределения типа данных функции CreateUsers сервиса Device:

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

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

Device CreateUsers

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

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

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

Documentation

Overview

package goonvif is developed to provide an ONVIF client implementation on Go programming language

Index

Constants

This section is empty.

Variables

View Source
var Xlmns = map[string]string{
	"onvif":   "http://www.onvif.org/ver10/schema",
	"tds":     "http://www.onvif.org/ver10/device/wsdl",
	"trt":     "http://www.onvif.org/ver10/media/wsdl",
	"tev":     "http://www.onvif.org/ver10/events/wsdl",
	"tptz":    "http://www.onvif.org/ver20/ptz/wsdl",
	"timg":    "http://www.onvif.org/ver20/imaging/wsdl",
	"tan":     "http://www.onvif.org/ver20/analytics/wsdl",
	"xmime":   "http://www.w3.org/2005/05/xmlmime",
	"wsnt":    "http://docs.oasis-open.org/wsn/b-2",
	"xop":     "http://www.w3.org/2004/08/xop/include",
	"wsa":     "http://www.w3.org/2005/08/addressing",
	"wstop":   "http://docs.oasis-open.org/wsn/t-1",
	"wsntw":   "http://docs.oasis-open.org/wsn/bw-2",
	"wsrf-rw": "http://docs.oasis-open.org/wsrf/rw-2",
	"wsaw":    "http://www.w3.org/2006/05/addressing/wsdl",
}

Functions

func GetAvailableDevicesAtSpecificEthernetInterface

func GetAvailableDevicesAtSpecificEthernetInterface(interfaceName string) []device

func NewDevice

func NewDevice(xaddr string) (*device, error)

NewDevice function construct a ONVIF Device entity

Types

type DeviceType

type DeviceType int
const (
	NVD DeviceType = iota
	NVS
	NVA
	NVT
)

func (DeviceType) String

func (devType DeviceType) String() string

Directories

Path Synopsis
xsd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL