ZoneMinder ONVIF support Copyright (C) 2016 Jan M. Hochstein This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -------------------------------------------------------------------------- 1. PURPOSE ---------- The files in this folder and its subfolders add ONVIF support to zoneminder. The ONVIF consortium (www.onvif.org) publishes the ONVIF specifications. These specifications describe ways of connecting to and communicating with network video devices. Hardware and software that adhere to these specifications are meant to be interoperable. 2. SUBFOLDERS ------------- doc/ - Documentation modules/ - perl modules necessary for SOAP communication proxy/ - perl SOAP proxy modules generated according to the ONVIF specifications scripts/ - application logic wsdl/ - (empty) this is only used during the proxy generation process 3. LICENSE ---------- Any files in this folder and its subfolders are published under the same license as this file if they do not carry additional license information. 4. PROXY GENERATION ------------------- SOAP messages use XML format and need to comply to the schema expected by the receiver. While it is possible to build messages through string concatenation it is impractical for all but testing purposes. Here we use SOAP proxy modules generated by the script wsdl2perl.pl from the SOAP::WSDL module (http://search.cpan.org/~mkutter/SOAP-WSDL-2.00.10/) version 2.00.10. A - Get the input files. Download these files and any web service (.wsdl) or schema (.xsd) files referenced therein into the wsdl/ subfolder. http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl The complete list of files we have during build is: analytics.wsdl b-2.xsd bf-2.xsd br-2.xsd brw-2.wsdl bw-2.wsdl devicemgmt.wsdl media.wsdl onvif.xsd ptz.wsdl r-2.xsd rw-2.wsdl soap-envelop.xsd t-1.xsd wsdd-discovery-1.1-schema-os.xsd wsdd-discovery-1.1-wsdl-os.wsdl wsdiscovery-udp.wsdl wsdl11soap12.xsd wsdl.xsd wsnotification.wsdl xmlmime.xsd xop-include.xsd B - Generate the proxy modules using these commands. wsdl2perl.pl -p ONVIF::Device:: -b proxy/lib file:wsdl/devicemgmt.wsdl wsdl2perl.pl -p ONVIF::Media:: -b proxy/lib file:wsdl/media.wsdl wsdl2perl.pl -p ONVIF::PTZ:: -b proxy/lib file:wsdl/ptz.wsdl wsdl2perl.pl -p ONVIF::Event:: -b proxy/lib file:wsdl/event.wsdl wsdl2perl.pl -p ONVIF::Analytics:: -b proxy/lib file:wsdl/analytics.wsdl wsdl2perl.pl -p WSDiscovery:: -b proxy/lib file:wsdl/wsdiscovery-udp.wsdl wsdl2perl.pl -p WSNotification:: -b proxy/lib file:wsdl/wsnotification.wsdl I had to tweak SOAP::WSDL a little bit to get correct proxies.