Foscam FI8908W

From LinuxMCE
Jump to: navigation, search
Version Status Date Updated Updated By
710 Unknown N/A N/A
810 Unknown N/A N/A
1004 Unknown N/A N/A
1204 Unknown N/A N/A
Usage Information
Foscam-FI8908W.jpg

Info

Cheap IR wireless IP/Network Pan/tilt Camera

Status

Provisionally working either as a plug and play IP camera with pan/tilt commands or as a 'Generic Motion IP camera' under motion wrapper and used as a sensor as well as recording movement etc.

Generic Motion IP Camera Hack

If using under motion the pan/tilt commands do not work. It can optionally be made 'plug and play' under motion by manually adding the mac range of both the wireless and wired adapters into the 'Generic Motion IP Camera' template:

  • Wireless range 79373008896 to 79389786111 (DHCP).
  • Wired range 414170742784 to 414171791359 (DHCP).

After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:

  • hxxp://<CAMERA_IP_ADDRESS>/videostream.cgi?user=XXXXX&pwd=XXXXX

Replace the ip address and the XXXXX with your settings

Pros:

  • Plug and Play (Just give it a sensible name)
  • Installed under motion for security monitoring/recording

Cons:

  • Path must be manually set as described above
  • No Pan/Tilt other than via its own web interface

Plug and Play Template Settings

This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.

  1. 84 Get video frame
conn_.Reconnect()
auth_s="user="+device_.devdata_[114]+"&pwd="+device_.devdata_[115];

fix_path=device_.devdata_[2]+auth_s;
fix_path='/'+fix_path if(fix_path[0]!='/'[0]);

s = "GET "+fix_path+" HTTP/1.0\r\n"
s+= "Accept: */*\r\n"
s+= "\r\n"

conn_.Send(s)
recv=""
while(true)
  buff=conn_.Recv(16384, 5000)
  if(buff.length() == 0)
     break
   end
   recv = recv +  buff
end
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)
  fileName="/tmp/ip_camera_img"+device_.devid_.to_s
  imageFile=File.new(fileName+".jpg",'w')
  imageFile.print $1
  imageFile.close()
  system("/usr/bin/convert "+fileName+".jpg "+fileName+".png");
  size=File.stat(fileName+".png").size 
  imageFile=File.new(fileName+".png",'r')
  img = imageFile.read(size);
  imageFile.close()
  data_set(img)
  format_set('png')
end
  1. 201 Move Down
conn_.Reconnect()
auth_s="user="+device_.devdata_[114]+"&pwd="+device_.devdata_[115];
s = "GET /decoder_control.cgi?command=2&onestep=1&"+auth_s
s+= " HTTP/1.0\r\n Accept: */*\r\n"
s+= "\r\n"

conn_.Send(s)
recv=""
while(true)
  buff=conn_.Recv(256, 5000)
  if(buff.length() == 0)
     break
   end
   recv = recv +  buff
end
  1. 202 move left
conn_.Reconnect()
auth_s="user="+device_.devdata_[114]+"&pwd="+device_.devdata_[115];
#auth_a=Array.new;
#auth_s.each{|c| auth_a.push(c)}
s = "GET /decoder_control.cgi?command=4&onestep=1&"+auth_s
s+= " HTTP/1.0\r\n Accept: */*\r\n"
#s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
s+= "\r\n"

conn_.Send(s)
recv=""
while(true)
  buff=conn_.Recv(256, 5000)
  if(buff.length() == 0)
     break
   end
   recv = recv +  buff
end
  1. 203 Move Right
conn_.Reconnect()
auth_s="user="+device_.devdata_[114]+"&pwd="+device_.devdata_[115];
#auth_a=Array.new;
#auth_s.each{|c| auth_a.push(c)}
s = "GET /decoder_control.cgi?command=6&onestep=1&"+auth_s
s+= " HTTP/1.0\r\n Accept: */*\r\n"
#s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
s+= "\r\n"

conn_.Send(s)
recv=""
while(true)
  buff=conn_.Recv(256, 5000)
  if(buff.length() == 0)
     break
   end
   recv = recv +  buff
end
  1. 200 Move Up
conn_.Reconnect()
auth_s="user="+device_.devdata_[114]+"&pwd="+device_.devdata_[115];
#auth_a=Array.new;
#auth_s.each{|c| auth_a.push(c)}
s = "GET /decoder_control.cgi?command=0&onestep=1&"+auth_s
s+= " HTTP/1.0\r\n Accept: */*\r\n"
#s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
s+= "\r\n"

conn_.Send(s)
recv=""
while(true)
  buff=conn_.Recv(256, 5000)
  if(buff.length() == 0)
     break
   end
   recv = recv +  buff
end

It can be made 'plug and play' by adding the mac range of both the wireless and wired adapters into the new template:

  • Wireless range 79373008896 to 79389786111 (DHCP).
  • Wired range 414170742784 to 414171791359 (DHCP).

Pros:

  • Plug and play (Just give it a sensible name)
  • Pan and Tilt work from on screen arrows

Cons:

  • No motion capture

Features

  • Browser based
  • 10/100mbit LAN

Dropouts

There have been reports of dhcp dropouts. Suggested fix: http://blog.stead.id.au/2010/06/resolving-foscam-connection-dropouts.html

Wireless Setup

How to setup IP camera wirelessly http://foscam.us/forum/post15934.html#p15934

Test and Tweak IP Camera Setup and Configuration

Make sure your IP Camera is functioning at peak ability http://foscam.us/forum/post34164.html#p34164

Links