Page 1 of 1

Is there a way to make a custom montage page?

Posted: Thu Apr 30, 2009 8:59 pm
by carlo1973
Hi there!

I'm currently doing my internship in a company's IT department. They have asked me to research and to implement software to control about 12 IP camera's (Panasonic WV-NM100) through a webpage. They didnt like the page that came with the camera's because it sends the username/pw in clear text format.

After research I decided that ZoneMinder fit the bill quite nicely. The problem is that they want to include a link on their intranet page that would basically go to the Montage view. Further complicating things they want it so that the controls are bellow each image. The only controls they want are the presets and if possible, to activate the automated "tour" within the camera's.

I got the camera's to work with some creativity, but I'm not a PHP programer. I haven't programed in years (except mysql and some small things for Active Directory) so I really don't know where to go. To make things even worse I don't know what I did but now I'm getting this weird error when accessing the controls to the camera:

Undefined Index: MoveRoot
in /var/www/zoneminder/skins/classic/includes/control_function.php
indicated lines are 124 -> 131.

The other problem is that when viewing the camera's I'm seeing unrealistic Frame rates and zoom. The camera has no zoom. My frame rates are set to 4fps normal and 8 fps durring an alarm. The program says that I'm getting 50000+ Fps with a zoom of 10701446.0x... I don't think these camera's are telescope (hubble) capable LOL

Any and all suggestions here would be gratefully appreciated :) I'm no master - I'm still learning but I'm doing my best :) Sometimes I just need a nudge in the right direction :)

Take care :)

Carlo

Posted: Thu Apr 30, 2009 11:39 pm
by kingofkya
The other problem is that when viewing the camera's I'm seeing unrealistic Frame rates and zoom. The camera has no zoom. My frame rates are set to 4fps normal and 8 fps durring an alarm. The program says that I'm getting 50000+ Fps with a zoom of 10701446.0x... I don't think these camera's are telescope (hubble) capable LOL

That happens alot it seams. if you7 disable the dvr stuff it goes away it relly dosen't matter. As for the php stuff you need to look into http://www.charliemouse.com/code/cambozola/index.html if useing ie

also the dvr controls at the bottom might be difficult but someone here might be able to help.

Or if lazy or need it quickly
look up HTML <iframe> and link it to each cams page
EX:
<iframe src ="http://example.com/zm/index.php?view=watch&mid=1" width="100%" height="300">

Posted: Fri May 01, 2009 3:19 am
by mitch
I don't have any cameras that are controlable but looking at the code it seems fairly straightforward what the error most likely is. For me to look at it add:

Code: Select all

print "<xmp>" . var_dump($monitor) . "</xmp>";
around line 123 in that file, go to the page, then reply back with what it dumps.

Posted: Fri May 01, 2009 1:15 pm
by carlo1973
mitch wrote:I don't have any cameras that are controlable but looking at the code it seems fairly straightforward what the error most likely is. For me to look at it add:

Code: Select all

print "<xmp>" . var_dump($monitor) . "</xmp>";
around line 123 in that file, go to the page, then reply back with what it dumps.
Thanks Mitch! I entered that line, and here is the output. I took the liberty of formating it the way it appeared on the screen:

