Перейти к основному содержимому

WSDL

Протокол WSDL: Спецификация и использование в сетях видеонаблюдения

WSDL (Web Services Description Language) – это язык описания веб-сервисов, основанный на XML, который позволяет определить структуру взаимодействия между клиентом и сервером через SOAP-протокол. В контексте сетей видеонаблюдения и мультимедийных систем WSDL играет важную роль при интеграции различных устройств и платформ, обеспечивая унифицированный способ обмена данными между ними.

Основные компоненты WSDL:

  1. Типы данных (Types): Определяет типы данных, используемые в сообщениях.
  2. Сообщения (Messages): Описывает формат сообщений, передаваемых между клиентом и сервером.
  3. Операции (Operations): Содержит информацию о том, какие операции могут выполняться сервисом.
  4. Привязки (Bindings): Указывает конкретный транспортный протокол (например, HTTP), используемый для передачи сообщений.
  5. Сервисы (Services): Включает информацию о конечных точках сервиса, где клиент может получить доступ к сервису.

Применение WSDL в системах видеонаблюдения

В современных системах видеонаблюдения все чаще используются IP-камеры и другие устройства, работающие через стек протоколов TCP/IP. Одним из стандартов, обеспечивающим взаимодействие таких устройств, является ONVIF (Open Network Video Interface Forum). Этот стандарт определяет набор интерфейсов для управления устройствами видеонаблюдения, включая обнаружение устройств, управление потоками видео, PTZ-функциями и другими параметрами.

ONVIF использует WSDL для описания возможностей устройств и сервисов, предоставляемых ими. Например, WSDL-документ для камеры может содержать информацию о поддерживаемых функциях (потоки видео, управление PTZ, получение метаданных и т.п.), а также адреса конечных точек для доступа к этим функциям.

Обнаружение IP-камер с использованием протокола WSDL

Одним из ключевых аспектов работы с системами видеонаблюдения является обнаружение подключенных устройств. Для этого часто используют механизм WS-Discovery, который позволяет устройствам автоматически объявлять о своем присутствии в сети. Однако, после обнаружения устройства необходимо узнать, какие сервисы оно предоставляет. Именно тут вступает в игру WSDL.

Рассмотрим пример использования программы Onvif Device Manager, которая помогает управлять устройствами, совместимыми с ONVIF. После того как устройство обнаружено, программа загружает WSDL-документы, чтобы понять, какие функции доступны у данного устройства.

Пример кода на Python для получения списка сервисов от устройства с использованием библиотеки wsdl:

import requests
from zeep import Client

# URL WSDL документа устройства
wsdl_url = 'http://192.168.0.100/onvif/device_service?wsdl'

client = Client(wsdl=wsdl_url)
services = client.service.GetServices()

for service in services:
print(f"{service.Name}: {service.XAddr}")

Этот код загружает WSDL-документ с устройства по указанному URL и получает список доступных сервисов вместе с их адресами.

Примеры сервисов, описываемых в WSDL для видеокамер

  1. Device Management Service: Управление устройством, такие как изменение настроек, перезагрузка и обновление прошивки.

    <operation name="GetDeviceInformation">
    <input message="tns:GetDeviceInformationRequest"/>
    <output message="tns:GetDeviceInformationResponse"/>
    </operation>
  2. Media Service: Управление медиапотоками, такими как получение списка потоков, настройка параметров потока и управление PTZ.

    <operation name="GetProfiles">
    <input message="tns:GetProfilesRequest"/>
    <output message="tns:GetProfilesResponse"/>
    </operation>
  3. PTZ Service: Управление функциями панорамирования, наклона и масштабирования камеры.

    <operation name="ContinuousMove">
    <input message="tns:ContinuousMoveRequest"/>
    <output message="tns:ContinuousMoveResponse"/>
    </operation>

Эти примеры показывают, как WSDL описывает различные операции, доступные для выполнения на устройстве, и каким образом они могут быть вызваны клиентами.