<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.staging.zoneminder.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Utahjarhead</id>
	<title>ZoneMinder Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.staging.zoneminder.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Utahjarhead"/>
	<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/Special:Contributions/Utahjarhead"/>
	<updated>2026-04-19T22:41:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=6039</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=6039"/>
		<updated>2013-12-28T04:34:12Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
If you want to limit the FPS just as it is set in the camera&amp;#039;s setup -&amp;gt; video -&amp;gt; FPS or if you want to control the FPS in the &amp;quot;Maximum FPS&amp;quot; and &amp;quot;Alarm Maximum FPS&amp;quot; in the zoneminder General tab, then you will need to use the video stream (video.cgi) and not the snapshot stream (/image/jpeg.cgi).&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-931L / DCS-933L=&lt;br /&gt;
[[Image:DCS931L.png]]&lt;br /&gt;
&lt;br /&gt;
This camera can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
=DCS-942L=&lt;br /&gt;
&lt;br /&gt;
Image capture works the same as 932L and /image/jpeg.cgi over HTTP.&lt;br /&gt;
RTSP stream works with MPEG streams (/3gpp by default)&lt;br /&gt;
RTSP H.264 streaming works if set as follows:&lt;br /&gt;
&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://&amp;lt;camera ip&amp;gt;:554/play2.sdp&lt;br /&gt;
&lt;br /&gt;
If the Zoneminder (1.25) monitor crashes every 10-30s (check your logs), set:&lt;br /&gt;
&lt;br /&gt;
 echo 536870912 &amp;gt;/proc/sys/kernel/shmmax&lt;br /&gt;