array(150) { ["Id"]=> string(1) "2" ["Name"]=>
string(9) "Back-Door" ["Type"]=> string(6)
"Remote" ["Protocol"]=> string(4)
"http" ["CanWake"]=> string(1) "0" ["CanSleep"]=>
string(1) "0" ["CanReset"]=> string(1)
"0" ["CanZoom"]=> string(1) "0" ["CanAutoZoom"]=>
string(1) "0" ["CanZoomAbs"]=> string(1)
"0" ["CanZoomRel"]=> string(1)
"0" ["CanZoomCon"]=> string(1)
"0" ["MinZoomRange"]=> string(1)
"0" ["MaxZoomRange"]=> string(1)
"0" ["MinZoomStep"]=> string(1)
"0" ["MaxZoomStep"]=> string(1)
"0" ["HasZoomSpeed"]=> string(1)
"0" ["MinZoomSpeed"]=> string(1)
"0" ["MaxZoomSpeed"]=> string(1)
"0" ["CanFocus"]=> string(1)
"0" ["CanAutoFocus"]=> string(1)
"0" ["CanFocusAbs"]=> string(1)
"0" ["CanFocusRel"]=> string(1)
"0" ["CanFocusCon"]=> string(1)
"0" ["MinFocusRange"]=> string(1)
"0" ["MaxFocusRange"]=> string(1)
"0" ["MinFocusStep"]=> string(1)
"0" ["MaxFocusStep"]=> string(1)
"0" ["HasFocusSpeed"]=> string(1)
"0" ["MinFocusSpeed"]=> string(1)
"0" ["MaxFocusSpeed"]=> string(1)
"0" ["CanIris"]=> string(1)
"0" ["CanAutoIris"]=> string(1)
"0" ["CanIrisAbs"]=> string(1)
"0" ["CanIrisRel"]=> string(1)
"0" ["CanIrisCon"]=> string(1)
"0" ["MinIrisRange"]=> string(1)
"0" ["MaxIrisRange"]=> string(1)
"0" ["MinIrisStep"]=> string(1)
"0" ["MaxIrisStep"]=> string(1)
"0" ["HasIrisSpeed"]=> string(1)
"0" ["MinIrisSpeed"]=> string(1)
"0" ["MaxIrisSpeed"]=> string(1)
"0" ["CanGain"]=> string(1)
"0" ["CanAutoGain"]=> string(1)
"0" ["CanGainAbs"]=> string(1)
"0" ["CanGainRel"]=> string(1)
"0" ["CanGainCon"]=> string(1)
"0" ["MinGainRange"]=> string(1)
"0" ["MaxGainRange"]=> string(1)
"0" ["MinGainStep"]=> string(1)
"0" ["MaxGainStep"]=> string(1)
"0" ["HasGainSpeed"]=> string(1)
"0" ["MinGainSpeed"]=> string(1)
"0" ["MaxGainSpeed"]=> string(1)
"0" ["CanWhite"]=> string(1)
"0" ["CanAutoWhite"]=> string(1)
"0" ["CanWhiteAbs"]=> string(1)
"0" ["CanWhiteRel"]=> string(1)
"0" ["CanWhiteCon"]=> string(1)
"0" ["MinWhiteRange"]=> string(1)
"0" ["MaxWhiteRange"]=> string(1)
"0" ["MinWhiteStep"]=> string(1)
"0" ["MaxWhiteStep"]=> string(1)
"0" ["HasWhiteSpeed"]=> string(1)
"0" ["MinWhiteSpeed"]=> string(1)
"0" ["MaxWhiteSpeed"]=> string(1)
"0" ["HasPresets"]=> string(1) "1" ["NumPresets"]=>
string(1) "8" ["HasHomePreset"]=> string(1)
"1" ["CanSetPresets"]=> string(1) "0" ["CanMove"]
=> string(1) "1" ["CanMoveDiag"]=> string(1)
"0" ["CanMoveMap"]=> string(1) "1" ["CanMoveAbs"]
=> string(1) "0" ["CanMoveRel"]=> string(1)
"0" ["CanMoveCon"]=> string(1) "0" ["CanPan"]=>
string(1) "1" ["MinPanRange"]=> string(1) "0" ["MaxPanRange"]=> string(1)
"0" ["MinPanStep"]=> string(1) "0" ["MaxPanStep"]=> string(1)
"0" ["HasPanSpeed"]=> string(1)
"0" ["MinPanSpeed"]=> string(1)
"0" ["MaxPanSpeed"]=> string(1)
"0" ["HasTurboPan"]=> string(1)
0" ["TurboPanSpeed"]=> string(1) "0" ["CanTilt"]=>
string(1) "1" ["MinTiltRange"]=> string(1)
"0" ["MaxTiltRange"]=> string(1) "0" ["MinTiltStep"]
=> string(1) "0" ["MaxTiltStep"]=> string(1)
"0" ["HasTiltSpeed"]=> string(1)
"0" ["MinTiltSpeed"]=> string(1)
"0" ["MaxTiltSpeed"]=> string(1)
"0" ["HasTurboTilt"]=> string(1)
"0" ["TurboTiltSpeed"]=> string(1)
"0" ["CanAutoScan"]=> string(1)
"0" ["NumScanPaths"]=> string(1) "0" ["Function"]=>
string(6) "Modect" ["Enabled"]=> string(1)
"1" ["LinkedMonitors"]=> string(1) "2" ["Triggers"]=>
string(0) "" ["Device"]=> string(4) "http" ["Channel"]
=> string(1) "0" ["Format"]=> string(1)
"0" ["Method"]=> string(6) "simple" ["Host"]=>
string(27) "xxx:xxxxxxxxx@192.168.xxx.xxxx" ["Port"]
=> string(2) "80" ["SubPath"]=> string(0) "" ["Path"]
=> string(30) "/cgi-bin/camera?
resolution=640" ["Width"]=> string(3)
"640" ["Height"]=> string(3) "480" ["Palette"]=>
string(1) "3" ["Orientation"]=> string(1)
"0" ["Brightness"]=> string(2) "-1" ["Contrast"]
=> string(2) "-1" ["Hue"]=> string(2) "-1" ["Colour"]=>
string(2) "-1" ["EventPrefix"]=> string(21) "Back-
Door-Hall-Event-" ["LabelFormat"]=> string(22) "%N
- %y/%m/%d %H:%M:%S" ["LabelX"]=> string(1)
"0" ["LabelY"]=> string(1) "0" ["ImageBufferCount"]
=> string(2) "10" ["WarmupCount"]=> string(2)
"40" ["PreEventCount"]=> string(2)
"10" ["PostEventCount"]=> string(2)
"10" ["StreamReplayBuffer"]=> string(4)
"1000" ["AlarmFrameCount"]=> string(1)
"1" ["SectionLength"]=> string(3)
"600" ["FrameSkip"]=> string(1) "0" ["MaxFPS"]=>
string(4) "4.00" ["AlarmMaxFPS"]=> string(4)
"8.00" ["FPSReportInterval"]=> string(4)
"1000" ["RefBlendPerc"]=> string(1)
"7" ["Controllable"]=> string(1) "1" ["ControlId"]
=> string(1) "5" ["ControlDevice"]=> string(0)
"" ["ControlAddress"]=> string(27)
"xxx:xxxxxxxxx@192.168.xxx.xxx" ["AutoStopTimeout"]
=> string(4) "0.00" ["TrackMotion"]=> string(1)
"1" ["TrackDelay"]=> string(1) "0" ["ReturnLocation"]
=> string(1) "0" ["ReturnDelay"]=> string(1)
"0" ["DefaultView"]=> string(6)
"Events" ["DefaultRate"]=> string(3)
"100" ["DefaultScale"]=> string(3)
"100" ["SignalCheckColour"]=> string(7)
"#0100BE" ["WebColour"]=>
string(3) "red" ["Sequence"]=> string(1) "1" }
Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 125

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 126

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 127

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 128

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 129

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 130

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 131

