Difference between revisions of "D-Link DCS-5300G"

From LinuxMCE
Jump to: navigation, search
m
m (Added category: GSD)
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
[[Category: Hardware]]
 +
{{Versioninfo|810Status=Working|810UpdatedDate=28 February 2012|810UpdatedBy=gadgetlmce}}
 
[[Category: Cameras]]
 
[[Category: Cameras]]
 
[[Category: IP Cameras]]
 
[[Category: IP Cameras]]
 +
[[Category: GSD]]
  
 
[[Image:D-link-dcs-5300g.jpg|right]]
 
[[Image:D-link-dcs-5300g.jpg|right]]
Line 37: Line 40:
 
   10:auth_s.each{|c| auth_a.push(c)}
 
   10:auth_s.each{|c| auth_a.push(c)}
 
   11:
 
   11:
   12:fix_path=device_.devdata_[2];
+
   12:fix_path=device_.devdata_[2]
   13:fix_path='/'+fix_path if(fix_path[0]!='/'[0]);
+
   13:fix_path='/'+fix_path if fix_path[0]!='/'[0]
 
   14:
 
   14:
 
   15:s = "GET "+fix_path+" HTTP/1.0\r\n"
 
   15:s = "GET "+fix_path+" HTTP/1.0\r\n"
Line 47: Line 50:
 
   20:conn_.Send(s)
 
   20:conn_.Send(s)
 
   21:recv=""
 
   21:recv=""
   22:while(true)
+
   22:loop do
 
   23:  buff=conn_.Recv(16384, 5000)
 
   23:  buff=conn_.Recv(16384, 5000)
   24:  if(buff.length() == 0)
+
   24:  if buff.empty?
   25:     break
+
   25:   break
   26:   end
+
   26: end
   27:   recv = recv +  buff
+
   27: recv += buff
 
   28:end
 
   28:end
   29:if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)
+
   29:if recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m
 
   30:  fileName="/tmp/ip_camera_img"+device_.devid_.to_s
 
   30:  fileName="/tmp/ip_camera_img"+device_.devid_.to_s
 
   31:  imageFile=File.new(fileName+".jpg",'w')
 
   31:  imageFile=File.new(fileName+".jpg",'w')
Line 83: Line 86:
 
   56:conn_.Send(s)
 
   56:conn_.Send(s)
 
   57:recv=""
 
   57:recv=""
   58:while(true)
+
   58:loop do
 
   59:buff=conn_.Recv(256, 5000)
 
   59:buff=conn_.Recv(256, 5000)
   60:if(buff.length() == 0)
+
   60:if buff.empty?
 
   61:break
 
   61:break
 
   62:end
 
   62:end
   63:recv = recv + buff
+
   63:recv += buff
 
   64:end
 
   64:end
 
   65:return @returnParamArray
 
   65:return @returnParamArray
Line 106: Line 109:
 
   79:conn_.Send(s)
 
   79:conn_.Send(s)
 
   80:recv=""
 
   80:recv=""
   81:while(true)
+
   81:loop do
 
   82:buff=conn_.Recv(256, 5000)
 
   82:buff=conn_.Recv(256, 5000)
   83:if(buff.length() == 0)
+
   83:if buff.empty?
 
   84:break
 
   84:break
 
   85:end
 
   85:end
   86:recv = recv + buff
+
   86:recv += buff
 
   87:end
 
   87:end
 
   88:return @returnParamArray
 
   88:return @returnParamArray
Line 129: Line 132:
 
  102:conn_.Send(s)
 
  102:conn_.Send(s)
 
  103:recv=""
 
  103:recv=""
  104:while(true)
+
  104:loop do
 
  105:buff=conn_.Recv(256, 5000)
 
  105:buff=conn_.Recv(256, 5000)
  106:if(buff.length() == 0)
+
  106:if buff.empty?
 
  107:break
 
  107:break
 
  108:end
 
  108:end
  109:recv = recv + buff
