IP PTZ Changes
AbelCam 4.2.0 brings new features for IP PTZ
The file below is
- old fields and structure
- new and changed data
- comments
The example file is for the LevelOne FCS-0020 - this camera could only be controlled stepwise before this release.
<?xml version="1.0" encoding="utf-8"?>
<IPptzstruc xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=
"http://www.w3.org/2001/XMLSchema">
<CamType>
LevelOne FCS-0020</CamType>
<ControlCapabilities>1</ControlCapabilities>
<MinPan>-60</MinPan>
<MaxPan>60</MaxPan>
<VerticalSteps>20</VerticalSteps> 1) number of tilt steps
<MinTilt>-30</MinTilt>
<MaxTilt>30</MaxTilt>
<HorizontalSteps>40</HorizontalSteps> 1) number of pan steps
<MinZoom>0</MinZoom>
<MaxZoom>0</MaxZoom>
<InitUrl>/pt/ptctrl.cgi?mv=H</InitUrl>
<InitUrl2 />
<HomeUrl>/pt/ptctrl.cgi?mv=H</HomeUrl>
<HomeWait>1500</HomeWait> 2) this time is now in milliseconds
<HomeUrlOnStartup>true</HomeUrlOnStartup>
<HomeUrlOnPosZero>true</HomeUrlOnPosZero>
<SetValuesUrl />
<GetValuesUrl />
<GetValuesTemplate />
<ValuesAreRelative>false</ValuesAreRelative>
<ValuesAreRelativeToImage>true</ValuesAreRelativeToImage>
<SupportsOvershoot>true</SupportsOvershoot>
<GetPanUrl />
<SetPanUrl />
<SetPanUrlLeft>/pt/ptctrl.cgi?mv=L,#PVALUE</SetPanUrlLeft>
<SetPanUrlRight>/pt/ptctrl.cgi?mv=R,#PVALUE</SetPanUrlRight> 3) either SetPanURL? or and SetPanURLeft? and SetPanURLRight? can be used
<GetPanTemplate />
<GetTiltUrl />
<SetTiltUrl />
<SetTiltUrlUp>/pt/ptctrl.cgi?mv=U,#TVALUE</SetTiltUrlUp>
<SetTiltUrlDown>/pt/ptctrl.cgi?mv=D,#TVALUE</SetTiltUrlDown> 3) either SetTiltUrl? or and SetTiltUrlUp? and SetTiltUrlDown? can be used
<GetTiltTemplate />
<GetZoomUrl />
<SetZoomUrl />
<SetZoomUrlOut />
<SetZoomUrlIn /> 2) either SetZoomUrl or SetZoomUrlOut? and SetZoomUrlIn can be used
<GetZoomTemplate />
<StepUpUrl>/pt/ptctrl.cgi?mv=U,5</StepUpUrl>
<StepDownUrl>/pt/ptctrl.cgi?mv=D,5</StepDownUrl>
<StepTiltWait>500</StepTiltWait> 4) this time is now in milliseconds
<StepLeftUrl>/pt/ptctrl.cgi?mv=L,5</StepLeftUrl>
<StepRightUrl>/pt/ptctrl.cgi?mv=R,5</StepRightUrl>
<StepPanWait>500</StepPanWait> 4) this time is now in milliseconds
<KeepAlive>0</KeepAlive
?>
<PanWaitFactor>2000</PanWaitFactor>
<TiltWaitFactor>2000</TiltWaitFactor> 5) these times is now in milliseconds
<MaxMovePan>120</MaxMovePan>
<MaxMoveTilt>60</MaxMoveTilt>
<PanFactor>1</PanFactor>
<TiltFactor>1</TiltFactor>
<HomePan>0</HomePan>
<HomeTilt>0</HomeTilt>
<OffsetPan>0</OffsetPan>
<OffsetTilt>0</OffsetTilt>
<ImageHeight>480</ImageHeight>
<ImageWidth>640</ImageWidth>
<InvertedCalcModePan>false</InvertedCalcModePan>
<InvertedCalcModeTilt>false</InvertedCalcModeTilt>
<IgnoreHTTPErrors>true</IgnoreHTTPErrors>
<CamExpectsInteger>true</CamExpectsInteger> when this is set, the camera will only receive integers
<PTZDebug>false</PTZDebug> 6) Extensive debugging
<Version>1</Version> 7) config file version
</IPptzstruc>
1) before this was fixed to 40 for both pan and tilt. If you have a wide pan range, you'll want to increase this value.
Steps are used in the JavaScript? and the Java pages for keyboard control. Cursor keys move the camera 2 steps.
2) worst case - how long does the camera take for a home move
3) some cameras require different urls for left/right, up/down, zoom in/out. This is now supported
4) this is the time for one step in milliseconds for cameras that can only move stepwise.
5) this time is now for a full end to end move. This is easier to measure than shorter moves.
6) PTZDebug has to be configured manually in the config file. If it's set to True and debug logging is on,
the debug log will contain lots of information about positioning. Some lines will be tagged csv and can be filtered and used
to generate graphs to understand better what's going on.
7) this version is used to update the config file. If Version < 1, all time values will be multiplied with 1000 to convert seconds to milliseconds.
more IP PTZ Changes
All URLs can now make one or two requests to the camera.
If a URL with this format
URL1;X;URL2
is found, the IP mover will behave as follows:
- request URL1
- pause for X milliseconds
- request URL2
This will allow to control the foscam type cameras stepwise, eg a foscam up step:
/decoder_control.cgi?command=0;1000;/decoder_control.cgi?command=1
Max/MinPan and Max/MinTilt must be evaluated, simply by moving to one end and counting the steps until the other end is reached.