Notice: Undefined index: MoveRoot in /var/www/zoneminder/skins/classic/includes/control_functions.php on line 132

Posted: Fri May 01, 2009 2:46 pm
by mitch
Thanks for the formatting it was actually the first thing I did too:) Looking at the output it seems your camera is setup as being able to move but you say it cannot move Diagonally, absolutely, relative, continuously, only to a specific point (CanMoveMap) . If this is true then ZM is not currently set to allow you to say go to a point with the controls, the controls require one of the 3 normal movement methods to work I believe. If you just want to hide these controls let me know, but if you want them to work the camera will have to support one of the other methods.

Posted: Fri May 01, 2009 3:25 pm
by carlo1973
kingofkya wrote:
The other problem is that when viewing the camera's I'm seeing unrealistic Frame rates and zoom. The camera has no zoom. My frame rates are set to 4fps normal and 8 fps durring an alarm. The program says that I'm getting 50000+ Fps with a zoom of 10701446.0x... I don't think these camera's are telescope (hubble) capable LOL

That happens alot it seams. if you7 disable the dvr stuff it goes away it relly dosen't matter. As for the php stuff you need to look into http://www.charliemouse.com/code/cambozola/index.html if useing ie

also the dvr controls at the bottom might be difficult but someone here might be able to help.

Or if lazy or need it quickly
look up HTML <iframe> and link it to each cams page
EX:
<iframe>