+
  109:recv += buff
 
  110:end
 
  110:end
 
  111:return @returnParamArray
 
  111:return @returnParamArray
Line 152: Line 155:
 
  125:conn_.Send(s)
 
  125:conn_.Send(s)
 
  126:recv=""
 
  126:recv=""
  127:while(true)
+
  127:loop do
 
  128:  buff=conn_.Recv(256, 5000)
 
  128:  buff=conn_.Recv(256, 5000)
  129:  if(buff.length() == 0)
+
  129:  if buff.empty?
  130:     break
+
  130:   break
  131:   end
+
  131: end
  132:   recv = recv +  buff
+
  132: recv += buff
 
  133:end
 
  133:end
 
  134:return @returnParamArray
 
  134:return @returnParamArray
Line 175: Line 178:
 
  148:end
 
  148:end
 
</pre>
 
</pre>
 +
 +
= 8.10 Template Fixes =
 +
I have managed to get a DCS-5300 camera to work on 8.10 but have had to manually fix the template (#1919 for the DCS5300G which is the wireless version). These are the steps that I had to do.
 +
 +
1. Add "Core" under "Device is controlled via category"
 +
 +
2. Add "Ruby Internal Commands" under section 'Commands' and make sure 'Commands' and 'Pan/Tilt/Zoom' are checked.
 +
 +
3. Click on Edit Ruby commands and hit update button. This will add the missing ruby commands.
 +
 +
4. In #350 process incoming Data put the following ruby code.
 +
 +
<pre>
 +
conn_.Close()
 +
</pre>
 +
 +
6. Do a reload router and everything should be OK.

Latest revision as of 15:48, 11 July 2016

Version Status Date Updated Updated By
710 Unknown N/A N/A
810 Working 28 February 2012 gadgetlmce
1004 Unknown N/A N/A
1204 Unknown N/A N/A
1404 Unknown N/A N/A
Usage Information
D-link-dcs-5300g.jpg
DCS-70.jpg

Status

The D-Link DCS-5300G device template can be derived from the Panasonic IP Camera. A initial version can be found in the testing sqlCVS repository. It is fully plug and play and supports pan and tilt.

Features

  • Browser based
  • PAN Range +/- 135°, TILT Range +90°/ -45°
  • 802.11g WLAN (2 antennas with RP-SMA connector)
  • 10/100mbit LAN
  • 2x I/O Port, 1x Sensor Input, 1x Relay Output
  • 1x mic input, 1x A/V Connector
  • 30fps max
  • active motion detector
  • MPEG4 compression
  • UPnP, DynDNS
  • Real-Time Live Video & Audio Streaming
  • compatible with DCS-70 outdoor mount

Ruby Code

RCODE:
   0:require 'Ruby_Generic_Serial_Device'
   1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper
   2:end
   3:class Device_95 < 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:fix_path=device_.devdata_[2]
  13:fix_path='/'+fix_path if fix_path[0]!='/'[0]
  14:
  15:s = "GET "+fix_path+" HTTP/1.0\r\n"
  16:s+= "Accept: */*\r\n"
  17:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
  18:s+= "\r\n"
  19:
  20:conn_.Send(s)
  21:recv=""
  22:loop do
  23:  buff=conn_.Recv(16384, 5000)
  24:  if buff.empty?
  25:    break
  26:  end
  27:  recv += buff
  28:end
  29:if recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m
  30:  fileName="/tmp/ip_camera_img"+device_.devid_.to_s
  31:  imageFile=File.new(fileName+".jpg",'w')
  32:  imageFile.print $1
  33:  imageFile.close()
  34:  system("/usr/bin/convert "+fileName+".jpg "+fileName+".png");
  35:  size=File.stat(fileName+".png").size 
  36:  imageFile=File.new(fileName+".png",'r')
  37:  img = imageFile.read(size);
  38:  imageFile.close()
  39:  data_set(img)
  40:  format_set('png')
  41:end
  42:return @returnParamArray
  43:end
  44:#### 200 ####################################################################
  45:def cmd_200(cmd=nil)
  46:@returnParamArray.clear
  47:conn_.Reconnect()
  48:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]
  49:auth_a=Array.new;
  50:auth_s.each{|c| auth_a.push(c)}
  51:s = "GET /cgi-bin/camctrl.cgi?move=up HTTP/1.0\r\n"
  52:s+= "Accept: */*\r\n"
  53:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
  54:s+= "\r\n"
  55:
  56:conn_.Send(s)
  57:recv=""
  58:loop do
  59:buff=conn_.Recv(256, 5000)
  60:if buff.empty?
  61:break
  62:end
  63:recv += buff
  64:end
  65:return @returnParamArray
  66:end
  67:#### 201 ####################################################################
  68:def cmd_201(cmd=nil)
  69:@returnParamArray.clear
  70:conn_.Reconnect()
  71:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]
  72:auth_a=Array.new;
  73:auth_s.each{|c| auth_a.push(c)}
  74:s = "GET /cgi-bin/camctrl.cgi?move=down HTTP/1.0\r\n"
  75:s+= "Accept: */*\r\n"
  76:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
  77:s+= "\r\n"
  78:
  79:conn_.Send(s)
  80:recv=""
  81:loop do
  82:buff=conn_.Recv(256, 5000)
  83:if buff.empty?
  84:break
  85:end
  86:recv += buff
  87:end
  88:return @returnParamArray
  89:end
  90:#### 202 ####################################################################
  91:def cmd_202(cmd=nil)
  92:@returnParamArray.clear
  93:conn_.Reconnect()
  94:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]
  95:auth_a=Array.new;
  96:auth_s.each{|c| auth_a.push(c)}
  97:s = "GET /cgi-bin/camctrl.cgi?move=left HTTP/1.0\r\n"
  98:s+= "Accept: */*\r\n"
  99:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
 100:s+= "\r\n"
 101:
 102:conn_.Send(s)
 103:recv=""
 104:loop do
 105:buff=conn_.Recv(256, 5000)
 106:if buff.empty?
 107:break
 108:end
 109:recv += buff
 110:end
 111:return @returnParamArray
 112:end
 113:#### 203 ####################################################################
 114:def cmd_203(cmd=nil)
 115:@returnParamArray.clear
 116:conn_.Reconnect()
 117:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]
 118:auth_a=Array.new;
 119:auth_s.each{|c| auth_a.push(c)}
 120:s = "GET /cgi-bin/camctrl.cgi?move=right HTTP/1.0\r\n"
 121:s+= "Accept: */*\r\n"
 122:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"
 123:s+= "\r\n"
 124:
 125:conn_.Send(s)
 126:recv=""
 127:loop do
 128:  buff=conn_.Recv(256, 5000)
 129:  if buff.empty?
 130:    break
 131:  end
 132:  recv += buff
 133:end
 134:return @returnParamArray
 135:end
 136:#### START SETTERS ####################################################################
 137:def initialize()
 138:super
 139:@returnParamArray=Array.new
 140:end
 141:def data_set(value)
 142:@returnParamArray[19]=value
 143:end
 144:def format_set(value)
 145:@returnParamArray[20]=value
 146:end
 147:####  END  SETTERS ####################################################################
 148:end

8.10 Template Fixes

I have managed to get a DCS-5300 camera to work on 8.10 but have had to manually fix the template (#1919 for the DCS5300G which is the wireless version). These are the steps that I had to do.

1. Add "Core" under "Device is controlled via category"

2. Add "Ruby Internal Commands" under section 'Commands' and make sure 'Commands' and 'Pan/Tilt/Zoom' are checked.

3. Click on Edit Ruby commands and hit update button. This will add the missing ruby commands.

4. In #350 process incoming Data put the following ruby code.

conn_.Close()

6. Do a reload router and everything should be OK.