<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Techy Things &#187; onvif</title>
	<atom:link href="https://tech.yipp.ca/category/onvif/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.yipp.ca</link>
	<description>Just another Yipp.ca Blogs site</description>
	<lastBuildDate>Thu, 01 May 2025 18:06:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Milestone XProtect Integration of ONVIF device</title>
		<link>https://tech.yipp.ca/onvif/milestone-integration-onvif-device/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=milestone-integration-onvif-device</link>
		<comments>https://tech.yipp.ca/onvif/milestone-integration-onvif-device/#comments</comments>
		<pubDate>Sat, 24 Aug 2019 01:11:39 +0000</pubDate>
		<dc:creator><![CDATA[frank]]></dc:creator>
				<category><![CDATA[onvif]]></category>

		<guid isPermaLink="false">http://tech.yipp.ca/?p=3223</guid>
		<description><![CDATA[<p>Knowledge How to work with Milestone XProtect Device must conform to both versions 1.01 and 1.02 of the ONVIF standard. Supports ONVIF v2.6, Profile S and Profile G Camera clock and surveillance server are date/time synchronized.&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/onvif/milestone-integration-onvif-device/">Milestone XProtect Integration of ONVIF device</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>Knowledge</h2>
<p>How to work with Milestone XProtect</p>
<ul>
<li><span class="uiOutputText" dir="ltr">Device must conform to </span><b><span class="uiOutputText" dir="ltr">both</span></b><span class="uiOutputText" dir="ltr"> versions 1.01 and 1.02 of the ONVIF standard.</span></li>
<li><span class="uiOutputText" dir="ltr">Supports ONVIF v2.6, Profile S and Profile G</span></li>
<li><span class="uiOutputText" dir="ltr">Camera clock and surveillance server are date/time synchronized.<br />
</span></li>
</ul>
<p>&lt;&lt; Conformance to profiles is the only way that ensures compatibility between ONVIF conformant products; therefore, only <a href="http://www.onvif.org/conformant-products/">registered products</a> with conformance to a profile are considered to be ONVIF conformant. &gt;&gt; -- https://www.onvif.org/profiles/ https://www.onvif.org/about/member-list/</p>
<h2>My Open Threads</h2>
<p><a href="https://supportcommunity.milestonesys.com/s/question/0D50O00005bUSTT/device-works-in-onvif-test-tool-but-not-in-milestone-xprotect" target="_blank">https://supportcommunity.milestonesys.com/s/question/0D50O00005bUSTT/device-works-in-onvif-test-tool-but-not-in-milestone-xprotect</a></p>
<p><a href="https://supportcommunity.milestonesys.com/s/question/0D50O00005YcxPNSAZ/how-to-debug-nonplaying-udprtp-video-stream-" target="_blank">https://supportcommunity.milestonesys.com/s/question/0D50O00005YcxPNSAZ/how-to-debug-nonplaying-udprtp-video-stream-</a></p>
<h2>Debugging</h2>
<h3>Logs location</h3>
<p>C:\ProgramData\Milestone\XProtect Recording Server\Logs</p>
<p><strong>DeviceHandling.log</strong> is an interesting one. Unfortunately Milestone error entries in the logs are not very verbose.</p>
<p>&nbsp;</p>
<h2>Problem Appearing Often</h2>
<h3> "<strong>Camera 1  Device communication error (NoDataException). Error: GetMediaDataBlock returned no data."</strong></h3>
<p>&nbsp;</p>
<h2>Interesting Articles</h2>
<p>https://developer.milestonesys.com/s/article/ONVIF-compliant-camera-cannot-be-added-or-will-not-stream-video-to-XProtect-software</p>
<p>https://stackoverflow.com/questions/44286363/onvif-getstreamuri-returns-internal-ip-address</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span class="uiOutputText" dir="ltr">I wish </span><b><span class="uiOutputText" dir="ltr">ONVIF </span></b><span class="uiOutputText" dir="ltr">were as simple as many Chinese brand seem to believe, but Milestone (being a partner of the ONVIF consortium) have a few more requirements:</span></p>
<ul>
<li><span class="uiOutputText" dir="ltr">Device must conform to </span><b><span class="uiOutputText" dir="ltr">both</span></b><span class="uiOutputText" dir="ltr"> versions 1.01 and 1.02 of the ONVIF standard.</span></li>
<li><span class="uiOutputText" dir="ltr">Supports ONVIF v2.6, Profile S and Profile G</span></li>
<li><span class="uiOutputText" dir="ltr">Camera clock and surveillance server are date/time synchronized.</span></li>
</ul>
<p><span class="uiOutputText" dir="ltr">Checking the device on the </span><a class="cuf-url forceOutputURL" title="" href="https://www.onvif.org/conformant-products/" data-value="https://www.onvif.org/conformant-products/">https://www.onvif.org/conformant-products/</a><span class="uiOutputText" dir="ltr"> even the brand is not listed, which can be regarded as the first requirement.</span></p>
<p><span class="uiOutputText" dir="ltr"> </span></p>
<p><span class="uiOutputText" dir="ltr">However, it should be possible to add using the Milestone </span><i><span class="uiOutputText" dir="ltr">Universal driver</span></i><span class="uiOutputText" dir="ltr">. You will need the URL:</span></p>
<p><a class="cuf-url forceOutputURL" title="" href="https://www.ispyconnect.com/man.aspx?n=Knewmart" data-value="https://www.ispyconnect.com/man.aspx?n=Knewmart">https://www.ispyconnect.com/man.aspx?n=Knewmart</a></p>
<p><span class="uiOutputText" dir="ltr"> </span></p>
<p><span class="uiOutputText" dir="ltr">Here's the article to </span><a class="cuf-url forceOutputURL" title="" href="https://supportcommunity.milestonesys.com/s/article/Use-and-configure-the-Universal-Driver" data-value="https://supportcommunity.milestonesys.com/s/article/Use-and-configure-the-Universal-Driver">https://supportcommunity.milestonesys.com/s/article/Use-and-configure-the-Universal-Driver</a></p>
<p><span class="uiOutputText" dir="ltr"> </span></p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/onvif/milestone-integration-onvif-device/">Milestone XProtect Integration of ONVIF device</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tech.yipp.ca/onvif/milestone-integration-onvif-device/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic Discovery with ONVIF and gSOAP</title>
		<link>https://tech.yipp.ca/onvif/automatic-discovery-onvif-gsoap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automatic-discovery-onvif-gsoap</link>
		<comments>https://tech.yipp.ca/onvif/automatic-discovery-onvif-gsoap/#comments</comments>
		<pubDate>Thu, 11 Apr 2019 21:05:15 +0000</pubDate>
		<dc:creator><![CDATA[frank]]></dc:creator>
				<category><![CDATA[onvif]]></category>

		<guid isPermaLink="false">http://tech.yipp.ca/?p=3317</guid>
		<description><![CDATA[<p>The Behavior PROBE: The camera manager app sends an UDP broadcast message on a multicast IP 239.255.255.250 port 3702. This message is referred to as the "Probe" request. PROBEMATCHES: Each camera devices that have received&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/onvif/automatic-discovery-onvif-gsoap/">Automatic Discovery with ONVIF and gSOAP</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>The Behavior</h2>
<p>PROBE: The camera manager app sends an UDP broadcast message on a multicast IP <strong>239.255.255.250 </strong>port<strong> 3702</strong>. This message is referred to as the "Probe" request.</p>
<p>PROBEMATCHES: Each camera devices that have received the UDP message responds directly on a one-by-one basis to the IP of the sender of the <em>Probe</em> message.</p>
<p>HELLO:</p>
<p>BYE:</p>
<h2>The Implementation</h2>
<p>I found it hard to integrate the ws-discovery within the onvif application due to difference in header files and colliding wsdl files and the need to manually edit a .h before running some steps that are usually automated.</p>
<p>So I will make a separate ws-discovery app.</p>
<p>&nbsp;</p>
<ul>
<li>include <code>gsoap/plugin/wsddapi.h</code> in your source code;</li>
<li>compile <code>gsoap/plugin/wsddapi.c</code> with your ONVIF application.</li>
</ul>
<h2>Windows Implementation Example for Testing / Debugging</h2>
<p>https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/WebServicesDevicesApi/WSDiscovery/cpp/Client</p>
<h2>Problems</h2>
<h3>UDP Multicast Broadcast not working on Windows 10</h3>
<p>https://stackoverflow.com/questions/43475468/windows-python-udp-broadcast-blocked-no-firewall</p>
<p>&nbsp;</p>
<h3>Compile Problem #1</h3>
<p>$&gt; gsoap/src/soapcpp2 -c -L -x -S -d ./generated -I./gsoap-2.8/gsoap:./gsoap-2.8/gsoap/import generated/onvif.h</p>
<p>wsa5.h(279): *WARNING*: Duplicate declaration of 'SOAP_ENV__Fault' (already declared at line 264)</p>
<p>wsa5.h(289): **ERROR**: service operation name clash: struct/class 'SOAP_ENV__Fault' already declared at wsa.h:274</p>
<h3>Solution</h3>
<p>Change in your typemap.dat from</p>
<p>wsdd = &lt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01&gt;<br />
#wsdd5 = &lt;http://schemas.xmlsoap.org/ws/2005/04/discovery&gt;<br />
wsdd10 = &lt;http://schemas.xmlsoap.org/ws/2005/04/discovery&gt;</p>
<p>to</p>
<p>wsdd = &lt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01&gt;<br />
wsdd5 = &lt;http://schemas.xmlsoap.org/ws/2005/04/discovery&gt;<br />
#wsdd10 = &lt;http://schemas.xmlsoap.org/ws/2005/04/discovery&gt;</p>
<h2>Problem</h2>
<p>.2.1/build/OSCAR/output/libs -lmxsessmgr -lmxtools -lmxcfgfile -lcrypt -lhailogin -lmxclock -lmxfpga -lrt<br />
./src/ServiceDiscovery_debug.o:(.data+0x0): multiple definition of `namespaces'<br />
./src/onvif_srvd_debug.o:(.data+0x0): first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Hello':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1205: multiple definition of `__wsdd__Hello'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:42: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Bye':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1277: multiple definition of `__wsdd__Bye'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:47: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Probe':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1358: multiple definition of `__wsdd__Probe'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:51: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__ProbeMatches':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1427: multiple definition of `__wsdd__ProbeMatches'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:112: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Resolve':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1481: multiple definition of `__wsdd__Resolve'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:116: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__ResolveMatches':<br />
/home/flemieux/onvif/onvif-server/gsoap-2.8/gsoap/plugin/wsddapi.c:1558: multiple definition of `__wsdd__ResolveMatches'<br />
./src/ServiceDiscovery_debug.o:/home/flemieux/onvif/onvif-server/src/ServiceDiscovery.c:121: first defined here<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_Hello':<br />
wsddapi.c:(.text+0xe0): undefined reference to `soap_send___wsdd__Hello'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_Bye':<br />
wsddapi.c:(.text+0x22c): undefined reference to `soap_send___wsdd__Bye'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_Probe':<br />
wsddapi.c:(.text+0x384): undefined reference to `soap_send___wsdd__Probe'<br />
wsddapi.c:(.text+0x3f4): undefined reference to `soap_recv___wsdd__ProbeMatches'<br />
wsddapi.c:(.text+0x580): undefined reference to `wsdd_event_ProbeMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_Resolve':<br />
wsddapi.c:(.text+0x674): undefined reference to `soap_send___wsdd__Resolve'<br />
wsddapi.c:(.text+0x6e4): undefined reference to `soap_recv___wsdd__ResolveMatches'<br />
wsddapi.c:(.text+0x890): undefined reference to `wsdd_event_ResolveMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_ProbeMatches':<br />
wsddapi.c:(.text+0xbb4): undefined reference to `soap_send___wsdd__ProbeMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `soap_wsdd_ResolveMatches':<br />
wsddapi.c:(.text+0xd08): undefined reference to `soap_send___wsdd__ResolveMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Hello':<br />
wsddapi.c:(.text+0x19f0): undefined reference to `wsdd_event_Hello'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Bye':<br />
wsddapi.c:(.text+0x1d98): undefined reference to `wsdd_event_Bye'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Probe':<br />
wsddapi.c:(.text+0x1ffc): undefined reference to `wsdd_event_Probe'<br />
wsddapi.c:(.text+0x20b8): undefined reference to `soap_send___wsdd__ProbeMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__ProbeMatches':<br />
wsddapi.c:(.text+0x2344): undefined reference to `wsdd_event_ProbeMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__Resolve':<br />
wsddapi.c:(.text+0x2530): undefined reference to `wsdd_event_Resolve'<br />
wsddapi.c:(.text+0x25ec): undefined reference to `soap_send___wsdd__ResolveMatches'<br />
./gsoap-2.8/gsoap/plugin/wsddapi_debug.o: In function `__wsdd__ResolveMatches':<br />
wsddapi.c:(.text+0x2888): undefined reference to `wsdd_event_ResolveMatches'<br />
collect2: ld returned 1 exit status<br />
make: *** [onvif_srvd_debug] Error 1</p>
<h3>Solution</h3>
<p>TBD</p>
<h2>Problem</h2>
<p>multiple definition of `namespaces'</p>
<h3>Solution</h3>
<p>Change your makefile so the second generation contains both -pXYZ and -n such as :</p>
<p># this will also generate soapServer.c<br />
$(GENERATED_DIR)/soapC.c: $(GENERATED_DIR)/onvif.h<br />
$(SOAPCPP2) -c -L -x -S -d $(GENERATED_DIR) -I$(GSOAP_DIR):$(GSOAP_IMPORT_DIR) $&lt;</p>
<p># this will also generate wsddServer.c<br />
$(GENERATED_DIR)/wsddC.c: $(GENERATED_DIR)/onvif.h<br />
$(SOAPCPP2) -c -L -x -S -d $(GENERATED_DIR) <strong>-pwsdd -n</strong> -I$(GSOAP_DIR):$(GSOAP_IMPORT_DIR) $(GSOAP_IMPORT_DIR)/wsdd5.h $&lt;</p>
<h4>The wrong one that caused the problem</h4>
<p># this will also generate soapServer.c<br />
$(GENERATED_DIR)/soapC.c: $(GENERATED_DIR)/onvif.h<br />
$(SOAPCPP2) -c -L -x -S -d $(GENERATED_DIR) -I$(GSOAP_DIR):$(GSOAP_IMPORT_DIR) $&lt;</p>
<p># this will also generate wsddServer.c<br />
$(GENERATED_DIR)/wsddC.c: $(GENERATED_DIR)/onvif.h<br />
$(SOAPCPP2) -c -L -x -S -d $(GENERATED_DIR) <strong>-pwsdd</strong> -I$(GSOAP_DIR):$(GSOAP_IMPORT_DIR) $(GSOAP_IMPORT_DIR)/wsdd5.h $&lt;</p>
<p>&nbsp;</p>
<h2>Problems</h2>
<p>After adding $(GENERATED_DIR)/wsddC.c to the list of compiled sources, we get bunch of dupplicated linkage errors:</p>
<p>./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209262: first defined here<br />
./generated/wsddC_debug.o: In function `soap_out_wsa5__RelationshipTypeOpenEnum':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209270: multiple definition of `soap_out_wsa5__RelationshipTypeOpenEnum'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209270: first defined here<br />
./generated/wsddC_debug.o: In function `soap_put_wsa5__RelationshipTypeOpenEnum':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209281: multiple definition of `soap_put_wsa5__RelationshipTypeOpenEnum'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209281: first defined here<br />
./generated/wsddC_debug.o: In function `soap_get_wsa5__RelationshipTypeOpenEnum':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209288: multiple definition of `soap_get_wsa5__RelationshipTypeOpenEnum'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209288: first defined here<br />
./generated/wsddC_debug.o: In function `soap_put__QName':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209315: multiple definition of `soap_put__QName'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209315: first defined here<br />
./generated/wsddC_debug.o: In function `soap_get__QName':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209322: multiple definition of `soap_get__QName'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209322: first defined here<br />
./generated/wsddC_debug.o: In function `soap_new_string':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209349: multiple definition of `soap_new_string'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209349: first defined here<br />
./generated/wsddC_debug.o: In function `soap_put_string':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209358: multiple definition of `soap_put_string'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209358: first defined here<br />
./generated/wsddC_debug.o: In function `soap_get_string':<br />
/home/flemieux/onvif/onvif-server/generated/wsddC.c:209365: multiple definition of `soap_get_string'<br />
./generated/soapC_debug.o:/home/flemieux/onvif/onvif-server/generated/soapC.c:209365: first defined here<br />
collect2: ld returned 1 exit status<br />
make: *** [onvif_srvd_debug] Error 1<br />
$</p>
<h2>Support Threads</h2>
<p>https://supportcommunity.milestonesys.com/s/question/0D50O000049u3LTSAY/onvif-discovery-problem?t=1559148116669</p>
<p>https://supportcommunity.milestonesys.com/s/question/0D53X00005to9nVSAQ/how-to-fully-remove-a-device-from-xprotect-and-its-previous-settings</p>
<h2>References</h2>
<p>https://www.genivia.com/doc/wsdd/html/wsdd_0.html</p>
<p>https://sourceforge.net/p/gsoap2/bugs/999/</p>
<p>https://stackoverflow.com/questions/46076501/gsoap-onvif-and-discovery</p>
<p>https://stackoverflow.com/questions/27061083/onvif-ws-discover-1-0-client-and-event-handlers</p>
<p>https://github.com/mpromonet/ws-discovery/blob/master/gsoap/probe.cpp</p>
<p>https://github.com/johnnywww/nvtonvifserverc/blob/master/onvifHandleProbe.c</p>
<p>https://github.com/alb423/wsdiscovery/blob/master/mySoapStub.c</p>
<p>https://github.com/georgSquared/WS-Discovery</p>
<p>http://sett.com/ionelpop/onvif-gsoap-part-2-ws-discovery-file-generation</p>
<p>http://albert-oma.blogspot.com/2013/09/onvif-ws-discovery-implementation.html</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/onvif/automatic-discovery-onvif-gsoap/">Automatic Discovery with ONVIF and gSOAP</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tech.yipp.ca/onvif/automatic-discovery-onvif-gsoap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