Thanks Kingofkya! Well I'm not lazy but I do need to get it done quickly. My internship ends in a month and have other projects to tackle besides this one. I'm looking through the PHP code, trying to figure out what I need to include in the custom page to display the cam's. As for DVR controls, don't really need those. Just the code to activate the presets that are already programed into the camera's themselves (thats minor and I figured that out in order to activate them in the Zoneminder - had to re-write a bit of the PanasonicIP.pm file regarding the presets.)

Generally speaking this is what they want. A single webpage that displays all of the configured cam's "live" streams. No clicking on links to pull up seperate cam's or controls. They want it simplified so that a monkey could use it without thinking about things. Bellow each camera's "live" image would be the buttons for the presets - and hopefully one to the "tour" option in the camera that basically has the camera auto-step through each of the presets.

HTML I'm okay with, CGI/PHP/JAVA - I can get by but I'm definatly no wiz with.

Posted: Fri May 01, 2009 3:36 pm
by carlo1973
mitch wrote:Thanks for the formatting it was actually the first thing I did too:) Looking at the output it seems your camera is setup as being able to move but you say it cannot move Diagonally, absolutely, relative, continuously, only to a specific point (CanMoveMap) . If this is true then ZM is not currently set to allow you to say go to a point with the controls, the controls require one of the 3 normal movement methods to work I believe. If you just want to hide these controls let me know, but if you want them to work the camera will have to support one of the other methods.
Thanks for the quick response Mitch! Awesome!

Well the cam can move. However it can only move in the 4 directions (up down left right) with a simple stepper motor. Based on my toying with the original cam software, it steps using a simple algorithm of Pan+1 and -1/Tilt +1 and -1. It can't go to quadrant x,y for example. The built in cam software has a grid to choose specific locations but this is where I learned that it can't move that accuratly. It definatly can not do diagnal movements. The home should be 0,0 but in reality it's home is Pan=1&Tilt=-1. Really weird. lol


[EDIT]

Just checked the controls again. got it fixed so that error doesn't come up. Thanks a bunch Mitch! Awesome work!

The only thing now is for me to make custom "Montage" page with the presets directly below each cam.

Posted: Fri May 01, 2009 3:39 pm
by mitch
your problem then is you have your camera setup wrong. ZM thinks it can only go to a very specific point but can't move up/down/left/right assuming its your standard move up, move left, move right, move down X amount you want Can Move Relative enabled but NOT Can Move Mapped that should fix this problem for you too.

Posted: Mon May 04, 2009 12:57 pm
by carlo1973
mitch wrote:your problem then is you have your camera setup wrong. ZM thinks it can only go to a very specific point but can't move up/down/left/right assuming its your standard move up, move left, move right, move down X amount you want Can Move Relative enabled but NOT Can Move Mapped that should fix this problem for you too.
Got that fixed now :) Thanks a bunch again :)

Regarding the custom Montage Page....

Posted: Mon May 04, 2009 4:07 pm
by carlo1973
Is there a way I can just take the existing Montage page, and include the controls at the bottom. They have decided they only want 3 webcams on the page now (outside cams not interior). If I can move the control functions from a popup to actually being on the page itself that would be perfectly suitable. Can leave the monitor selector as well. Just want to move the whole thing from the control applet to the bottom of the page so it is similar to the Watch view.

Posted: Mon May 04, 2009 9:59 pm
by cordel
Why not just create a montage group just for those cams your interested in?

Posted: Tue May 05, 2009 4:17 pm
by carlo1973
cordel wrote:Why not just create a montage group just for those cams your interested in?
I tried to convince them of that. Their only thing is they wanted the controls on the same page as the camera's they were viewing. Apparently clicking on a link that says "CONTROL" was a bit much lol

Sorry for my sarcasm - but I've been fighting with this for two weeks and such an off the wall request from the guy I report to here in the IT department has me running in circles over something I figure as minor.

Posted: Tue May 05, 2009 8:10 pm
by zoneminder
The simplest solution may be just to add an iframe in the montage page, with the control page embedded within it. Will that do?

Posted: Tue May 05, 2009 8:41 pm
by carlo1973
zoneminder wrote:The simplest solution may be just to add an iframe in the montage page, with the control page embedded within it. Will that do?
Yep I think I will try that tomorrow :) Thanks for the suggestion :) I will look up the information on iframes in the morning. :)