README.md modified

This commit is contained in:
yakovlevdmv
2018-04-07 19:31:25 +03:00
parent 7b29927a99
commit bb10a669f7
2 changed files with 38 additions and 9 deletions

View File

@@ -4,7 +4,7 @@
- Media
- Imaging
- PTZ
- Video Analytics
- Analytics
# Dependencies
[etree](https://github.com/beevik/etree)
# Установка
@@ -31,15 +31,14 @@ dev, err := goonvif.NewDevice("192.168.13.42:80")
вернет нулевой объект камеры и ошибку:
> camera is not available at 192.168.13.42:80 or it does not support ONVIF services
Модернизируем код, чтобы обрабатывать ошибку и получим:
Модернизируем код, добавив обработку ошибки, и получим:
```
dev, err := goonvif.NewDevice("192.168.13.42:80")
if err != nil {
panic(err)
}
///Работа с камерой
dev, err := goonvif.NewDevice("192.168.13.42:80")
if err != nil {
panic(err)
}
///Работа с камерой
```
### Поддерживаемые ONVIF сервисы
Теперь, когда камера доступна, можно приступать к работе с ней. Однако стандарт ONVIF имеет множество сервисов, точка доступа (endpoint) к которым не закреплена стандартом (кроме DeviceManagment: http://onvif_host/onvif/device_service).
@@ -48,4 +47,34 @@ dev, err := goonvif.NewDevice("192.168.13.42:80")
Однако данная библиотека автоматизирует данный процесс, поэтому при создании объекта device при помощи `func NewDevice(xaddr string) (*device, error)`
библиотека одновременно обрабатывает поддерживаемые камерой сервисы. Таким образом чтобы получить поддерживаемые устройством сервисы, можно воспользоваться двумя путями:
1. Вызвать метод GetCapabilities сервиса DeviceManagement(как это сделать будет рассмотрено дальше) и обработать ответ.
2. Довериться библиотеке и вызвать функцию `func (dev *device)GetServices() map[string]string`, которая вернет map[string]string, ключом которой является название сервиса, а значением - endpoint данного сервиса
2. Довериться библиотеке и вызвать функцию `func (dev *device)GetServices() map[string]string`, которая вернет map[string]string, ключом которой является название сервиса, а значением - endpoint данного сервиса
### Работка с камерой
Для работы с различными сервисами камерами необходимо отправить корректный SOAP запрос, в теле которого находится вызываемый метод и принимаемые им функции.
**Goonvif** берет на себя работу по созданию корректного SOAP запроса и его отправке. В **Goonvif** определены структуры, для каждой функции каждого (поддерживаемого данной бибилиотекой) сервиса ONVIF:
- [DeviceManagement Service](Device/types.go)
- [Media Service] (Media/types.go)
- [Imaging Service] (Imaging/types.go)
- [PTZ Service] (PTZ/types.go)
- [Analytics Service] (Analytics/types.go)
[Список всех сервисов стандарта (и документация к ним)] (https://www.onvif.org/profiles/specifications/)
Рассмторим, как организована отправка запросов в **Goonvif** на нескольких примерах.
1. Метод GetCapabilities сервиса DeviceManagement
Все необходимые типы данных определены в пакете [Device](Device/types.go).
В файле (https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl) можно увидеть:
![GetCapabilities](img/exmp_GetCapabilities.png)
Таким образом, Функция GetCapabilities принимает в качестве аргумента перечисление:
`enum { 'All', 'Analytics', 'Device', 'Events', 'Imaging', 'Media', 'PTZ' }`
Чтобы вызвать данный метод создадим объект `Device.GetCapabilities`:
```
capabilities := Device.GetCapabilities{Category:"All"}
```
Для вызова данной функции воспользуемся методом `func (dev device) CallMethod(method interface{}) (string, error)`:
```
resp, err := dev.CallMethod(capab)
if err != nil {
log.Println(err)
} else {
fmt.Println(resp)
}
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB