Can old Veo Observer One IP (not webcam) work in ZoneMinder?

Forum for questions and support relating to the 1.28.x releases only.
Locked
nkostaki
Posts: 8
Joined: Sat Mar 07, 2015 6:37 pm

Can old Veo Observer One IP (not webcam) work in ZoneMinder?

Post by nkostaki »

I'd like to make three old Veo Observer One IP cameras work in ZoneMinder and I would appreciate all help.

First, let me say these are not the Veo Observer webcams that are supported in the ZM documentation/wiki. I did try the instructions there as a test, but no success.

These (over 10 years old) cameras are still working (PTZ too), but only through Internet Explorer which loads an ActiveX component. Some people developed a Perl module which, apparently (I'm pasting the output it gives if run from command line), communicates with the camera.

nkostaki@security:/usr/bin$ ./Veo.pl
Name: VeoNetCam
Location:
Light: 0
StatusLight: 0
Light: 0
Brightness: 16
image 1 stream callback with 37076 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 2 stream callback with 36554 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 3 stream callback with 37504 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 4 stream callback with 38328 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 5 stream callback with 39808 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 6 stream callback with 40250 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 7 stream callback with 40202 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 8 stream callback with 40072 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 9 stream callback with 39912 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 10 stream callback with 39990 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
image 11 stream callback with 40220 bytes of data
binmode() on closed filehandle OUT at ./Veo.pl line 27.
print() on closed filehandle OUT at ./Veo.pl line 28.
nkostaki@security:/


Is there a way to call this .pl from within ZoneMinder as part of a Monitor?

Thank you

Nikolas
Last edited by nkostaki on Wed Mar 25, 2015 8:42 pm, edited 1 time in total.
User avatar
asker
Posts: 1553
Joined: Sun Mar 01, 2015 12:12 pm

Re: Can old Veo Observer One IP (not webcam) work in ZoneMin

Post by asker »

A ZM expert may have to respond to be definitive, but I'll gamble and say yes.
ZM has a source type called "File" --> it seems it can pick up images from a file directly (see https://github.com/ZoneMinder/ZoneMinde ... camera.cpp)
It seems Veo.pm stores valid JPEG files


nkostaki wrote:I'd like to make three old Veo Observer One IP cameras work in ZoneMinder and I would appreciate all help.

First, let me say these are not the Veo Observer webcams that are supported in the ZM documentation/wiki. I did try the instructions there as a test, but no success.

These (over 10 years old) cameras are still working (PTZ too), but only through Internet Explorer which loads an ActiveX component. Some people developed a Perl module which, apparently (I'm pasting the output it gives if run from command line), communicates with the camera.

nkostaki@security:/usr/bin$ ./Veo.pl


Nikolas
I no longer work on zmNinja, zmeventnotification, pyzm or mlapi. I may respond on occasion based on my available time/interest.

Please read before posting:
How to set up logging properly
How to troubleshoot and report - ES
How to troubleshoot and report - zmNinja
ES docs
zmNinja docs
User avatar
asker
Posts: 1553
Joined: Sun Mar 01, 2015 12:12 pm

Re: Can old Veo Observer One IP (not webcam) work in ZoneMin

Post by asker »

I just tested and it works fine

Here is what you need to do:
a) Modify your perl script so it is always writing the image to a single file. Make sure that file is readable by ZM. In other words, every frame overwrites the image over and over again.

b) Create a new monitor in ZM, specify its "source type" as File and in the file path specify the full path to the image (including file name)

Works like a charm. The more I see of ZM, the more I love it (and appreciate why they chose to go the image way than native video)


What I tried:

a) I wrote a small script to keep creating new frames
b) Set up ZM monitor to point there
That's all

The script I used to test (you can use it to make sure your setup is correct - but you don't really need this script in real life)

Code: Select all

#!/bin/bash
# Test to see if ZM's file source works -- I am going to generate 1 frame in 3 seconds with differentiating text
i=0
snooze=3
while true; do
        echo "Creating Frame $i..."
        # convert is a tool from imagemagik :sudo apt-get install imagemagick
        convert -size 640x480 -background blue  -fill white -pointsize 30 label:"Hello, World $i" image.jpg
        i=$((i+1))
        echo "Sleeping for $snooze"
        sleep $snooze 
done
I no longer work on zmNinja, zmeventnotification, pyzm or mlapi. I may respond on occasion based on my available time/interest.

Please read before posting:
How to set up logging properly
How to troubleshoot and report - ES
How to troubleshoot and report - zmNinja
ES docs
zmNinja docs
nkostaki
Posts: 8
Joined: Sat Mar 07, 2015 6:37 pm

Re: Can old Veo Observer One IP (not webcam) work in ZoneMin

Post by nkostaki »

For people that are as wet behind the ears as I am, I'm pasting the perl code that I got from Yahoo Group "veo-netcam", as described at http://www.kahunaburger.com/2004/08/12/ ... k-cameras/

This has been slightly modified so that

it saves 50 .jpg images, giving enough time to do a test run, set ZM etc.
saves them at location /home/<enter linux username here>/veo.jpg

-----------------------------------
#!/usr/bin/perl -w

use strict;
use Veo;

my $veo=Veo->new(host => ‘192.168.1.1’, port => 1600);
$veo->login(user => ‘admin’, password => ‘password’);
my($images)=50;
$veo->selectStream(Veo::VEO_STREAM_640X480,1);
$veo->stream(\&cb);

sub cb {
my($type,$frame,$data)=@_;
print STDERR qq{image $frame with },length($data),qq{ bytes\n};
open(OUT,”>”.sprintf(“/home/yourusername/veo.jpg”,$images));
binmode(OUT);
print OUT $data;
close(OUT);
# return value > 0 indicates “keep on streaming”
# return value = 0 indicates “stop streaming”
return $images–;
}
-------------------------
After running for the first time, make sure you change file permissions to veo.jpg so that it's readable from ZM.

I then created a new monitor, specifying in General/Source Type : File, and Source/ Source Path:/home/yourusername/veo.jpg, as advised by asker (see above).

Works great.
Locked