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
Can old Veo Observer One IP (not webcam) work in ZoneMinder?
Can old Veo Observer One IP (not webcam) work in ZoneMinder?
Last edited by nkostaki on Wed Mar 25, 2015 8:42 pm, edited 1 time in total.
Re: Can old Veo Observer One IP (not webcam) work in ZoneMin
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
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
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
Re: Can old Veo Observer One IP (not webcam) work in ZoneMin
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)
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
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
Re: Can old Veo Observer One IP (not webcam) work in ZoneMin
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.
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.