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 (my preferred option) 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 except using the cameras in-built web interface in a browser.
Features
- Browser based
- 10/100mbit LAN