Jump to content

Foscam FI8908W: Difference between revisions

From LinuxMCE
B4rney (talk | contribs)
B4rney (talk | contribs)
Line 10: Line 10:


== Status ==
== 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. If using under motion the pan/tilt commands do not work.
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.
http://forum.linuxmce.org/index.php?topic=10592.0
 
If using under motion the pan/tilt commands do not work. It can be installed under motion (my preferred option) by adding the mac range of both the wireless and wired adapters into the 'Generic Motion IP Camera' template:
Wireless
79373008896 to 79389786111 (DHCP).
Wired
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
 
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.
 
#84 Get video frame
<pre>
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
</pre>
#201 Move Down
<pre>
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
</pre>
#202 move left
<pre>
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
</pre>
#203 Move Right
<pre>
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
</pre>
#200 Move Up
<pre>
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
</pre>
 
Pros:
Plug and play (Just give it a sensible name)
Pan and Tilt work from on screen arrows
Cons:
No motion capture except using the cameras in-built web interface in a browser.


== Features ==
== Features ==

Revision as of 15:35, 15 October 2010

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
1404 Unknown N/A N/A
Usage Information

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.

If using under motion the pan/tilt commands do not work. It can be installed under motion (my preferred option) by adding the mac range of both the wireless and wired adapters into the 'Generic Motion IP Camera' template: Wireless 79373008896 to 79389786111 (DHCP). Wired 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

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

Pros: Plug and play (Just give it a sensible name) Pan and Tilt work from on screen arrows Cons: No motion capture except using the cameras in-built web interface in a browser.

Features

  • Browser based
  • 10/100mbit LAN