7Links
7Links WLAN-IP-Camera with IR-nightview & motion dedection
I'm using this cheap model now for 3 weeks. Working fine so far, even at -8°C, no fault.
Picture here:http://ecx.images-amazon.com/images/I/41GZi-upRuL._SL500_AA300_.jpg
Working with following settings:
Remote Protocol -> HTTP
Remote Method -> Simple
Remote Host Name -> username:password@192.168.xxx.xxx
Remote Host Port -> 80
Remote Host Path -> /videostream.cgi
Remote Image Colors -> 24 bit color
Capture Width (pixels) -> 320
Capture Height (pixels) -> 240
Preserve Aspect Ratio ->
Orientation -> Normal
Also working with 640 x 480. I had to adjust the shared memory.
Nice Video how to do this, for normal users (not linux specialists :-)
Here: http://www.youtube.com/watch?v=o9PyV4wkFZM&feature=related
For SPX-3615 you can enable pan-tilt:
+++ package ZoneMinder::Control::7LINKSPX3615; use 5.006; use strict; use warnings; require ZoneMinder::Base; require ZoneMinder::Control; our @ISA = qw(ZoneMinder::Control); # ========================================================================== # # 7LINKS SPX3615 # Author: Bogdan Kecman <bogdan.kecman at gmail> # Tested with SPX-3615 only # # /decoder_control.cgi?command=COMMAND # # COMMAND: # 0: up # 1: stop # 2: down # 4: left # 6: right # 92: down-left # 93: down-right # 91: up-right # 90: up-left # # 25: patrol all around # 26: vertical patrol # 27: vertical patrol stop # 28: horisontal patrol # 29: horisontal patrol stop # # 94 led off # 95 led on # # CALL PRESET # 31: 1 # 33: 2 # 35: 3 # 37: 4 # 39: 5 # 41: 6 # 43: 7 # 45: 8 # 47: 9 # 49: 10 # 51: 11 # 53: 12 # 55: 13 # 57: 14 # 59: 15 # # SAVE PRESET # 30: 1 # 32: 2 # 34: 3 # 36: 4 # 38: 5 # 40: 6 # 42: 7 # 44: 8 # 46: 9 # 48: 10 # 50: 11 # 52: 12 # 54: 13 # 56: 14 # 58: 15 # # # # 640x480 # /camera_control.cgi?param=0&value=32 # # 320x240 # /camera_control.cgi?param=0&value=8 # # 160x120 # /camera_control.cgi?param=0&value=2 # # 50Hz # /camera_control.cgi?param=3&value=0 # # 60Hz # /camera_control.cgi?param=3&value=1 # # outdoor # /camera_control.cgi?param=3&value=2 # # brightness # /camera_control.cgi?param=1&value=112 (value: 0-240) # # contrast # /camera_control.cgi?param=2&value=0 (value 0-6) # # default all # /camera_control.cgi?param=0&value=8 # # ========================================================================== use ZoneMinder::Logger qw(:all); use ZoneMinder::Config qw(:all); use Data::Dumper; use Time::HiRes qw( usleep ); sub new { my $class = shift; my $id = shift; my $self = ZoneMinder::Control->new( $id ); bless( $self, $class ); srand( time() ); return $self; } our $AUTOLOAD; sub AUTOLOAD { my $self = shift; my $class = ref($self) || croak( "$self not object" ); my $name = $AUTOLOAD; $name =~ s/.*://; if ( exists($self->{$name}) ) { return( $self->{$name} ); } Fatal( "Can't access $name member of object of class $class" ); } sub open { my $self = shift; $self->loadMonitor(); use LWP::UserAgent; $self->{ua} = LWP::UserAgent->new; $self->{ua}->agent( "ZoneMinder Control Agent/".ZoneMinder::Base::ZM_VERSION ); $self->{state} = 'open'; } sub close { my $self = shift; $self->{state} = 'closed'; } sub printMsg { my $self = shift; my $msg = shift; my $msg_len = length($msg); Debug( $msg."[".$msg_len."]" ); } sub sendCmd { my $self = shift; my $cmd = shift; my $result = undef; printMsg( $cmd, "Tx" ); my $req = HTTP::Request->new( GET=>"http://".$self->{Monitor}->{ControlAddress}."/$cmd" ); my $res = $self->{ua}->request($req); if ( $res->is_success ) { $result = !undef; } else { Error( "Error check failed: '".$res->status_line()."' for URL ".$req->uri() ); } return( $result ); } sub reset { my $self = shift; Debug( "Camera Reset" ); $self->sendCmd( 'reboot.cgi?' ); } #Up Arrow sub moveConUp { my $self = shift; Debug( "Move Up" ); $self->sendCmd( 'decoder_control.cgi?command=0&' ); } #Down Arrow sub moveConDown { my $self = shift; Debug( "Move Down" ); $self->sendCmd( 'decoder_control.cgi?command=2&' ); } #Left Arrow sub moveConLeft { my $self = shift; Debug( "Move Left" ); $self->sendCmd( 'decoder_control.cgi?command=4&' ); } #Right Arrow sub moveConRight { my $self = shift; Debug( "Move Right" ); $self->sendCmd( 'decoder_control.cgi?command=6&' ); } #Diagonally Up Right Arrow sub moveConUpRight { my $self = shift; Debug( "Move Diagonally Up Right" ); $self->sendCmd( 'decoder_control.cgi?command=91&' ); } #Diagonally Down Right Arrow sub moveConDownRight { my $self = shift; Debug( "Move Diagonally Down Right" ); $self->sendCmd( 'decoder_control.cgi?command=93&' ); } #Diagonally Up Left Arrow sub moveConUpLeft { my $self = shift; Debug( "Move Diagonally Up Left" ); $self->sendCmd( 'decoder_control.cgi?command=90&' ); } #Diagonally Down Left Arrow sub moveConDownLeft { my $self = shift; Debug( "Move Diagonally Down Left" ); $self->sendCmd( 'decoder_control.cgi?command=92&' ); } #Stop sub moveStop { my $self = shift; Debug( "Move Stop" ); $self->sendCmd( 'decoder_control.cgi?command=1&' ); } #Move Camera to Home Position sub presetHome { my $self = shift; Debug( "Home Preset" ); $self->sendCmd( 'decoder_control.cgi?command=25&' ); } sub presetGoto { my $self = shift; my $params = shift; my $preset = $self->getParam( $params, 'preset' ); Debug( "Goto Preset $preset" ); my $cmd = "decoder_control.cgi?command=" . ($preset *2 + 29 ); $self->sendCmd( $cmd ); } sub presetSet { my $self = shift; my $params = shift; my $preset = $self->getParam( $params, 'preset' ); Debug( "Set Preset $preset" ); my $cmd = "decoder_control.cgi?command=" . ($preset *2 + 28); $self->sendCmd( $cmd ); } 1; __END__ =pod =head1 DESCRIPTION This module contains the implementation of the 7LINKS PX-3615 IP camera control protocol. =cut +++