&lt;br /&gt;
from the wiki [[FAQ#What_does_a_.27Can.27t_shmget:_Invalid_argument.27_error_in_my_logs_mean.3F_and_my_cameras_won.27t_display_video_at_higher_resolutions.]]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DCS5020L, Name: DCS5020L, Can Wake, Can Sleep&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Note: Wake and Sleep functions are mapped to IR On/Off respectively.&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi while the accompanying video is at http://user:pass@ip.of.camera/dgvideo.cgi&lt;br /&gt;
# The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Debug qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; was replaced with &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Logger qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5983</id>
		<title>D-Link DCS-5020L Control Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5983"/>
		<updated>2013-11-19T01:46:21Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# =========================================================================r&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $&lt;br /&gt;
# Copyright (C) 2013 Art Scheel&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# This module contains the implementation of the D-Link DCS-5020L IP camera control&lt;br /&gt;
# protocol. &lt;br /&gt;
#&lt;br /&gt;
package ZoneMinder::Control::DCS5020L;&lt;br /&gt;
&lt;br /&gt;
use 5.006;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
require ZoneMinder::Base;&lt;br /&gt;
require ZoneMinder::Control;&lt;br /&gt;
&lt;br /&gt;
our @ISA = qw(ZoneMinder::Control);&lt;br /&gt;
&lt;br /&gt;
our $VERSION = $ZoneMinder::Base::VERSION;&lt;br /&gt;
&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# D-Link DCS-5020L Control Protocol&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
use ZoneMinder::Logger qw(:all);&lt;br /&gt;
use ZoneMinder::Config qw(:all);&lt;br /&gt;
&lt;br /&gt;
use Time::HiRes qw( usleep );&lt;br /&gt;
&lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
    my $class = shift;&lt;br /&gt;
    my $id = shift;&lt;br /&gt;
    my $self = ZoneMinder::Control-&amp;gt;new( $id );&lt;br /&gt;
    bless( $self, $class );&lt;br /&gt;
    srand( time() );&lt;br /&gt;
    return $self;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
our $AUTOLOAD;&lt;br /&gt;
&lt;br /&gt;
sub AUTOLOAD&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $class = ref($self) || croak( &amp;quot;$self not object&amp;quot; );&lt;br /&gt;
    my $name = $AUTOLOAD;&lt;br /&gt;
    $name =~ s/.*://;&lt;br /&gt;
    if ( exists($self-&amp;gt;{$name}) )&lt;br /&gt;
    {&lt;br /&gt;
        return( $self-&amp;gt;{$name} );&lt;br /&gt;
    }&lt;br /&gt;
    Fatal( &amp;quot;Can&amp;#039;t access $name member of object of class $class&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub open&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
&lt;br /&gt;
    $self-&amp;gt;loadMonitor();&lt;br /&gt;
&lt;br /&gt;
    use LWP::UserAgent;&lt;br /&gt;
    $self-&amp;gt;{ua} = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
    $self-&amp;gt;{ua}-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;open&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub close&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;closed&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub printMsg&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $msg = shift;&lt;br /&gt;
    my $msg_len = length($msg);&lt;br /&gt;
&lt;br /&gt;
    Debug( $msg.&amp;quot;[&amp;quot;.$msg_len.&amp;quot;]&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( POST=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/PANTILTCONTROL.CGI&amp;quot; );&lt;br /&gt;
    $req-&amp;gt;content($cmd);&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub sendCmd2&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/$cmd&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlDevice} );&lt;br /&gt;
&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ($res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed:&amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub move&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $dir = shift;&lt;br /&gt;
    my $panSteps = shift;&lt;br /&gt;
    my $tiltSteps = shift;&lt;br /&gt;
&lt;br /&gt;
    my $cmd = &amp;quot;PanSingleMoveDegree=$panSteps&amp;amp;TiltSingleMoveDegree=$tiltSteps&amp;amp;PanTiltSingleMove=$dir&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelUpLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 0, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 1, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelUpRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 2, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 3, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 5, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelDownLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 6, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 7, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRelDownRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 8, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# moves the camera to center on the point that the user clicked on in the video image. &lt;br /&gt;
# This isn&amp;#039;t extremely accurate but good enough for most purposes &lt;br /&gt;
sub moveMap&lt;br /&gt;
{&lt;br /&gt;
    # if the camera moves too much or too little, try increasing or decreasing this value&lt;br /&gt;
    my $f = 11;&lt;br /&gt;
&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $xcoord = $self-&amp;gt;getParam( $params, &amp;#039;xcoord&amp;#039; );&lt;br /&gt;
    my $ycoord = $self-&amp;gt;getParam( $params, &amp;#039;ycoord&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
    my $hor = $xcoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Width};&lt;br /&gt;
    my $ver = $ycoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Height};&lt;br /&gt;
   &lt;br /&gt;
    my $direction;&lt;br /&gt;
    my $horSteps;&lt;br /&gt;
    my $verSteps;&lt;br /&gt;
    if ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 0;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 2;&lt;br /&gt;
    } elsif ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 6;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 8;&lt;br /&gt;
    }&lt;br /&gt;
    my $v = int($verSteps + .5);&lt;br /&gt;
    my $h = int($horSteps + .5);&lt;br /&gt;
    Debug( &amp;quot;Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( $direction, $h, $v );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# this clear function works, but should probably be disabled because &lt;br /&gt;
# it isn&amp;#039;t possible to set presets yet. &lt;br /&gt;
sub presetClear&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Clear Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;ClearPosition=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# not working yet&lt;br /&gt;
sub presetSet&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Set Preset $preset&amp;quot; );&lt;br /&gt;
    # TODO need to first get current position $horPos and $verPos&lt;br /&gt;
    #my $cmd = &amp;quot;PanTiltHorizontal=$horPos&amp;amp;PanTiltVertical=$verPos&amp;amp;SetName=$preset&amp;amp;SetPosition=$preset&amp;quot;;&lt;br /&gt;
    #$self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub presetGoto&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Goto Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltPresetPositionMove=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub presetHome&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Home Preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltSingleMove=4&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub wake&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Wake - IR on&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;setDaynightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnight.htm&amp;amp;DayNightMode=3&amp;amp;ConfigDayNightMode=Save&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd2( $cmd );&lt;br /&gt;
}&lt;br /&gt;
sub sleep&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Sleep - IR off&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;setDaynightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnight.htm&amp;amp;DayNightMode=2&amp;amp;ConfigDayNightMode=Save&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd2( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
# Below is stub documentation for your module. You&amp;#039;d better edit it!&lt;br /&gt;
&lt;br /&gt;
=head1 NAME&lt;br /&gt;
&lt;br /&gt;
ZoneMinder::Database - Perl extension for DCS-5020L&lt;br /&gt;
&lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
  use ZoneMinder::Database;&lt;br /&gt;
  DLINK DCS-5020L&lt;br /&gt;
&lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
ZoneMinder driver for the D-Link consumer camera DCS-5020L.&lt;br /&gt;
&lt;br /&gt;
=head2 EXPORT&lt;br /&gt;
&lt;br /&gt;
None by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
&lt;br /&gt;
See if there are better instructions for the DCS-5020L at&lt;br /&gt;
http://www.zoneminder.com/wiki/index.php/Dlink&lt;br /&gt;
&lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
&lt;br /&gt;
Art Scheel &amp;lt;lt&amp;gt;ascheel (at) gmail&amp;lt;gt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=head1 COPYRIGHT AND LICENSE&lt;br /&gt;
&lt;br /&gt;
LGPLv3&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5982</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5982"/>
		<updated>2013-11-19T01:45:29Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-931L=&lt;br /&gt;
[[Image:DCS931L.png]]&lt;br /&gt;
&lt;br /&gt;
This camera can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-942L=&lt;br /&gt;
&lt;br /&gt;
Image capture works the same as 932L and /image/jpeg.cgi over HTTP.&lt;br /&gt;
RTSP stream works with MPEG streams (/3gpp by default)&lt;br /&gt;
RTSP H.264 streaming works if set as follows:&lt;br /&gt;
&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://&amp;lt;camera ip&amp;gt;:554/play2.sdp&lt;br /&gt;
&lt;br /&gt;
If the Zoneminder (1.25) monitor crashes every 10-30s (check your logs), set:&lt;br /&gt;
&lt;br /&gt;
 echo 536870912 &amp;gt;/proc/sys/kernel/shmmax&lt;br /&gt;
&lt;br /&gt;
from the wiki [[FAQ#What_does_a_.27Can.27t_shmget:_Invalid_argument.27_error_in_my_logs_mean.3F_and_my_cameras_won.27t_display_video_at_higher_resolutions.]]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DCS5020L, Name: DCS5020L, Can Wake, Can Sleep&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Note: Wake and Sleep functions are mapped to IR On/Off respectively.&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
# The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Debug qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; was replaced with &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Logger qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5981</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5981"/>
		<updated>2013-11-19T00:53:05Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-931L=&lt;br /&gt;
[[Image:DCS931L.png]]&lt;br /&gt;
&lt;br /&gt;
This camera can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-942L=&lt;br /&gt;
&lt;br /&gt;
Image capture works the same as 932L and /image/jpeg.cgi over HTTP.&lt;br /&gt;
RTSP stream works with MPEG streams (/3gpp by default)&lt;br /&gt;
RTSP H.264 streaming works if set as follows:&lt;br /&gt;
&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://&amp;lt;camera ip&amp;gt;:554/play2.sdp&lt;br /&gt;
&lt;br /&gt;
If the Zoneminder (1.25) monitor crashes every 10-30s (check your logs), set:&lt;br /&gt;
&lt;br /&gt;
 echo 536870912 &amp;gt;/proc/sys/kernel/shmmax&lt;br /&gt;
&lt;br /&gt;
from the wiki [[FAQ#What_does_a_.27Can.27t_shmget:_Invalid_argument.27_error_in_my_logs_mean.3F_and_my_cameras_won.27t_display_video_at_higher_resolutions.]]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DCS5020L, Name: DCS5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
# The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Debug qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; was replaced with &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Logger qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
URLs not yet implemented in the script.  For use with IR Night Mode control:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://192.168.1.100/setDayNightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnght.htm&amp;amp;DayNightMode=0&amp;amp;ConfigDayNightMode=Save		Auto&lt;br /&gt;
http://192.168.1.100/setDayNightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnght.htm&amp;amp;DayNightMode=1&amp;amp;ConfigDayNightMode=Save		Manual&lt;br /&gt;
http://192.168.1.100/setDayNightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnght.htm&amp;amp;DayNightMode=2&amp;amp;ConfigDayNightMode=Save		Always Day mode&lt;br /&gt;
http://192.168.1.100/setDayNightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnght.htm&amp;amp;DayNightMode=3&amp;amp;ConfigDayNightMode=Save		Always Night Mode&lt;br /&gt;
http://192.168.1.100/setDayNightMode?ReplySuccessPage=night.htm&amp;amp;ReplyErrorPage=errrnght.htm&amp;amp;DayNightMode=4&amp;amp;ConfigDayNightMode=Save		Day Mode Schedule&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5980</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5980"/>
		<updated>2013-11-19T00:12:27Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-931L=&lt;br /&gt;
[[Image:DCS931L.png]]&lt;br /&gt;
&lt;br /&gt;
This camera can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-942L=&lt;br /&gt;
&lt;br /&gt;
Image capture works the same as 932L and /image/jpeg.cgi over HTTP.&lt;br /&gt;
RTSP stream works with MPEG streams (/3gpp by default)&lt;br /&gt;
RTSP H.264 streaming works if set as follows:&lt;br /&gt;
&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://&amp;lt;camera ip&amp;gt;:554/play2.sdp&lt;br /&gt;
&lt;br /&gt;
If the Zoneminder (1.25) monitor crashes every 10-30s (check your logs), set:&lt;br /&gt;
&lt;br /&gt;
 echo 536870912 &amp;gt;/proc/sys/kernel/shmmax&lt;br /&gt;
&lt;br /&gt;
from the wiki [[FAQ#What_does_a_.27Can.27t_shmget:_Invalid_argument.27_error_in_my_logs_mean.3F_and_my_cameras_won.27t_display_video_at_higher_resolutions.]]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DCS5020L, Name: DCS5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
# The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Debug qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; was replaced with &amp;quot;&amp;lt;tt&amp;gt;use ZoneMinder::Logger qw(:all);&amp;lt;/tt&amp;gt;&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5874</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5874"/>
		<updated>2013-09-22T18:27:30Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DLink-DCS5020L, Name: DCS-5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DLink-DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
# For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
# An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
# Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
# The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;use ZoneMinder::Debug qw(:all);&amp;quot; was replaced with &amp;quot;use ZoneMinder::Logger qw(:all);&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5873</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5873"/>
		<updated>2013-09-22T18:26:26Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5010L and DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L and DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png|left|DCS5010L]]&lt;br /&gt;
[[Image:DCS5020Lfront.png|DCS5020L]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The features and firmware of both of these models are identical excepting that the DCS-5020L has a wifi repeater built in, which does not affect the video capabilities of the camera.  These cameras can do up to 30 fps with MJPEG.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties on the camera, click on setup, then video.  Here you can adjust settings for mjpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DLink-DCS5020L, Name: DCS-5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DLink-DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
 For PTZ control, the user/pass combination must be an administrator on the camera. A regular view-only user will not work.&lt;br /&gt;
&lt;br /&gt;
 An unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw . Haven&amp;#039;t worked out how to get it working in zoneminder yet.&lt;br /&gt;
&lt;br /&gt;
 Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
 The DCS-5020L script was based on the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  &amp;quot;use ZoneMinder::Debug qw(:all);&amp;quot; was replaced with &amp;quot;use ZoneMinder::Logger qw(:all);&amp;quot; for zoneminder 1.25 compatibility.&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5871</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5871"/>
		<updated>2013-09-22T03:40:53Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
There is an unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw .  I haven&amp;#039;t quite worked out how to get it into zoneminder.&lt;br /&gt;
&lt;br /&gt;
Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
Note:  passwords are limited to 8 characters or less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pan/Tilt can be used from within zoneminder using the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  However, one line must be modified for zoneminder 1.25.0.  The line&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Debug qw(:all);&lt;br /&gt;
&lt;br /&gt;
must be replaced with&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Logger qw(:all);&lt;br /&gt;
&lt;br /&gt;
Then the script will work as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for control capabilities:&lt;br /&gt;
&lt;br /&gt;
 Main:  Type: Remote, Protocol: TVIP400, name it DCS-5010L&lt;br /&gt;
 Move:  Can move, can move diagonally, can move mapped, can move relative&lt;br /&gt;
 Pan:  Can pan, min pan step 1, max pan step 30&lt;br /&gt;
 Tilt:  Can tilt, min tilt step 1, max tilt step 30&lt;br /&gt;
 Presets:  Has presets, number 24, has home preset&lt;br /&gt;
&lt;br /&gt;
Settings for control:&lt;br /&gt;
&lt;br /&gt;
 Controllable, control type DCS-5010L, control address user:pass@ipaddress  &lt;br /&gt;
 (note:  user/pass &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be an administrator, a regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5020Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using the control script linked below.  No alterations need to be made.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
[[D-Link DCS-5020L Control Script]]&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DLink-DCS5020L, Name: DCS-5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DLink-DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
NOTE: user/pass combination must be an administrator on the camera.  A regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5870</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5870"/>
		<updated>2013-09-22T03:39:55Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
There is an unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw .  I haven&amp;#039;t quite worked out how to get it into zoneminder.&lt;br /&gt;
&lt;br /&gt;
Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
Note:  passwords are limited to 8 characters or less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pan/Tilt can be used from within zoneminder using the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  However, one line must be modified for zoneminder 1.25.0.  The line&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Debug qw(:all);&lt;br /&gt;
&lt;br /&gt;
must be replaced with&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Logger qw(:all);&lt;br /&gt;
&lt;br /&gt;
Then the script will work as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for control capabilities:&lt;br /&gt;
&lt;br /&gt;
 Main:  Type: Remote, Protocol: TVIP400, name it DCS-5010L&lt;br /&gt;
 Move:  Can move, can move diagonally, can move mapped, can move relative&lt;br /&gt;
 Pan:  Can pan, min pan step 1, max pan step 30&lt;br /&gt;
 Tilt:  Can tilt, min tilt step 1, max tilt step 30&lt;br /&gt;
 Presets:  Has presets, number 24, has home preset&lt;br /&gt;
&lt;br /&gt;
Settings for control:&lt;br /&gt;
&lt;br /&gt;
 Controllable, control type DCS-5010L, control address user:pass@ipaddress  &lt;br /&gt;
 (note:  user/pass &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be an administrator, a regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5020Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using [[D-Link DCS-5020L Control Script|this control script]].  No alterations need to be made.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DLink-DCS5020L, Name: DCS-5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DLink-DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
&lt;br /&gt;
NOTE: user/pass combination must be an administrator on the camera.  A regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5869</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5869"/>
		<updated>2013-09-22T03:39:34Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
There is an unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw .  I haven&amp;#039;t quite worked out how to get it into zoneminder.&lt;br /&gt;
&lt;br /&gt;
Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
Note:  passwords are limited to 8 characters or less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pan/Tilt can be used from within zoneminder using the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  However, one line must be modified for zoneminder 1.25.0.  The line&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Debug qw(:all);&lt;br /&gt;
&lt;br /&gt;
must be replaced with&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Logger qw(:all);&lt;br /&gt;
&lt;br /&gt;
Then the script will work as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for control capabilities:&lt;br /&gt;
&lt;br /&gt;
 Main:  Type: Remote, Protocol: TVIP400, name it DCS-5010L&lt;br /&gt;
 Move:  Can move, can move diagonally, can move mapped, can move relative&lt;br /&gt;
 Pan:  Can pan, min pan step 1, max pan step 30&lt;br /&gt;
 Tilt:  Can tilt, min tilt step 1, max tilt step 30&lt;br /&gt;
 Presets:  Has presets, number 24, has home preset&lt;br /&gt;
&lt;br /&gt;
Settings for control:&lt;br /&gt;
&lt;br /&gt;
 Controllable, control type DCS-5010L, control address user:pass@ipaddress  &lt;br /&gt;
 (note:  user/pass &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be an administrator, a regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5020Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using [[D-Link DCS-5020L Control Script|this control script]].  No alterations need to be made.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
 Main: Type: Remote, Protocol: DLink-DCS5020L, Name: DCS-5020L&lt;br /&gt;
 Move: Can Move, Can Move Diagonally, Can Move Mapped, Can Move Relative&lt;br /&gt;
 Pan: Can Pan, Min Pan Step 1, Max Pan Step 30&lt;br /&gt;
 Tilt: Can Tilt, Min Tilt Step 1, Max Pan Step 30&lt;br /&gt;
 Presets: Has Presets, Number: 24, Has Home Preset&lt;br /&gt;
&lt;br /&gt;
Settings for Control Tab:&lt;br /&gt;
&lt;br /&gt;
 Controllable, Control Type: DLink-DCS5020L, Control address: user:pass@ipaddress&lt;br /&gt;
 NOTE: user/pass combination must be an administrator on the camera.  A regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5868</id>
		<title>D-Link DCS-5020L Control Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5868"/>
		<updated>2013-09-22T03:36:46Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# =========================================================================r&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# This module contains the implementation of the D-Link DCS-5020L IP camera control&lt;br /&gt;
# protocol. &lt;br /&gt;
#&lt;br /&gt;
package ZoneMinder::Control::DLink-DCS5020L;&lt;br /&gt;
 &lt;br /&gt;
use 5.006;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
require ZoneMinder::Base;&lt;br /&gt;
require ZoneMinder::Control;&lt;br /&gt;
 &lt;br /&gt;
our @ISA = qw(ZoneMinder::Control);&lt;br /&gt;
 &lt;br /&gt;
our $VERSION = $ZoneMinder::Base::VERSION;&lt;br /&gt;
 &lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# D-Link DCS-5020L Control Protocol&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
 &lt;br /&gt;
use ZoneMinder::Logger qw(:all);&lt;br /&gt;
use ZoneMinder::Config qw(:all);&lt;br /&gt;
 &lt;br /&gt;
use Time::HiRes qw( usleep );&lt;br /&gt;
 &lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
    my $class = shift;&lt;br /&gt;
    my $id = shift;&lt;br /&gt;
    my $self = ZoneMinder::Control-&amp;gt;new( $id );&lt;br /&gt;
    bless( $self, $class );&lt;br /&gt;
    srand( time() );&lt;br /&gt;
    return $self;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
our $AUTOLOAD;&lt;br /&gt;
 &lt;br /&gt;
sub AUTOLOAD&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $class = ref($self) || croak( &amp;quot;$self not object&amp;quot; );&lt;br /&gt;
    my $name = $AUTOLOAD;&lt;br /&gt;
    $name =~ s/.*://;&lt;br /&gt;
    if ( exists($self-&amp;gt;{$name}) )&lt;br /&gt;
    {&lt;br /&gt;
        return( $self-&amp;gt;{$name} );&lt;br /&gt;
    }&lt;br /&gt;
    Fatal( &amp;quot;Can&amp;#039;t access $name member of object of class $class&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub open&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;loadMonitor();&lt;br /&gt;
 &lt;br /&gt;
    use LWP::UserAgent;&lt;br /&gt;
    $self-&amp;gt;{ua} = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
    $self-&amp;gt;{ua}-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;open&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub close&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;closed&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub printMsg&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $msg = shift;&lt;br /&gt;
    my $msg_len = length($msg);&lt;br /&gt;
 &lt;br /&gt;
    Debug( $msg.&amp;quot;[&amp;quot;.$msg_len.&amp;quot;]&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $result = undef;&lt;br /&gt;
 &lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( POST=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/PANTILTCONTROL.CGI&amp;quot; );&lt;br /&gt;
    $req-&amp;gt;content($cmd);&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
 &lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub move&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $dir = shift;&lt;br /&gt;
    my $panSteps = shift;&lt;br /&gt;
    my $tiltSteps = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $cmd = &amp;quot;PanSingleMoveDegree=$panSteps&amp;amp;TiltSingleMoveDegree=$tiltSteps&amp;amp;PanTiltSingleMove=$dir&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 0, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 1, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 2, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 3, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 5, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 6, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 7, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 8, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# moves the camera to center on the point that the user clicked on in the video image. &lt;br /&gt;
# This isn&amp;#039;t extremely accurate but good enough for most purposes &lt;br /&gt;
sub moveMap&lt;br /&gt;
{&lt;br /&gt;
    # if the camera moves too much or too little, try increasing or decreasing this value&lt;br /&gt;
    my $f = 11;&lt;br /&gt;
 &lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $xcoord = $self-&amp;gt;getParam( $params, &amp;#039;xcoord&amp;#039; );&lt;br /&gt;
    my $ycoord = $self-&amp;gt;getParam( $params, &amp;#039;ycoord&amp;#039; );&lt;br /&gt;
 &lt;br /&gt;
    my $hor = $xcoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Width};&lt;br /&gt;
    my $ver = $ycoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Height};&lt;br /&gt;
   &lt;br /&gt;
    my $direction;&lt;br /&gt;
    my $horSteps;&lt;br /&gt;
    my $verSteps;&lt;br /&gt;
    if ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 0;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 2;&lt;br /&gt;
    } elsif ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 6;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 8;&lt;br /&gt;
    }&lt;br /&gt;
    my $v = int($verSteps + .5);&lt;br /&gt;
    my $h = int($horSteps + .5);&lt;br /&gt;
    Debug( &amp;quot;Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( $direction, $h, $v );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# this clear function works, but should probably be disabled because &lt;br /&gt;
# it isn&amp;#039;t possible to set presets yet. &lt;br /&gt;
sub presetClear&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Clear Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;ClearPosition=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# not working yet&lt;br /&gt;
sub presetSet&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Set Preset $preset&amp;quot; );&lt;br /&gt;
    # TODO need to first get current position $horPos and $verPos&lt;br /&gt;
    #my $cmd = &amp;quot;PanTiltHorizontal=$horPos&amp;amp;PanTiltVertical=$verPos&amp;amp;SetName=$preset&amp;amp;SetPosition=$preset&amp;quot;;&lt;br /&gt;
    #$self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetGoto&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Goto Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltPresetPositionMove=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetHome&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Home Preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltSingleMove=4&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
# Below is stub documentation for your module. You&amp;#039;d better edit it!&lt;br /&gt;
 &lt;br /&gt;
=head1 NAME&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder::Database - Perl extension for DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
 &lt;br /&gt;
  use ZoneMinder::Database;&lt;br /&gt;
  DLINK DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder driver for the D-Link consumer camera DCS-5020L.&lt;br /&gt;
 &lt;br /&gt;
=head2 EXPORT&lt;br /&gt;
 &lt;br /&gt;
None by default.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
 &lt;br /&gt;
See if there are better instructions for the DCS-5020L at&lt;br /&gt;
http://www.zoneminder.com/wiki/index.php/Dlink&lt;br /&gt;
 &lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
 &lt;br /&gt;
Nobody&lt;br /&gt;
 &lt;br /&gt;
=head1 COPYRIGHT AND LICENSE&lt;br /&gt;
 &lt;br /&gt;
LGPLv3&lt;br /&gt;
 &lt;br /&gt;
=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5867</id>
		<title>D-Link DCS-5020L Control Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5867"/>
		<updated>2013-09-22T03:36:04Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# =========================================================================r&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# This module contains the implementation of the D-Link DCS-5020L IP camera control&lt;br /&gt;
# protocol. &lt;br /&gt;
#&lt;br /&gt;
package ZoneMinder::Control::DLink-DCS5020L;&lt;br /&gt;
 &lt;br /&gt;
use 5.006;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
require ZoneMinder::Base;&lt;br /&gt;
require ZoneMinder::Control;&lt;br /&gt;
 &lt;br /&gt;
our @ISA = qw(ZoneMinder::Control);&lt;br /&gt;
 &lt;br /&gt;
our $VERSION = $ZoneMinder::Base::VERSION;&lt;br /&gt;
 &lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# D-Link DCS-5020L Control Protocol&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
 &lt;br /&gt;
use ZoneMinder::Logger qw(:all);&lt;br /&gt;
use ZoneMinder::Config qw(:all);&lt;br /&gt;
 &lt;br /&gt;
use Time::HiRes qw( usleep );&lt;br /&gt;
 &lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
    my $class = shift;&lt;br /&gt;
    my $id = shift;&lt;br /&gt;
    my $self = ZoneMinder::Control-&amp;gt;new( $id );&lt;br /&gt;
    bless( $self, $class );&lt;br /&gt;
    srand( time() );&lt;br /&gt;
    return $self;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
our $AUTOLOAD;&lt;br /&gt;
 &lt;br /&gt;
sub AUTOLOAD&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $class = ref($self) || croak( &amp;quot;$self not object&amp;quot; );&lt;br /&gt;
    my $name = $AUTOLOAD;&lt;br /&gt;
    $name =~ s/.*://;&lt;br /&gt;
    if ( exists($self-&amp;gt;{$name}) )&lt;br /&gt;
    {&lt;br /&gt;
        return( $self-&amp;gt;{$name} );&lt;br /&gt;
    }&lt;br /&gt;
    Fatal( &amp;quot;Can&amp;#039;t access $name member of object of class $class&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub open&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;loadMonitor();&lt;br /&gt;
 &lt;br /&gt;
    use LWP::UserAgent;&lt;br /&gt;
    $self-&amp;gt;{ua} = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
    $self-&amp;gt;{ua}-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;open&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub close&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;closed&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub printMsg&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $msg = shift;&lt;br /&gt;
    my $msg_len = length($msg);&lt;br /&gt;
 &lt;br /&gt;
    Debug( $msg.&amp;quot;[&amp;quot;.$msg_len.&amp;quot;]&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $result = undef;&lt;br /&gt;
 &lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( POST=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/PANTILTCONTROL.CGI&amp;quot; );&lt;br /&gt;
    $req-&amp;gt;content($cmd);&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
 &lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub move&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $dir = shift;&lt;br /&gt;
    my $panSteps = shift;&lt;br /&gt;
    my $tiltSteps = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $cmd = &amp;quot;PanSingleMoveDegree=$panSteps&amp;amp;TiltSingleMoveDegree=$tiltSteps&amp;amp;PanTiltSingleMove=$dir&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 0, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 1, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 2, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 3, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 5, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 6, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 7, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 8, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# moves the camera to center on the point that the user clicked on in the video image. &lt;br /&gt;
# This isn&amp;#039;t extremely accurate but good enough for most purposes &lt;br /&gt;
sub moveMap&lt;br /&gt;
{&lt;br /&gt;
    # if the camera moves too much or too little, try increasing or decreasing this value&lt;br /&gt;
    my $f = 11;&lt;br /&gt;
 &lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $xcoord = $self-&amp;gt;getParam( $params, &amp;#039;xcoord&amp;#039; );&lt;br /&gt;
    my $ycoord = $self-&amp;gt;getParam( $params, &amp;#039;ycoord&amp;#039; );&lt;br /&gt;
 &lt;br /&gt;
    my $hor = $xcoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Width};&lt;br /&gt;
    my $ver = $ycoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Height};&lt;br /&gt;
   &lt;br /&gt;
    my $direction;&lt;br /&gt;
    my $horSteps;&lt;br /&gt;
    my $verSteps;&lt;br /&gt;
    if ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 0;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 2;&lt;br /&gt;
    } elsif ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 6;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 8;&lt;br /&gt;
    }&lt;br /&gt;
    my $v = int($verSteps + .5);&lt;br /&gt;
    my $h = int($horSteps + .5);&lt;br /&gt;
    Debug( &amp;quot;Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( $direction, $h, $v );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# this clear function works, but should probably be disabled because &lt;br /&gt;
# it isn&amp;#039;t possible to set presets yet. &lt;br /&gt;
sub presetClear&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Clear Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;ClearPosition=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# not working yet&lt;br /&gt;
sub presetSet&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Set Preset $preset&amp;quot; );&lt;br /&gt;
    # TODO need to first get current position $horPos and $verPos&lt;br /&gt;
    #my $cmd = &amp;quot;PanTiltHorizontal=$horPos&amp;amp;PanTiltVertical=$verPos&amp;amp;SetName=$preset&amp;amp;SetPosition=$preset&amp;quot;;&lt;br /&gt;
    #$self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetGoto&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Goto Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltPresetPositionMove=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetHome&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Home Preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltSingleMove=4&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
# Below is stub documentation for your module. You&amp;#039;d better edit it!&lt;br /&gt;
 &lt;br /&gt;
=head1 NAME&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder::Database - Perl extension for DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
 &lt;br /&gt;
  use ZoneMinder::Database;&lt;br /&gt;
  DLINK DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder driver for the D-Link consumer camera DCS-5020L.&lt;br /&gt;
 &lt;br /&gt;
=head2 EXPORT&lt;br /&gt;
 &lt;br /&gt;
None by default.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
 &lt;br /&gt;
See if there are better instructions for the DCS-5020L at&lt;br /&gt;
http://www.zoneminder.com/wiki/index.php/Dlink&lt;br /&gt;
 &lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
 &lt;br /&gt;
Art Scheel &amp;lt;lt&amp;gt;ascheel (at) gmail&amp;lt;gt&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=head1 COPYRIGHT AND LICENSE&lt;br /&gt;
 &lt;br /&gt;
LGPLv3&lt;br /&gt;
 &lt;br /&gt;
=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5866</id>
		<title>D-Link DCS-5020L Control Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5866"/>
		<updated>2013-09-22T03:35:42Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[code]&lt;br /&gt;
# =========================================================================r&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# This module contains the implementation of the D-Link DCS-5020L IP camera control&lt;br /&gt;
# protocol. &lt;br /&gt;
#&lt;br /&gt;
package ZoneMinder::Control::DLink-DCS5020L;&lt;br /&gt;
 &lt;br /&gt;
use 5.006;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
require ZoneMinder::Base;&lt;br /&gt;
require ZoneMinder::Control;&lt;br /&gt;
 &lt;br /&gt;
our @ISA = qw(ZoneMinder::Control);&lt;br /&gt;
 &lt;br /&gt;
our $VERSION = $ZoneMinder::Base::VERSION;&lt;br /&gt;
 &lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# D-Link DCS-5020L Control Protocol&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
 &lt;br /&gt;
use ZoneMinder::Logger qw(:all);&lt;br /&gt;
use ZoneMinder::Config qw(:all);&lt;br /&gt;
 &lt;br /&gt;
use Time::HiRes qw( usleep );&lt;br /&gt;
 &lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
    my $class = shift;&lt;br /&gt;
    my $id = shift;&lt;br /&gt;
    my $self = ZoneMinder::Control-&amp;gt;new( $id );&lt;br /&gt;
    bless( $self, $class );&lt;br /&gt;
    srand( time() );&lt;br /&gt;
    return $self;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
our $AUTOLOAD;&lt;br /&gt;
 &lt;br /&gt;
sub AUTOLOAD&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $class = ref($self) || croak( &amp;quot;$self not object&amp;quot; );&lt;br /&gt;
    my $name = $AUTOLOAD;&lt;br /&gt;
    $name =~ s/.*://;&lt;br /&gt;
    if ( exists($self-&amp;gt;{$name}) )&lt;br /&gt;
    {&lt;br /&gt;
        return( $self-&amp;gt;{$name} );&lt;br /&gt;
    }&lt;br /&gt;
    Fatal( &amp;quot;Can&amp;#039;t access $name member of object of class $class&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub open&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;loadMonitor();&lt;br /&gt;
 &lt;br /&gt;
    use LWP::UserAgent;&lt;br /&gt;
    $self-&amp;gt;{ua} = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
    $self-&amp;gt;{ua}-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;open&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub close&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;closed&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub printMsg&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $msg = shift;&lt;br /&gt;
    my $msg_len = length($msg);&lt;br /&gt;
 &lt;br /&gt;
    Debug( $msg.&amp;quot;[&amp;quot;.$msg_len.&amp;quot;]&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $result = undef;&lt;br /&gt;
 &lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( POST=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/PANTILTCONTROL.CGI&amp;quot; );&lt;br /&gt;
    $req-&amp;gt;content($cmd);&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
 &lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub move&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $dir = shift;&lt;br /&gt;
    my $panSteps = shift;&lt;br /&gt;
    my $tiltSteps = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $cmd = &amp;quot;PanSingleMoveDegree=$panSteps&amp;amp;TiltSingleMoveDegree=$tiltSteps&amp;amp;PanTiltSingleMove=$dir&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 0, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 1, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 2, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 3, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 5, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 6, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 7, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 8, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# moves the camera to center on the point that the user clicked on in the video image. &lt;br /&gt;
# This isn&amp;#039;t extremely accurate but good enough for most purposes &lt;br /&gt;
sub moveMap&lt;br /&gt;
{&lt;br /&gt;
    # if the camera moves too much or too little, try increasing or decreasing this value&lt;br /&gt;
    my $f = 11;&lt;br /&gt;
 &lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $xcoord = $self-&amp;gt;getParam( $params, &amp;#039;xcoord&amp;#039; );&lt;br /&gt;
    my $ycoord = $self-&amp;gt;getParam( $params, &amp;#039;ycoord&amp;#039; );&lt;br /&gt;
 &lt;br /&gt;
    my $hor = $xcoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Width};&lt;br /&gt;
    my $ver = $ycoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Height};&lt;br /&gt;
   &lt;br /&gt;
    my $direction;&lt;br /&gt;
    my $horSteps;&lt;br /&gt;
    my $verSteps;&lt;br /&gt;
    if ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 0;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 2;&lt;br /&gt;
    } elsif ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 6;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 8;&lt;br /&gt;
    }&lt;br /&gt;
    my $v = int($verSteps + .5);&lt;br /&gt;
    my $h = int($horSteps + .5);&lt;br /&gt;
    Debug( &amp;quot;Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( $direction, $h, $v );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# this clear function works, but should probably be disabled because &lt;br /&gt;
# it isn&amp;#039;t possible to set presets yet. &lt;br /&gt;
sub presetClear&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Clear Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;ClearPosition=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# not working yet&lt;br /&gt;
sub presetSet&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Set Preset $preset&amp;quot; );&lt;br /&gt;
    # TODO need to first get current position $horPos and $verPos&lt;br /&gt;
    #my $cmd = &amp;quot;PanTiltHorizontal=$horPos&amp;amp;PanTiltVertical=$verPos&amp;amp;SetName=$preset&amp;amp;SetPosition=$preset&amp;quot;;&lt;br /&gt;
    #$self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetGoto&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Goto Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltPresetPositionMove=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetHome&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Home Preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltSingleMove=4&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
# Below is stub documentation for your module. You&amp;#039;d better edit it!&lt;br /&gt;
 &lt;br /&gt;
=head1 NAME&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder::Database - Perl extension for DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
 &lt;br /&gt;
  use ZoneMinder::Database;&lt;br /&gt;
  DLINK DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder driver for the D-Link consumer camera DCS-5020L.&lt;br /&gt;
 &lt;br /&gt;
=head2 EXPORT&lt;br /&gt;
 &lt;br /&gt;
None by default.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
 &lt;br /&gt;
See if there are better instructions for the DCS-5020L at&lt;br /&gt;
http://www.zoneminder.com/wiki/index.php/Dlink&lt;br /&gt;
 &lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
 &lt;br /&gt;
Art Scheel &amp;lt;lt&amp;gt;ascheel (at) gmail&amp;lt;gt&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=head1 COPYRIGHT AND LICENSE&lt;br /&gt;
 &lt;br /&gt;
LGPLv3&lt;br /&gt;
 &lt;br /&gt;
=cut&lt;br /&gt;
[/code]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5865</id>
		<title>D-Link DCS-5020L Control Script</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link_DCS-5020L_Control_Script&amp;diff=5865"/>
		<updated>2013-09-22T03:35:28Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: Created page with &amp;quot;# =========================================================================r # # ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $ # # This progra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# =========================================================================r&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder D-Link DCS-5020L IP Control Protocol Module, $Date: $, $Revision: $&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# This module contains the implementation of the D-Link DCS-5020L IP camera control&lt;br /&gt;
# protocol. &lt;br /&gt;
#&lt;br /&gt;
package ZoneMinder::Control::DLink-DCS5020L;&lt;br /&gt;
 &lt;br /&gt;
use 5.006;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
 &lt;br /&gt;
require ZoneMinder::Base;&lt;br /&gt;
require ZoneMinder::Control;&lt;br /&gt;
 &lt;br /&gt;
our @ISA = qw(ZoneMinder::Control);&lt;br /&gt;
 &lt;br /&gt;
our $VERSION = $ZoneMinder::Base::VERSION;&lt;br /&gt;
 &lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# D-Link DCS-5020L Control Protocol&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
 &lt;br /&gt;
use ZoneMinder::Logger qw(:all);&lt;br /&gt;
use ZoneMinder::Config qw(:all);&lt;br /&gt;
 &lt;br /&gt;
use Time::HiRes qw( usleep );&lt;br /&gt;
 &lt;br /&gt;
sub new&lt;br /&gt;
{&lt;br /&gt;
    my $class = shift;&lt;br /&gt;
    my $id = shift;&lt;br /&gt;
    my $self = ZoneMinder::Control-&amp;gt;new( $id );&lt;br /&gt;
    bless( $self, $class );&lt;br /&gt;
    srand( time() );&lt;br /&gt;
    return $self;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
our $AUTOLOAD;&lt;br /&gt;
 &lt;br /&gt;
sub AUTOLOAD&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $class = ref($self) || croak( &amp;quot;$self not object&amp;quot; );&lt;br /&gt;
    my $name = $AUTOLOAD;&lt;br /&gt;
    $name =~ s/.*://;&lt;br /&gt;
    if ( exists($self-&amp;gt;{$name}) )&lt;br /&gt;
    {&lt;br /&gt;
        return( $self-&amp;gt;{$name} );&lt;br /&gt;
    }&lt;br /&gt;
    Fatal( &amp;quot;Can&amp;#039;t access $name member of object of class $class&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub open&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;loadMonitor();&lt;br /&gt;
 &lt;br /&gt;
    use LWP::UserAgent;&lt;br /&gt;
    $self-&amp;gt;{ua} = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
    $self-&amp;gt;{ua}-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
 &lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;open&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub close&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    $self-&amp;gt;{state} = &amp;#039;closed&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub printMsg&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $msg = shift;&lt;br /&gt;
    my $msg_len = length($msg);&lt;br /&gt;
 &lt;br /&gt;
    Debug( $msg.&amp;quot;[&amp;quot;.$msg_len.&amp;quot;]&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $result = undef;&lt;br /&gt;
 &lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
 &lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( POST=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/PANTILTCONTROL.CGI&amp;quot; );&lt;br /&gt;
    $req-&amp;gt;content($cmd);&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
 &lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub move&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $dir = shift;&lt;br /&gt;
    my $panSteps = shift;&lt;br /&gt;
    my $tiltSteps = shift;&lt;br /&gt;
 &lt;br /&gt;
    my $cmd = &amp;quot;PanSingleMoveDegree=$panSteps&amp;amp;TiltSingleMoveDegree=$tiltSteps&amp;amp;PanTiltSingleMove=$dir&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 0, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 1, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelUpRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 2, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 3, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 5, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 6, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 7, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub moveRelDownRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( 8, 1, 1 );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# moves the camera to center on the point that the user clicked on in the video image. &lt;br /&gt;
# This isn&amp;#039;t extremely accurate but good enough for most purposes &lt;br /&gt;
sub moveMap&lt;br /&gt;
{&lt;br /&gt;
    # if the camera moves too much or too little, try increasing or decreasing this value&lt;br /&gt;
    my $f = 11;&lt;br /&gt;
 &lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $xcoord = $self-&amp;gt;getParam( $params, &amp;#039;xcoord&amp;#039; );&lt;br /&gt;
    my $ycoord = $self-&amp;gt;getParam( $params, &amp;#039;ycoord&amp;#039; );&lt;br /&gt;
 &lt;br /&gt;
    my $hor = $xcoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Width};&lt;br /&gt;
    my $ver = $ycoord * 100 / $self-&amp;gt;{Monitor}-&amp;gt;{Height};&lt;br /&gt;
   &lt;br /&gt;
    my $direction;&lt;br /&gt;
    my $horSteps;&lt;br /&gt;
    my $verSteps;&lt;br /&gt;
    if ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 0;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;lt; 50) {&lt;br /&gt;
        # up right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = (50 - $ver) / $f;&lt;br /&gt;
        $direction = 2;&lt;br /&gt;
    } elsif ($hor &amp;lt; 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down left&lt;br /&gt;
        $horSteps = (50 - $hor) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 6;&lt;br /&gt;
    } elsif ($hor &amp;gt;= 50 &amp;amp;&amp;amp; $ver &amp;gt;= 50) {&lt;br /&gt;
        # down right&lt;br /&gt;
        $horSteps = ($hor - 50) / $f;&lt;br /&gt;
        $verSteps = ($ver - 50) / $f;&lt;br /&gt;
        $direction = 8;&lt;br /&gt;
    }&lt;br /&gt;
    my $v = int($verSteps + .5);&lt;br /&gt;
    my $h = int($horSteps + .5);&lt;br /&gt;
    Debug( &amp;quot;Move Map to $xcoord,$ycoord, hor=$h, ver=$v with direction $direction&amp;quot; );&lt;br /&gt;
    $self-&amp;gt;move( $direction, $h, $v );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# this clear function works, but should probably be disabled because &lt;br /&gt;
# it isn&amp;#039;t possible to set presets yet. &lt;br /&gt;
sub presetClear&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Clear Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;ClearPosition=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
# not working yet&lt;br /&gt;
sub presetSet&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Set Preset $preset&amp;quot; );&lt;br /&gt;
    # TODO need to first get current position $horPos and $verPos&lt;br /&gt;
    #my $cmd = &amp;quot;PanTiltHorizontal=$horPos&amp;amp;PanTiltVertical=$verPos&amp;amp;SetName=$preset&amp;amp;SetPosition=$preset&amp;quot;;&lt;br /&gt;
    #$self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetGoto&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $params = shift;&lt;br /&gt;
    my $preset = $self-&amp;gt;getParam( $params, &amp;#039;preset&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Goto Preset $preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltPresetPositionMove=$preset&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
sub presetHome&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Home Preset&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;PanTiltSingleMove=4&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
1;&lt;br /&gt;
__END__&lt;br /&gt;
# Below is stub documentation for your module. You&amp;#039;d better edit it!&lt;br /&gt;
 &lt;br /&gt;
=head1 NAME&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder::Database - Perl extension for DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
 &lt;br /&gt;
  use ZoneMinder::Database;&lt;br /&gt;
  DLINK DCS-5020L&lt;br /&gt;
 &lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
 &lt;br /&gt;
ZoneMinder driver for the D-Link consumer camera DCS-5020L.&lt;br /&gt;
 &lt;br /&gt;
=head2 EXPORT&lt;br /&gt;
 &lt;br /&gt;
None by default.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
 &lt;br /&gt;
See if there are better instructions for the DCS-5020L at&lt;br /&gt;
http://www.zoneminder.com/wiki/index.php/Dlink&lt;br /&gt;
 &lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
 &lt;br /&gt;
Art Scheel &amp;lt;lt&amp;gt;ascheel (at) gmail&amp;lt;gt&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=head1 COPYRIGHT AND LICENSE&lt;br /&gt;
 &lt;br /&gt;
LGPLv3&lt;br /&gt;
 &lt;br /&gt;
=cut&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5864</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5864"/>
		<updated>2013-09-22T03:32:39Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: /* DCS-5020L */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
There is an unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw .  I haven&amp;#039;t quite worked out how to get it into zoneminder.&lt;br /&gt;
&lt;br /&gt;
Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
Note:  passwords are limited to 8 characters or less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pan/Tilt can be used from within zoneminder using the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  However, one line must be modified for zoneminder 1.25.0.  The line&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Debug qw(:all);&lt;br /&gt;
&lt;br /&gt;
must be replaced with&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Logger qw(:all);&lt;br /&gt;
&lt;br /&gt;
Then the script will work as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for control capabilities:&lt;br /&gt;
&lt;br /&gt;
 Main:  Type: Remote, Protocol: TVIP400, name it DCS-5010L&lt;br /&gt;
 Move:  Can move, can move diagonally, can move mapped, can move relative&lt;br /&gt;
 Pan:  Can pan, min pan step 1, max pan step 30&lt;br /&gt;
 Tilt:  Can tilt, min tilt step 1, max tilt step 30&lt;br /&gt;
 Presets:  Has presets, number 24, has home preset&lt;br /&gt;
&lt;br /&gt;
Settings for control:&lt;br /&gt;
&lt;br /&gt;
 Controllable, control type DCS-5010L, control address user:pass@ipaddress  &lt;br /&gt;
 (note:  user/pass &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be an administrator, a regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5020Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
PTZ Controls can be used from within ZoneMinder using [[D-Link DCS-5020L Control Script|this control script]].  No alterations need to be made.  Copy the script contents into a file alongside of the other ZM Control Scripts.&lt;br /&gt;
&lt;br /&gt;
PTZ Settings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Main&lt;br /&gt;
|-&lt;br /&gt;
| Type || Remote&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || DLink-DCS5020L&lt;br /&gt;
|-&lt;br /&gt;
| Name || DCS-5020L&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Move&lt;br /&gt;
|-&lt;br /&gt;
| Can Move || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Can Move Diagonally || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Can Move Mapped || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Can Move Relative || Checked&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Pan&lt;br /&gt;
|-&lt;br /&gt;
| Can Pan || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Min Pan Step || 1&lt;br /&gt;
|-&lt;br /&gt;
| Max Pan Step || 30&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Tilt&lt;br /&gt;
|-&lt;br /&gt;
| Can Tilt || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Min Tilt Step || 1&lt;br /&gt;
|-&lt;br /&gt;
| Max Tilt Step || 30&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Presets&lt;br /&gt;
|-&lt;br /&gt;
| Has Presets || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Number || 24&lt;br /&gt;
|-&lt;br /&gt;
| Has Home Preset || Checked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | Control Tab&lt;br /&gt;
|-&lt;br /&gt;
| Controllable || Checked&lt;br /&gt;
|-&lt;br /&gt;
| Control Type || DLink-DCS5020L&lt;br /&gt;
|-&lt;br /&gt;
| Control Address || user:pass@ipaddress&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;background-color: #AAAAAA;&amp;quot; | NOTE: user/pass combination must be an administrator on the camera.  A regular view-only user will not work.)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=File:DCS5020Lfront.png&amp;diff=5858</id>
		<title>File:DCS5020Lfront.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=File:DCS5020Lfront.png&amp;diff=5858"/>
		<updated>2013-09-18T00:48:49Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: Utahjarhead uploaded a new version of &amp;amp;quot;File:DCS5020Lfront.png&amp;amp;quot;: Resized to something usable and smaller file size.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=File:DCS5020Lfront.png&amp;diff=5857</id>
		<title>File:DCS5020Lfront.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=File:DCS5020Lfront.png&amp;diff=5857"/>
		<updated>2013-09-18T00:46:19Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5856</id>
		<title>D-Link</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=D-Link&amp;diff=5856"/>
		<updated>2013-09-18T00:45:49Z</updated>

		<summary type="html">&lt;p&gt;Utahjarhead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLink is a supplier of several IP Cameras. Not all work with ZoneMinder.&lt;br /&gt;
DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).&lt;br /&gt;
&lt;br /&gt;
=DCS-900=&lt;br /&gt;
[[Image:DCS900.png]]&lt;br /&gt;
&lt;br /&gt;
There are 2 versions of this camera. The &amp;quot;A&amp;quot; version is reported to work extremely well with ZoneMinder. The &amp;quot;B&amp;quot; version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision &amp;quot;B&amp;quot; camera.&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG &lt;br /&gt;
 (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)&lt;br /&gt;
&lt;br /&gt;
With version A2&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP_Address_of_Camera&amp;gt; (user:pass@192.168.0.5)&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: VIDEO.CGI &lt;br /&gt;
&lt;br /&gt;
With the latest versions of the DCS-900 &amp;quot;B&amp;quot; there is an additional step needed in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
=DCS-910 / 920=&lt;br /&gt;
[[Image:DCS-910.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /VIDEO.CGI? for stream&lt;br /&gt;
&lt;br /&gt;
There is the same aditional step as in DCS-900B, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-930L / 932L=&lt;br /&gt;
[[Image:DCS-930L.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi&lt;br /&gt;
&lt;br /&gt;
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the &amp;quot;Options &amp;gt; Network&amp;quot; section of ZoneMinder.&lt;br /&gt;
 ZM_NETCAM_REGEXPS Value = (no-checkmark)&lt;br /&gt;
&lt;br /&gt;
For the &amp;#039;&amp;#039;&amp;#039;DCS-932L&amp;#039;&amp;#039;&amp;#039; also works:&lt;br /&gt;
&lt;br /&gt;
 Remote Host Path: /video.cgi&lt;br /&gt;
&lt;br /&gt;
Using /mjpeg.cgi gives a lot of erros in the log files:&lt;br /&gt;
&lt;br /&gt;
 ERR [Invalid JPEG file structure: two SOI markers]&lt;br /&gt;
 ERR [Unable to decode jpeg]&lt;br /&gt;
&lt;br /&gt;
=DCS-1100=&lt;br /&gt;
[[File:dcs-1100.jpg|100px]]&lt;br /&gt;
 Source Type: Remote &lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Method: Simple&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default) &lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi?profileid=3&lt;br /&gt;
&lt;br /&gt;
Where Profileid is setup in the camara&amp;#039;s setup interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2100+, DCS-2100G=&lt;br /&gt;
[[Image:DSC2100plus.jpg]][[Image:DCS2100g.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2120=&lt;br /&gt;
[[Image:DCS2100g.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2121=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-2130=&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: username:password@cam_ip&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi?profileid=1&lt;br /&gt;
&lt;br /&gt;
=DCS-2210=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Change in video settings of the camera the mode to MPEG4 first)&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-3220=&lt;br /&gt;
[[Image:DCS-3220.jpg]]&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3410=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-3410.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.2 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Tried it with just admin:@&amp;lt;IP Address of Camera&amp;gt;  without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don&amp;#039;t seem to have any affect.&lt;br /&gt;
&lt;br /&gt;
Seems like it&amp;#039;s operating in factory default Profile 3, 704x480 10fps jpeg. Haven&amp;#039;t found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.&lt;br /&gt;
&lt;br /&gt;
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-3710=&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video2.mjpg (for stream 2)&lt;br /&gt;
&lt;br /&gt;
ZoneMinder 1.24.3 (Haven&amp;#039;t tried earlier versions)&lt;br /&gt;
&lt;br /&gt;
Video profile mode must be set to JPEG.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-5010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5010Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
There is an unknown-quality H.264 stream available at http://user:pass@ip.of.camera/dgh264.raw .  I haven&amp;#039;t quite worked out how to get it into zoneminder.&lt;br /&gt;
&lt;br /&gt;
Audio is available from http://user:pass@ip.of.camera/dgaudio.cgi .&lt;br /&gt;
&lt;br /&gt;
Note:  passwords are limited to 8 characters or less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pan/Tilt can be used from within zoneminder using the Trendnet TV-IP400W control script, available at http://www.sfpeter.com/2008/07/new-trendnet-tv-ip400w-controller-for-zoneminder-123x/ .  However, one line must be modified for zoneminder 1.25.0.  The line&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Debug qw(:all);&lt;br /&gt;
&lt;br /&gt;
must be replaced with&lt;br /&gt;
&lt;br /&gt;
 use ZoneMinder::Logger qw(:all);&lt;br /&gt;
&lt;br /&gt;
Then the script will work as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for control capabilities:&lt;br /&gt;
&lt;br /&gt;
 Main:  Type: Remote, Protocol: TVIP400, name it DCS-5010L&lt;br /&gt;
 Move:  Can move, can move diagonally, can move mapped, can move relative&lt;br /&gt;
 Pan:  Can pan, min pan step 1, max pan step 30&lt;br /&gt;
 Tilt:  Can tilt, min tilt step 1, max tilt step 30&lt;br /&gt;
 Presets:  Has presets, number 24, has home preset&lt;br /&gt;
&lt;br /&gt;
Settings for control:&lt;br /&gt;
&lt;br /&gt;
 Controllable, control type DCS-5010L, control address user:pass@ipaddress  &lt;br /&gt;
 (note:  user/pass &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be an administrator, a regular view-only user will not work.)&lt;br /&gt;
&lt;br /&gt;
=DCS-5020L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS5020Lfront.png]]&lt;br /&gt;
&lt;br /&gt;
With MJPEG, this camera can do up to 30 fps.  (Firmware 1.01, zoneminder 1.25.0)&lt;br /&gt;
&lt;br /&gt;
To set video properties, click on setup, then video.  Here you can adjust settings for jpeg quality and the frame rate.  You might also want to set the default (browser) view mode to image, so that you&amp;#039;ll get something when logging into the camera if you don&amp;#039;t have java installed.&lt;br /&gt;
&lt;br /&gt;
MJPEG settings for zoneminder:&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol:  HTTP&lt;br /&gt;
 Remote Method:  Simple&lt;br /&gt;
 Remote Host Name:  user:pass@IP Address of Camera&lt;br /&gt;
 Remote Host Port:  80 (Default)&lt;br /&gt;
 Remote Host Path:  /video.cgi&lt;br /&gt;
 Colors:  24 bit&lt;br /&gt;
 Capture width:  640&lt;br /&gt;
 Capture Height:  480&lt;br /&gt;
&lt;br /&gt;
=DCS-5222L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DSC-5222L.jpg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 RTSP&lt;br /&gt;
 Source Type: ffmpeg&lt;br /&gt;
 Source Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;/play1.sdp (or play2.sdp)&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
Looks like Audio is at /audio/ACAS.cgi but haven&amp;#039;t done anything with that.&lt;br /&gt;
&lt;br /&gt;
=DCS-5300G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-5300G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /cgi-bin/video.jpg&lt;br /&gt;
&lt;br /&gt;
Note: you must change Network -&amp;gt; ZM_HTTP_VERSION option to 1.0 for this camera to work!&lt;br /&gt;
&lt;br /&gt;
=DCS-6010L=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6010.jpeg]]&lt;br /&gt;
&lt;br /&gt;
 HTTP&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Path: /video/mjpg.cgi (for mjpeg stream)&lt;br /&gt;
 Remote Host Path: /image/jpeg.cgi (for jpeg stream)&lt;br /&gt;
&lt;br /&gt;
The jpeg and the mjpeg both output at the resolution specified for &amp;quot;video profile 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL&lt;br /&gt;
&lt;br /&gt;
=DCS-6111=&lt;br /&gt;
 &lt;br /&gt;
[[File:DCS6111.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: (stream 1): /video.mjpg &lt;br /&gt;
 Remote Host Path: (stream 2): /video2.mjpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DCS-1000=&lt;br /&gt;
&lt;br /&gt;
[[File:DCS-1000_left.png]]&lt;br /&gt;
&lt;br /&gt;
 Source Type: Remote&lt;br /&gt;
 Remote Protocol: HTTP&lt;br /&gt;
 Remote Host Port: 80 (Default)&lt;br /&gt;
 Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
 Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this [http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&amp;amp;childpagename=DLinkEurope-GB%2FDLTechProduct&amp;amp;cid=1197319187751&amp;amp;p=1197318962293&amp;amp;packedargs=locale%3D1195806691854&amp;amp;pagename=DLinkEurope-GB%2FDLWrapper site] for the firmware and the ipview software to install the firmware.)&lt;br /&gt;
&lt;br /&gt;
=DCS-6620G=&lt;br /&gt;
&lt;br /&gt;
[[Image:DCS-6620G.jpg]]&lt;br /&gt;
&lt;br /&gt;
 Source type: Remote&lt;br /&gt;
 Remote Host Name: IP Address of Camera&lt;br /&gt;
 Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network&lt;br /&gt;
 Remote host Path: /cgi-bin/video.jpg&lt;br /&gt;
 Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl&lt;br /&gt;
&lt;br /&gt;
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek&amp;#039;s PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.&lt;br /&gt;
&lt;br /&gt;
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM&amp;#039;s interface, but I prefer to do it through the cam&amp;#039;s firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the &amp;quot;can set presets&amp;quot; option in ZM, after which you can assign names to each preset.&lt;br /&gt;
&lt;br /&gt;
I would further recommend to update the cam&amp;#039;s firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1.&lt;br /&gt;
[bco]&lt;br /&gt;
&lt;br /&gt;
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below.  The the only tricky part was zoom.  Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide.  Use the options below &lt;br /&gt;
Monitor&lt;br /&gt;
* Control Type = DCS6620&lt;br /&gt;
* Control Device = blank&lt;br /&gt;
* Control Address = &amp;lt;ip address of your camera&amp;gt;&lt;br /&gt;
Control Capabilities&lt;br /&gt;
* Type = Remote&lt;br /&gt;
* Protocol = DCS6620&lt;br /&gt;
* Can Move = Check&lt;br /&gt;
* Can Move Continuous = Check&lt;br /&gt;
* Can Pan = Check&lt;br /&gt;
* Can Tilt = Check&lt;br /&gt;
* Can Zoom = Check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
package ZoneMinder::Control::DCS6620;&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    my $cmd = shift;&lt;br /&gt;
&lt;br /&gt;
    my $result = undef;&lt;br /&gt;
&lt;br /&gt;
    printMsg( $cmd, &amp;quot;Tx&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://&amp;quot;.$self-&amp;gt;{Monitor}-&amp;gt;{ControlAddress}.&amp;quot;/cgi-bin/$cmd&amp;quot; );&lt;br /&gt;
    my $res = $self-&amp;gt;{ua}-&amp;gt;request($req);&lt;br /&gt;
&lt;br /&gt;
    if ( $res-&amp;gt;is_success )&lt;br /&gt;
    {&lt;br /&gt;
        $result = !undef;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        Error( &amp;quot;Error check failed: &amp;#039;&amp;quot;.$res-&amp;gt;status_line().&amp;quot;&amp;#039;&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return( $result );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub moveConUp&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Up&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=up&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConDown&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Down&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=down&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConLeft&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Left&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=left&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveConRight&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    Debug( &amp;quot;Move Right&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?move=right&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub Tele&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Tele&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=tele&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub Wide&lt;br /&gt;
{&lt;br /&gt;
    my $self = shift;&lt;br /&gt;
    #my $params = shift;&lt;br /&gt;
    #my $step = $self-&amp;gt;getParam( $params, &amp;#039;step&amp;#039; );&lt;br /&gt;
    Debug( &amp;quot;Zoom Wide&amp;quot; );&lt;br /&gt;
    my $cmd = &amp;quot;camctrl.cgi?zoom=wide&amp;quot;;&lt;br /&gt;
    $self-&amp;gt;sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7010L=&lt;br /&gt;
&lt;br /&gt;
Change in video settings of the camera the mode to MPEG4 and restart the device.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: RTSP&lt;br /&gt;
Remote Method: RTP/Unicast&lt;br /&gt;
Remote Host Port: 554&lt;br /&gt;
Remote Host Name: &amp;lt;IP Address of Camera&amp;gt; (RTSP authentication didn&amp;#039;t work with this method)&lt;br /&gt;
Remote Host Path: /live1.sdp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: Ffmpeg&lt;br /&gt;
Remote Host Path: rtsp://&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp&lt;br /&gt;
Remote Host Path: rtsp://user:pass@&amp;lt;IP Address of Camera&amp;gt;:554/live1.sdp (when RTSP authentication is enabled)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Source Type: Remote&lt;br /&gt;
Remote Protocol: HTTP&lt;br /&gt;
Remote Host Port: 80&lt;br /&gt;
Remote Host Name: user:pass@&amp;lt;IP Address of Camera&amp;gt;&lt;br /&gt;
Remote Host Path: /video1.mjpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DCS-7110=&lt;br /&gt;
&lt;br /&gt;
Device&amp;#039;s web server gives example code for various setups.  Verified 2012-12-08.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* http://&amp;lt;cam-ip&amp;gt;:80/cgi-bin/viewer/video.jpg?streamid=0&amp;amp;quality=5 // single-shot jpg image&lt;br /&gt;
* rtsp://&amp;lt;cam-ip&amp;gt;:554/live.sdp // feeds VLC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Incompatible Hardware=&lt;br /&gt;
&lt;br /&gt;
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.&lt;br /&gt;
&lt;br /&gt;
If you know of other DLink cameras that don&amp;#039;t work, please add them to the list!&lt;br /&gt;
&lt;br /&gt;
DCS-950 not compatible.  Mpeg stream.  Authentication is OCX application based, not web standard authentication.  JPG file generated at random url, not predictable.[http://www.blognesian.com/ ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cameras]]&lt;br /&gt;
[[Category:Network Cameras]]&lt;/div&gt;</summary>
		<author><name>Utahjarhead</name></author>
	</entry>
</feed>