<?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=Shoetick</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=Shoetick"/>
	<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/Special:Contributions/Shoetick"/>
	<updated>2026-04-19T19:14:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=Gadspot&amp;diff=1710</id>
		<title>Gadspot</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=Gadspot&amp;diff=1710"/>
		<updated>2006-10-02T21:42:12Z</updated>

		<summary type="html">&lt;p&gt;Shoetick: /* Controlling the GS9603 */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Gadspot GS-9603 and possibly others do work with Zoneminder. &lt;br /&gt;
&lt;br /&gt;
==Gadspot GS9603==&lt;br /&gt;
&lt;br /&gt;
To setup the Gadspot 9603 add a new monitor with the following settings:&lt;br /&gt;
&lt;br /&gt;
[General]&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote type: Remote&amp;lt;BR \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Source]&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote Host Name: Ip address of camera&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote Host Port: normally 80 but if you changed it you need to update this to whatever you changed it to.&amp;lt;BR \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remote Host Path:  You have two options. for a stream use /getData.cgi for jpeg use /Jpeg/CamImg.jpg&lt;br /&gt;
&lt;br /&gt;
Capture Width: needs to be the same as in the gadspot config: (640 is default)&amp;lt;BR \&amp;gt;&lt;br /&gt;
Capture Height: need to be the same as in the gadspot config: (480 is default)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Controlling the GS9603==&lt;br /&gt;
If you have control turned on in Options you can control the gadspot by enabling control in the control tab.&lt;br /&gt;
&lt;br /&gt;
First off you will need to place the ZM control file in the directory where your zoneminder scripts are located. (Look for zmcontrol-*.pl files and paste the following to a script called zmcontrol-gadspot-v2.pl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -wT&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder Axis HTTP API v2 Control Script, $Date: 2006/05/08 12:37:48 $, $Revision: 1.9 $&lt;br /&gt;
# Copyright (C) 2003, 2004, 2005, 2006  Philip Coombes&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 script continuously monitors the recorded events for the given&lt;br /&gt;
# monitor and applies any filters which would delete and/or upload &lt;br /&gt;
# matching events&lt;br /&gt;
#&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# These are the elements you can edit to suit your installation&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
use constant DBG_ID =&amp;gt; &amp;quot;zmctrl-gadspot&amp;quot;; # Tag that appears in debug to identify source&lt;br /&gt;
use constant DBG_LEVEL =&amp;gt; 0; # 0 is errors, warnings and info only, &amp;gt; 0 for debug&lt;br /&gt;
&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
use ZoneMinder;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
$| = 1;&lt;br /&gt;
&lt;br /&gt;
$ENV{PATH}  = &amp;#039;/bin:/usr/bin&amp;#039;;&lt;br /&gt;
$ENV{SHELL} = &amp;#039;/bin/sh&amp;#039; if exists $ENV{SHELL};&lt;br /&gt;
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};&lt;br /&gt;
&lt;br /&gt;
sub Usage&lt;br /&gt;
{&lt;br /&gt;
	print( &amp;quot;&lt;br /&gt;
Usage: zmcontrol-gadspot-v2.pl &amp;lt;various options&amp;gt;&lt;br /&gt;
&amp;quot;);&lt;br /&gt;
	exit( -1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
zmDbgInit( DBG_ID, level=&amp;gt;DBG_LEVEL );&lt;br /&gt;
&lt;br /&gt;
my $arg_string = join( &amp;quot; &amp;quot;, @ARGV );&lt;br /&gt;
&lt;br /&gt;
my $address;&lt;br /&gt;
my $command;&lt;br /&gt;
my ( $speed, $step );&lt;br /&gt;
my ( $xcoord, $ycoord );&lt;br /&gt;
my ( $width, $height );&lt;br /&gt;
my ( $panspeed, $tiltspeed );&lt;br /&gt;
my ( $panstep, $tiltstep );&lt;br /&gt;
my $preset;&lt;br /&gt;
&lt;br /&gt;
if ( !GetOptions(&lt;br /&gt;
	&amp;#039;address=s&amp;#039;=&amp;gt;\$address,&lt;br /&gt;
	&amp;#039;command=s&amp;#039;=&amp;gt;\$command,&lt;br /&gt;
	&amp;#039;speed=i&amp;#039;=&amp;gt;\$speed,&lt;br /&gt;
	&amp;#039;step=i&amp;#039;=&amp;gt;\$step,&lt;br /&gt;
	&amp;#039;xcoord=i&amp;#039;=&amp;gt;\$xcoord,&lt;br /&gt;
	&amp;#039;ycoord=i&amp;#039;=&amp;gt;\$ycoord,&lt;br /&gt;
	&amp;#039;width=i&amp;#039;=&amp;gt;\$width,&lt;br /&gt;
	&amp;#039;height=i&amp;#039;=&amp;gt;\$height,&lt;br /&gt;
	&amp;#039;panspeed=i&amp;#039;=&amp;gt;\$panspeed,&lt;br /&gt;
	&amp;#039;tiltspeed=i&amp;#039;=&amp;gt;\$tiltspeed,&lt;br /&gt;
	&amp;#039;panstep=i&amp;#039;=&amp;gt;\$panstep,&lt;br /&gt;
	&amp;#039;tiltstep=i&amp;#039;=&amp;gt;\$tiltstep,&lt;br /&gt;
	&amp;#039;preset=i&amp;#039;=&amp;gt;\$preset&lt;br /&gt;
	)&lt;br /&gt;
)&lt;br /&gt;
{&lt;br /&gt;
	Usage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( !$address )&lt;br /&gt;
{&lt;br /&gt;
	Usage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Debug( $arg_string.&amp;quot;\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
srand( time() );&lt;br /&gt;
&lt;br /&gt;
sub printMsg&lt;br /&gt;
{&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;]\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&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;
	use LWP::UserAgent;&lt;br /&gt;
	my $ua = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
	$ua-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
&lt;br /&gt;
	#print( &amp;quot;http://$address/$cmd\n&amp;quot; );&lt;br /&gt;
	my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://$address/$cmd&amp;quot; );&lt;br /&gt;
	my $res = $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;\n&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 moveUp&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDown&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Left\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Left&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Right\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveUpRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up/Right\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveUpLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up/Left\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir==Left&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDownRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down/Right\n&amp;quot; );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDownLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down/Left\n&amp;quot; );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
	  my $cmd = &amp;quot;MoveCamera.cgi?Dir=Left&amp;quot;;&lt;br /&gt;
          sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if ( $command eq &amp;quot;up&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUp();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;down&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDown();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;left&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;right&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveRight();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;upleft&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUpLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;upright&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUpRight();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;downleft&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDownLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;downright&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDownLeft();&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
	Error( &amp;quot;Can&amp;#039;t handle command $command\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now Click Edit on the Control Type line in the Monitor setup window&amp;#039;s Control tab. &lt;br /&gt;
&lt;br /&gt;
Click add new control when the window pops up.&lt;br /&gt;
&lt;br /&gt;
You will want to set the Type to Remote.&lt;br /&gt;
&lt;br /&gt;
Command: zmcontrol-gadspot-v2.pl (or whatever you named the file above.).&lt;br /&gt;
&lt;br /&gt;
On the Move Tab check Can Move and Can move Diagonally (not sure if the second one is needed but it is in my config).&lt;br /&gt;
&lt;br /&gt;
Now in the Pan tab check Can Pan.&lt;br /&gt;
&lt;br /&gt;
In the Tilt tab check Can Tilt.&lt;br /&gt;
&lt;br /&gt;
Save your settings and close out the add control window and the control list. &lt;br /&gt;
&lt;br /&gt;
You will not want to save your monitor and then reopen it so that the gadspot will display in the Control Type pull down menu. If it is there select it. If not go back and find what you forgot.&lt;br /&gt;
&lt;br /&gt;
Now your GS9603 should be ready to go. Open it up and click control at the top. &lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>Shoetick</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=Gadspot&amp;diff=1709</id>
		<title>Gadspot</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=Gadspot&amp;diff=1709"/>
		<updated>2006-10-02T21:40:11Z</updated>

		<summary type="html">&lt;p&gt;Shoetick: added a page for the gadspots and control and setup for the GS-9603&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Gadspot GS-9603 and possibly others do work with Zoneminder. &lt;br /&gt;
&lt;br /&gt;
==Gadspot GS9603==&lt;br /&gt;
&lt;br /&gt;
To setup the Gadspot 9603 add a new monitor with the following settings:&lt;br /&gt;
&lt;br /&gt;
[General]&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote type: Remote&amp;lt;BR \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Source]&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote Host Name: Ip address of camera&amp;lt;BR \&amp;gt;&lt;br /&gt;
Remote Host Port: normally 80 but if you changed it you need to update this to whatever you changed it to.&amp;lt;BR \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remote Host Path:  You have two options. for a stream use /getData.cgi for jpeg use /Jpeg/CamImg.jpg&lt;br /&gt;
&lt;br /&gt;
Capture Width: needs to be the same as in the gadspot config: (640 is default)&amp;lt;BR \&amp;gt;&lt;br /&gt;
Capture Height: need to be the same as in the gadspot config: (480 is default)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Controlling the GS9603==&lt;br /&gt;
If you have control turned on in Optionss you can control the gadspot by enabling control on the control tab.&lt;br /&gt;
&lt;br /&gt;
First off you will need to place the ZM control file in the directory where your zoneminder scripts are located. (Look for zmcontrol-*.pl files and paste the following to a script called zmcontrol-gadspot-v2.pl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -wT&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# ZoneMinder Axis HTTP API v2 Control Script, $Date: 2006/05/08 12:37:48 $, $Revision: 1.9 $&lt;br /&gt;
# Copyright (C) 2003, 2004, 2005, 2006  Philip Coombes&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 script continuously monitors the recorded events for the given&lt;br /&gt;
# monitor and applies any filters which would delete and/or upload &lt;br /&gt;
# matching events&lt;br /&gt;
#&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
#&lt;br /&gt;
# These are the elements you can edit to suit your installation&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
use constant DBG_ID =&amp;gt; &amp;quot;zmctrl-gadspot&amp;quot;; # Tag that appears in debug to identify source&lt;br /&gt;
use constant DBG_LEVEL =&amp;gt; 0; # 0 is errors, warnings and info only, &amp;gt; 0 for debug&lt;br /&gt;
&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
use ZoneMinder;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
$| = 1;&lt;br /&gt;
&lt;br /&gt;
$ENV{PATH}  = &amp;#039;/bin:/usr/bin&amp;#039;;&lt;br /&gt;
$ENV{SHELL} = &amp;#039;/bin/sh&amp;#039; if exists $ENV{SHELL};&lt;br /&gt;
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};&lt;br /&gt;
&lt;br /&gt;
sub Usage&lt;br /&gt;
{&lt;br /&gt;
	print( &amp;quot;&lt;br /&gt;
Usage: zmcontrol-gadspot-v2.pl &amp;lt;various options&amp;gt;&lt;br /&gt;
&amp;quot;);&lt;br /&gt;
	exit( -1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
zmDbgInit( DBG_ID, level=&amp;gt;DBG_LEVEL );&lt;br /&gt;
&lt;br /&gt;
my $arg_string = join( &amp;quot; &amp;quot;, @ARGV );&lt;br /&gt;
&lt;br /&gt;
my $address;&lt;br /&gt;
my $command;&lt;br /&gt;
my ( $speed, $step );&lt;br /&gt;
my ( $xcoord, $ycoord );&lt;br /&gt;
my ( $width, $height );&lt;br /&gt;
my ( $panspeed, $tiltspeed );&lt;br /&gt;
my ( $panstep, $tiltstep );&lt;br /&gt;
my $preset;&lt;br /&gt;
&lt;br /&gt;
if ( !GetOptions(&lt;br /&gt;
	&amp;#039;address=s&amp;#039;=&amp;gt;\$address,&lt;br /&gt;
	&amp;#039;command=s&amp;#039;=&amp;gt;\$command,&lt;br /&gt;
	&amp;#039;speed=i&amp;#039;=&amp;gt;\$speed,&lt;br /&gt;
	&amp;#039;step=i&amp;#039;=&amp;gt;\$step,&lt;br /&gt;
	&amp;#039;xcoord=i&amp;#039;=&amp;gt;\$xcoord,&lt;br /&gt;
	&amp;#039;ycoord=i&amp;#039;=&amp;gt;\$ycoord,&lt;br /&gt;
	&amp;#039;width=i&amp;#039;=&amp;gt;\$width,&lt;br /&gt;
	&amp;#039;height=i&amp;#039;=&amp;gt;\$height,&lt;br /&gt;
	&amp;#039;panspeed=i&amp;#039;=&amp;gt;\$panspeed,&lt;br /&gt;
	&amp;#039;tiltspeed=i&amp;#039;=&amp;gt;\$tiltspeed,&lt;br /&gt;
	&amp;#039;panstep=i&amp;#039;=&amp;gt;\$panstep,&lt;br /&gt;
	&amp;#039;tiltstep=i&amp;#039;=&amp;gt;\$tiltstep,&lt;br /&gt;
	&amp;#039;preset=i&amp;#039;=&amp;gt;\$preset&lt;br /&gt;
	)&lt;br /&gt;
)&lt;br /&gt;
{&lt;br /&gt;
	Usage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ( !$address )&lt;br /&gt;
{&lt;br /&gt;
	Usage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Debug( $arg_string.&amp;quot;\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
srand( time() );&lt;br /&gt;
&lt;br /&gt;
sub printMsg&lt;br /&gt;
{&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;]\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub sendCmd&lt;br /&gt;
{&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;
	use LWP::UserAgent;&lt;br /&gt;
	my $ua = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
	$ua-&amp;gt;agent( &amp;quot;ZoneMinder Control Agent/&amp;quot;.ZM_VERSION );&lt;br /&gt;
&lt;br /&gt;
	#print( &amp;quot;http://$address/$cmd\n&amp;quot; );&lt;br /&gt;
	my $req = HTTP::Request-&amp;gt;new( GET=&amp;gt;&amp;quot;http://$address/$cmd&amp;quot; );&lt;br /&gt;
	my $res = $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;\n&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 moveUp&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDown&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Left\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Left&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Right\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveUpRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up/Right\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveUpLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Up/Left\n&amp;quot; );&lt;br /&gt;
	my $cmd = &amp;quot;MoveCamera.cgi?Dir=Up&amp;quot;;&lt;br /&gt;
	sendCmd( $cmd );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir==Left&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDownRight&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down/Right\n&amp;quot; );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Right&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub moveDownLeft&lt;br /&gt;
{&lt;br /&gt;
	Debug( &amp;quot;Move Down/Left\n&amp;quot; );&lt;br /&gt;
	 my $cmd = &amp;quot;MoveCamera.cgi?Dir=Down&amp;quot;;&lt;br /&gt;
         sendCmd( $cmd );&lt;br /&gt;
	  my $cmd = &amp;quot;MoveCamera.cgi?Dir=Left&amp;quot;;&lt;br /&gt;
          sendCmd( $cmd );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if ( $command eq &amp;quot;up&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUp();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;down&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDown();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;left&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;right&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveRight();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;upleft&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUpLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;upright&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveUpRight();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;downleft&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDownLeft();&lt;br /&gt;
}&lt;br /&gt;
elsif ( $command eq &amp;quot;downright&amp;quot; )&lt;br /&gt;
{&lt;br /&gt;
	moveDownLeft();&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
	Error( &amp;quot;Can&amp;#039;t handle command $command\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now Click Edit on the Control Type line in the Monitor setup window&amp;#039;s Control tab. &lt;br /&gt;
&lt;br /&gt;
Click add new control when the window pops up.&lt;br /&gt;
&lt;br /&gt;
You will want to set the Type to Remote.&lt;br /&gt;
&lt;br /&gt;
Command: zmcontrol-gadspot-v2.pl (or whatever you named the file above.).&lt;br /&gt;
&lt;br /&gt;
On the Move Tab check Can Move and Can move Diagonally (not sure if the second one is needed but it is in my config).&lt;br /&gt;
&lt;br /&gt;
Now in the Pan tab check Can Pan.&lt;br /&gt;
&lt;br /&gt;
In the Tilt tab check Can Tilt.&lt;br /&gt;
&lt;br /&gt;
Save your settings and close out the add control window and the control list. &lt;br /&gt;
&lt;br /&gt;
You will not want to save your monitor and then reopen it so that the gadspot will display in the Control Type pull down menu. If it is there select it. If not go back and find what you forgot.&lt;br /&gt;
&lt;br /&gt;
Now your GS9603 should be ready to go. Open it up and click control at the top. &lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>Shoetick</name></author>
	</entry>
	<entry>
		<id>http://wiki.staging.zoneminder.com/index.php?title=Hardware_Compatibility_List&amp;diff=1708</id>
		<title>Hardware Compatibility List</title>
		<link rel="alternate" type="text/html" href="http://wiki.staging.zoneminder.com/index.php?title=Hardware_Compatibility_List&amp;diff=1708"/>
		<updated>2006-10-02T21:16:57Z</updated>

		<summary type="html">&lt;p&gt;Shoetick: /* Network Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zoneminder will work with almost any capture card that is supported by the linux kernel.&lt;br /&gt;
&lt;br /&gt;
== Capture Cards ==&lt;br /&gt;
&lt;br /&gt;
[[Pico2000]] - 4 port card, one chip bt878, around 2 fps when using all channels&lt;br /&gt;
&lt;br /&gt;
[[Bt878_4chip_8inputs]] - I don&amp;#039;t know the name for it, 4 chips bt878, 8 inputs, around 5 fps when using 2 inputs per chip&lt;br /&gt;
&lt;br /&gt;
[[Hauppauge]]&lt;br /&gt;
&lt;br /&gt;
[[Ituner Spectra 8]] [http://www.ituner.com/spectra.htm]&lt;br /&gt;
&lt;br /&gt;
[[Linux Media Labs LMLBT44]] [http://www.linuxmedialabs.com]&lt;br /&gt;
&lt;br /&gt;
[[Avermedia]]&lt;br /&gt;
&lt;br /&gt;
[[TView 95/99]]&lt;br /&gt;
&lt;br /&gt;
[[WinFast TV2000 XP]]&lt;br /&gt;
&lt;br /&gt;
[[Osprey 100]]&lt;br /&gt;
&lt;br /&gt;
[[Grand X Guard]] [http://www.grandtec.com/xguard.htm]&lt;br /&gt;
&lt;br /&gt;
[[Kodicom 4400r]]&lt;br /&gt;
&lt;br /&gt;
Most other BTTV (BT878, BT848) cards, see /usr/src/linux/Documentation/video4linux/bttv/CARDLIST on your system for a list of some of them.&lt;br /&gt;
&lt;br /&gt;
== Analog Cameras ==&lt;br /&gt;
&lt;br /&gt;
Any regular composite or svideo camera connected via a supported capture card.&lt;br /&gt;
&lt;br /&gt;
== Network Cameras ==&lt;br /&gt;
&lt;br /&gt;
* [[Axis]] (just about all recent models, including support for PTZ functions)&lt;br /&gt;
&lt;br /&gt;
* [[Panasonic]] BLC-10, KX-HCM10 etc (including PTZ support)&lt;br /&gt;
&lt;br /&gt;
* [[D-Link]] DCS-1000(W) - plus other D-Link IP models&lt;br /&gt;
&lt;br /&gt;
* [[Sony]] SNC-M1 and SNC-M3 wired and wireless - possibly other Sony IP models?&lt;br /&gt;
&lt;br /&gt;
* [[Grandtec]] [[Grandtec_WLAN_Camera|WLAN Camera]] WiFi or III - poor outdoor-quality, acceptable indoor quality. cheap!&lt;br /&gt;
&lt;br /&gt;
* [[Airlink 101]] AIC250W - Just remember to turn off PCRE processing in the Options &amp;gt; Network tab.  http://x.x.x.x/video.cgi gives 10 fps 640 x 480 mjpeg feed.  Same camera as D-Link DCS-900W / TrendNet IP-200 / Hawking HNC320W.&lt;br /&gt;
&lt;br /&gt;
* OvisLink AirLive WL-5400CAM&lt;br /&gt;
&lt;br /&gt;
* [[Gadspot]] GS9603 IP Camera with Pan/Tilt.&lt;br /&gt;
&lt;br /&gt;
* Any network camera that allows access to single JPEG image grabs or multi-part JPEG feeds.&lt;br /&gt;
&lt;br /&gt;
== USB Cameras ==&lt;br /&gt;
&lt;br /&gt;
Just Zoom USB cam&lt;br /&gt;
&lt;br /&gt;
Creative Webcam Pro, Webcam 3&lt;br /&gt;
&lt;br /&gt;
Logitech QuickCam Express, QuickCam Pro 3000&lt;br /&gt;
&lt;br /&gt;
Philips PCVC 730K, PCVC 740K&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.zoneminder.com/forums/viewtopic.php?t=6645&amp;amp;highlight=zmu&lt;br /&gt;
&lt;br /&gt;
Any OV511 based USB camera [http://alpha.dyndns.org/ov511/cameras.html]&lt;br /&gt;
&lt;br /&gt;
Any Philips based USB camera [http://www.smcc.demon.nl/webcam]&lt;br /&gt;
&lt;br /&gt;
Any CPIA based USB camera [http://webcam.sourceforge.net]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note that most USB cameras that can use Video4Linux, and so can be used by ZoneMinder, have older chipsets and can be hard to find new.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note that PWC drivers are not included in the kernel. Some distribution&amp;#039;s add them in and other may not. Here are some relevant links.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[http://www.smcc.demon.nl/webcam/ Old Maintainer]&lt;br /&gt;
[http://www.saillard.org/linux/pwc/ Current PWC Maintainer]&lt;/div&gt;</summary>
		<author><name>Shoetick</name></author>
	</entry>
</feed>