Foscam FI8908W
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 |
Contents
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 by 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
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
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
- 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
- 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
- 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
- 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
Features
- Browser based
- 10/100mbit LAN