Difference between revisions of "Foscam FI8908W"
(→Status) |
m (→Status) |
||
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. |
− | + | ||
+ | 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 16: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 |
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 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
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