Difference between revisions of "IPC-1002"
From LinuxMCE
(→Ruby Code) |
(→Ruby Code) |
||
Line 24: | Line 24: | ||
More features can be found at the above link. | More features can be found at the above link. | ||
− | |||
− | |||
RCODE: | RCODE: | ||
0:require 'Ruby_Generic_Serial_Device' | 0:require 'Ruby_Generic_Serial_Device' | ||
1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper | 1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper | ||
2:end | 2:end | ||
− | 3:class | + | 3:class Device_64 < Ruby_Generic_Serial_Device::RubySerialIOWrapper |
4:#### 84 #################################################################### | 4:#### 84 #################################################################### | ||
5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height, cmd=nil) | 5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height, cmd=nil) | ||
Line 39: | Line 37: | ||
10:auth_s.each{|c| auth_a.push(c)} | 10:auth_s.each{|c| auth_a.push(c)} | ||
11: | 11: | ||
− | 12: | + | 12:s = "GET "+device_.devdata_[2]+" HTTP/1.0\r\n" |
− | + | 13:s+= "Accept: */*\r\n" | |
− | + | 14:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" | |
− | + | 15:s+= "\r\n" | |
− | + | 16: | |
− | + | 17:conn_.Send(s) | |
− | + | 18:recv="" | |
− | + | 19:while(true) | |
− | + | 20: buff=conn_.Recv(16384, 5000) | |
− | + | 21: if(buff.length() == 0) | |
− | + | 22: break | |
− | + | 23: end | |
− | + | 24: recv = recv + buff | |
− | + | 25:end | |
− | + | 26:if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m) | |
− | + | 27: fileName="/tmp/ip_camera_img"+device_.devid_.to_s | |
− | + | 28: imageFile=File.new(fileName+".jpg",'w') | |
− | + | 29: imageFile.print $1 | |
− | + | 30: imageFile.close() | |
− | + | 31: system("/usr/bin/convert "+fileName+".jpg "+fileName+".png"); | |
− | + | 32: size=File.stat(fileName+".png").size | |
− | + | 33: imageFile=File.new(fileName+".png",'r') | |
− | + | 34: img = imageFile.read(size); | |
− | + | 35: imageFile.close() | |
− | + | 36: data_set(img) | |
− | + | 37: format_set('png') | |
− | + | 38:end | |
− | + | 39:return @returnParamArray | |
− | + | 40:end | |
− | + | 41:#### 200 #################################################################### | |
− | + | 42:def cmd_200(streamid, cmd=nil) | |
− | + | 43:@returnParamArray.clear | |
− | + | 44:conn_.Reconnect() | |
− | + | 45:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] | |
− | + | 46:auth_a=Array.new; | |
− | + | 47:auth_s.each{|c| auth_a.push(c)} | |
− | + | 48:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_up〈=eng HTTP/1.0\r\n" | |
− | + | 49:s+= "Accept: */*\r\n" | |
− | + | 50:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" | |
− | + | 51:s+= "\r\n" | |
− | + | 52: | |
− | + | 53:conn_.Send(s) | |
− | + | 54:recv="" | |
− | + | 55:while(true) | |
− | + | 56:buff=conn_.Recv(256, 5000) | |
− | + | 57:if(buff.length() == 0) | |
− | + | 58:break | |
− | + | 59:end | |
− | + | 60:recv = recv + buff | |
− | + | 61:end | |
− | + | 62:return @returnParamArray | |
− | + | 63:end | |
− | + | 64:#### 201 #################################################################### | |
− | + | 65:def cmd_201(streamid, cmd=nil) | |
− | + | 66:@returnParamArray.clear | |
− | + | 67:conn_.Reconnect() | |
− | + | 68:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] | |
− | + | 69:auth_a=Array.new; | |
− | + | 70:auth_s.each{|c| auth_a.push(c)} | |
− | + | 71:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_down〈=eng HTTP/1.0\r\n" | |
− | + | 72:s+= "Accept: */*\r\n" | |
− | + | 73:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" | |
− | + | 74:s+= "\r\n" | |
− | + | 75: | |
− | + | 76:conn_.Send(s) | |
− | + | 77:recv="" | |
− | + | 78:while(true) | |
− | + | 79:buff=conn_.Recv(256, 5000) | |
− | + | 80:if(buff.length() == 0) | |
− | + | 81:break | |
− | + | 82:end | |
− | + | 83:recv = recv + buff | |
− | + | 84:end | |
− | + | 85:return @returnParamArray | |
− | + | 86:end | |
− | + | 87:#### 202 #################################################################### | |
− | + | 88:def cmd_202(streamid, cmd=nil) | |
− | + | 89:@returnParamArray.clear | |
− | + | 90:conn_.Reconnect() | |
− | + | 91:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] | |
− | + | 92:auth_a=Array.new; | |
− | + | 93:auth_s.each{|c| auth_a.push(c)} | |
− | + | 94:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_left〈=eng HTTP/1.0\r\n" | |
− | + | 95:s+= "Accept: */*\r\n" | |
− | + | 96:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" | |
− | + | 97:s+= "\r\n" | |
− | + | 98: | |
− | + | 99:conn_.Send(s) | |
− | + | 100:recv="" | |
− | + | 101:while(true) | |
− | + | 102:buff=conn_.Recv(256, 5000) | |
− | + | 103:if(buff.length() == 0) | |
− | + | 104:break | |
− | + | 105:end | |
− | + | 106:recv = recv + buff | |
− | + | 107:end | |
− | + | 108:return @returnParamArray | |
− | + | 109:end | |
− | + | 110:#### 203 #################################################################### | |
− | + | 111:def cmd_203(streamid, cmd=nil) | |
− | + | 112:@returnParamArray.clear | |
− | + | 113:conn_.Reconnect() | |
− | + | 114:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] | |
− | + | 115:auth_a=Array.new; | |
− | + | 116:auth_s.each{|c| auth_a.push(c)} | |
− | + | 117:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_right〈=eng HTTP/1.0\r\n" | |
− | + | 118:s+= "Accept: */*\r\n" | |
− | + | 119:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" | |
− | + | 120:s+= "\r\n" | |
− | + | 121: | |
− | + | 122:conn_.Send(s) | |
− | + | 123:recv="" | |
− | + | 124:while(true) | |
− | + | 125:buff=conn_.Recv(256, 5000) | |
− | + | 126:if(buff.length() == 0) | |
− | + | 127:break | |
− | + | 128:end | |
− | + | 129:recv = recv + buff | |
− | + | 130:end | |
− | + | 131:return @returnParamArray | |
− | + | 132:end | |
− | + | 133:#### 350 #################################################################### | |
− | + | 134:def cmd_350(cmd=nil) | |
− | + | 135:@returnParamArray.clear | |
− | + | 136:conn_.Close() | |
− | + | 137:return @returnParamArray | |
− | + | 138:end | |
− | + | 139:#### START SETTERS #################################################################### | |
− | + | 140:def initialize() | |
− | + | 141:super | |
− | 142:@returnParamArray | + | 142:@returnParamArray=Array.new |
143:end | 143:end | ||
− | 144:def | + | 144:def data_set(value) |
− | 145:@returnParamArray[ | + | 145:@returnParamArray[19]=value |
146:end | 146:end | ||
− | 147:#### END SETTERS #################################################################### | + | 147:def format_set(value) |
− | + | 148:@returnParamArray[20]=value | |
− | + | 149:end | |
+ | 150:#### END SETTERS #################################################################### | ||
+ | 151:end |
Revision as of 12:55, 2 January 2010
Status
The IPC-1002 device template can be derived from the Panasonic IP Camera. A template for this Camera has been submitted (Plug and Play doesn't quiet work however). Pan and Tilt support. This camera is a cheap camera and can be found at http://www.dealextreme.com/details.dx/sku.14272
Features
- Browser based
- PAN Range +/- 180°, TILT Range 120°
- 10/100mbit LAN
- LCD display the IP address /Network mask/gateway IP etc
- 6 infrared LED, automatic operate in dark environment
- 30fps max
- External sensor & alarm interface
- MPEG4 compression
- UPnP, DynDNS
More features can be found at the above link.
RCODE:
0:require 'Ruby_Generic_Serial_Device' 1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper 2:end 3:class Device_64 < Ruby_Generic_Serial_Device::RubySerialIOWrapper 4:#### 84 #################################################################### 5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height, cmd=nil) 6:@returnParamArray.clear 7:conn_.Reconnect() 8:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] 9:auth_a=Array.new; 10:auth_s.each{|c| auth_a.push(c)} 11: 12:s = "GET "+device_.devdata_[2]+" HTTP/1.0\r\n" 13:s+= "Accept: */*\r\n" 14:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" 15:s+= "\r\n" 16: 17:conn_.Send(s) 18:recv="" 19:while(true) 20: buff=conn_.Recv(16384, 5000) 21: if(buff.length() == 0) 22: break 23: end 24: recv = recv + buff 25:end 26:if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m) 27: fileName="/tmp/ip_camera_img"+device_.devid_.to_s 28: imageFile=File.new(fileName+".jpg",'w') 29: imageFile.print $1 30: imageFile.close() 31: system("/usr/bin/convert "+fileName+".jpg "+fileName+".png"); 32: size=File.stat(fileName+".png").size 33: imageFile=File.new(fileName+".png",'r') 34: img = imageFile.read(size); 35: imageFile.close() 36: data_set(img) 37: format_set('png') 38:end 39:return @returnParamArray 40:end 41:#### 200 #################################################################### 42:def cmd_200(streamid, cmd=nil) 43:@returnParamArray.clear 44:conn_.Reconnect() 45:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] 46:auth_a=Array.new; 47:auth_s.each{|c| auth_a.push(c)} 48:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_up〈=eng HTTP/1.0\r\n" 49:s+= "Accept: */*\r\n" 50:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" 51:s+= "\r\n" 52: 53:conn_.Send(s) 54:recv="" 55:while(true) 56:buff=conn_.Recv(256, 5000) 57:if(buff.length() == 0) 58:break 59:end 60:recv = recv + buff 61:end 62:return @returnParamArray 63:end 64:#### 201 #################################################################### 65:def cmd_201(streamid, cmd=nil) 66:@returnParamArray.clear 67:conn_.Reconnect() 68:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] 69:auth_a=Array.new; 70:auth_s.each{|c| auth_a.push(c)} 71:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_down〈=eng HTTP/1.0\r\n" 72:s+= "Accept: */*\r\n" 73:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" 74:s+= "\r\n" 75: 76:conn_.Send(s) 77:recv="" 78:while(true) 79:buff=conn_.Recv(256, 5000) 80:if(buff.length() == 0) 81:break 82:end 83:recv = recv + buff 84:end 85:return @returnParamArray 86:end 87:#### 202 #################################################################### 88:def cmd_202(streamid, cmd=nil) 89:@returnParamArray.clear 90:conn_.Reconnect() 91:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] 92:auth_a=Array.new; 93:auth_s.each{|c| auth_a.push(c)} 94:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_left〈=eng HTTP/1.0\r\n" 95:s+= "Accept: */*\r\n" 96:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" 97:s+= "\r\n" 98: 99:conn_.Send(s) 100:recv="" 101:while(true) 102:buff=conn_.Recv(256, 5000) 103:if(buff.length() == 0) 104:break 105:end 106:recv = recv + buff 107:end 108:return @returnParamArray 109:end 110:#### 203 #################################################################### 111:def cmd_203(streamid, cmd=nil) 112:@returnParamArray.clear 113:conn_.Reconnect() 114:auth_s=device_.devdata_[114]+":"+device_.devdata_[115] 115:auth_a=Array.new; 116:auth_s.each{|c| auth_a.push(c)} 117:s = "GET /cgi-bin/action?action=cam_mv&diretion=cam_right〈=eng HTTP/1.0\r\n" 118:s+= "Accept: */*\r\n" 119:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n" 120:s+= "\r\n" 121: 122:conn_.Send(s) 123:recv="" 124:while(true) 125:buff=conn_.Recv(256, 5000) 126:if(buff.length() == 0) 127:break 128:end 129:recv = recv + buff 130:end 131:return @returnParamArray 132:end 133:#### 350 #################################################################### 134:def cmd_350(cmd=nil) 135:@returnParamArray.clear 136:conn_.Close() 137:return @returnParamArray 138:end 139:#### START SETTERS #################################################################### 140:def initialize() 141:super 142:@returnParamArray=Array.new 143:end 144:def data_set(value) 145:@returnParamArray[19]=value 146:end 147:def format_set(value) 148:@returnParamArray[20]=value 149:end 150:#### END SETTERS #################################################################### 151:end