<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gadgetlmce</id>
	<title>LinuxMCE - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gadgetlmce"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php/Special:Contributions/Gadgetlmce"/>
	<updated>2026-07-22T04:32:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=D-Link_DCS-5300G&amp;diff=29565</id>
		<title>D-Link DCS-5300G</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=D-Link_DCS-5300G&amp;diff=29565"/>
		<updated>2012-02-29T09:16:52Z</updated>

		<summary type="html">&lt;p&gt;Gadgetlmce: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo|810Status=Working|810UpdatedDate=28 February 2012|810UpdatedBy=gadgetlmce}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:D-link-dcs-5300g.jpg|right]]&lt;br /&gt;
[[Image:DCS-70.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
= Status =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
* Browser based&lt;br /&gt;
* PAN Range +/- 135°, TILT Range +90°/ -45°&lt;br /&gt;
* 802.11g WLAN (2 antennas with RP-SMA connector)&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
* 2x I/O Port, 1x Sensor Input, 1x Relay Output&lt;br /&gt;
* 1x mic input, 1x A/V Connector&lt;br /&gt;
* 30fps max&lt;br /&gt;
* active motion detector&lt;br /&gt;
* MPEG4 compression&lt;br /&gt;
* UPnP, DynDNS&lt;br /&gt;
* Real-Time Live Video &amp;amp; Audio Streaming&lt;br /&gt;
* compatible with DCS-70 outdoor mount&lt;br /&gt;
&lt;br /&gt;
= Ruby Code =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RCODE:&lt;br /&gt;
   0:require &#039;Ruby_Generic_Serial_Device&#039;&lt;br /&gt;
   1:class Command &amp;lt; Ruby_Generic_Serial_Device::RubyCommandWrapper&lt;br /&gt;
   2:end&lt;br /&gt;
   3:class Device_95 &amp;lt; Ruby_Generic_Serial_Device::RubySerialIOWrapper&lt;br /&gt;
   4:#### 84 ####################################################################&lt;br /&gt;
   5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height, cmd=nil)&lt;br /&gt;
   6:@returnParamArray.clear&lt;br /&gt;
   7:conn_.Reconnect()&lt;br /&gt;
   8:auth_s=device_.devdata_[114]+&amp;quot;:&amp;quot;+device_.devdata_[115]&lt;br /&gt;
   9:auth_a=Array.new;&lt;br /&gt;
  10:auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
  11:&lt;br /&gt;
  12:fix_path=device_.devdata_[2]&lt;br /&gt;
  13:fix_path=&#039;/&#039;+fix_path if fix_path[0]!=&#039;/&#039;[0]&lt;br /&gt;
  14:&lt;br /&gt;
  15:s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
  16:s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
  17:s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
  18:s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
  19:&lt;br /&gt;
  20:conn_.Send(s)&lt;br /&gt;
  21:recv=&amp;quot;&amp;quot;&lt;br /&gt;
  22:loop do&lt;br /&gt;
  23:  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  24:  if buff.empty?&lt;br /&gt;
  25:    break&lt;br /&gt;
  26:  end&lt;br /&gt;
  27:  recv += buff&lt;br /&gt;
  28:end&lt;br /&gt;
  29:if recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m&lt;br /&gt;
  30:  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  31:  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  32:  imageFile.print $1&lt;br /&gt;
  33:  imageFile.close()&lt;br /&gt;
  34:  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  35:  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  36:  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  37:  img = imageFile.read(size);&lt;br /&gt;
  38:  imageFile.close()&lt;br /&gt;
  39:  data_set(img)&lt;br /&gt;
  40:  format_set(&#039;png&#039;)&lt;br /&gt;
  41:end&lt;br /&gt;
  42:return @returnParamArray&lt;br /&gt;
  43:end&lt;br /&gt;
  44:#### 200 ####################################################################&lt;br /&gt;
  45:def cmd_200(cmd=nil)&lt;br /&gt;
  46:@returnParamArray.clear&lt;br /&gt;
  47:conn_.Reconnect()&lt;br /&gt;
  48:auth_s=device_.devdata_[114]+&amp;quot;:&amp;quot;+device_.devdata_[115]&lt;br /&gt;
  49:auth_a=Array.new;&lt;br /&gt;
  50:auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
  51:s = &amp;quot;GET /cgi-bin/camctrl.cgi?move=up HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
  52:s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
  53:s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
  54:s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
  55:&lt;br /&gt;
  56:conn_.Send(s)&lt;br /&gt;
  57:recv=&amp;quot;&amp;quot;&lt;br /&gt;
  58:loop do&lt;br /&gt;
  59:buff=conn_.Recv(256, 5000)&lt;br /&gt;
  60:if buff.empty?&lt;br /&gt;
  61:break&lt;br /&gt;
  62:end&lt;br /&gt;
  63:recv += buff&lt;br /&gt;
  64:end&lt;br /&gt;
  65:return @returnParamArray&lt;br /&gt;
  66:end&lt;br /&gt;
  67:#### 201 ####################################################################&lt;br /&gt;
  68:def cmd_201(cmd=nil)&lt;br /&gt;
  69:@returnParamArray.clear&lt;br /&gt;
  70:conn_.Reconnect()&lt;br /&gt;
  71:auth_s=device_.devdata_[114]+&amp;quot;:&amp;quot;+device_.devdata_[115]&lt;br /&gt;
  72:auth_a=Array.new;&lt;br /&gt;
  73:auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
  74:s = &amp;quot;GET /cgi-bin/camctrl.cgi?move=down HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
  75:s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
  76:s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
  77:s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
  78:&lt;br /&gt;
  79:conn_.Send(s)&lt;br /&gt;
  80:recv=&amp;quot;&amp;quot;&lt;br /&gt;
  81:loop do&lt;br /&gt;
  82:buff=conn_.Recv(256, 5000)&lt;br /&gt;
  83:if buff.empty?&lt;br /&gt;
  84:break&lt;br /&gt;
  85:end&lt;br /&gt;
  86:recv += buff&lt;br /&gt;
  87:end&lt;br /&gt;
  88:return @returnParamArray&lt;br /&gt;
  89:end&lt;br /&gt;
  90:#### 202 ####################################################################&lt;br /&gt;
  91:def cmd_202(cmd=nil)&lt;br /&gt;
  92:@returnParamArray.clear&lt;br /&gt;
  93:conn_.Reconnect()&lt;br /&gt;
  94:auth_s=device_.devdata_[114]+&amp;quot;:&amp;quot;+device_.devdata_[115]&lt;br /&gt;
  95:auth_a=Array.new;&lt;br /&gt;
  96:auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
  97:s = &amp;quot;GET /cgi-bin/camctrl.cgi?move=left HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
  98:s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
  99:s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
 100:s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
 101:&lt;br /&gt;
 102:conn_.Send(s)&lt;br /&gt;
 103:recv=&amp;quot;&amp;quot;&lt;br /&gt;
 104:loop do&lt;br /&gt;
 105:buff=conn_.Recv(256, 5000)&lt;br /&gt;
 106:if buff.empty?&lt;br /&gt;
 107:break&lt;br /&gt;
 108:end&lt;br /&gt;
 109:recv += buff&lt;br /&gt;
 110:end&lt;br /&gt;
 111:return @returnParamArray&lt;br /&gt;
 112:end&lt;br /&gt;
 113:#### 203 ####################################################################&lt;br /&gt;
 114:def cmd_203(cmd=nil)&lt;br /&gt;
 115:@returnParamArray.clear&lt;br /&gt;
 116:conn_.Reconnect()&lt;br /&gt;
 117:auth_s=device_.devdata_[114]+&amp;quot;:&amp;quot;+device_.devdata_[115]&lt;br /&gt;
 118:auth_a=Array.new;&lt;br /&gt;
 119:auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
 120:s = &amp;quot;GET /cgi-bin/camctrl.cgi?move=right HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
 121:s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
 122:s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
 123:s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
 124:&lt;br /&gt;
 125:conn_.Send(s)&lt;br /&gt;
 126:recv=&amp;quot;&amp;quot;&lt;br /&gt;
 127:loop do&lt;br /&gt;
 128:  buff=conn_.Recv(256, 5000)&lt;br /&gt;
 129:  if buff.empty?&lt;br /&gt;
 130:    break&lt;br /&gt;
 131:  end&lt;br /&gt;
 132:  recv += buff&lt;br /&gt;
 133:end&lt;br /&gt;
 134:return @returnParamArray&lt;br /&gt;
 135:end&lt;br /&gt;
 136:#### START SETTERS ####################################################################&lt;br /&gt;
 137:def initialize()&lt;br /&gt;
 138:super&lt;br /&gt;
 139:@returnParamArray=Array.new&lt;br /&gt;
 140:end&lt;br /&gt;
 141:def data_set(value)&lt;br /&gt;
 142:@returnParamArray[19]=value&lt;br /&gt;
 143:end&lt;br /&gt;
 144:def format_set(value)&lt;br /&gt;
 145:@returnParamArray[20]=value&lt;br /&gt;
 146:end&lt;br /&gt;
 147:####  END  SETTERS ####################################################################&lt;br /&gt;
 148:end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 8.10 Template Fixes =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
1. Add &amp;quot;Core&amp;quot; under &amp;quot;Device is controlled via category&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Add &amp;quot;Ruby Internal Commands&amp;quot; under section &#039;Commands&#039; and make sure &#039;Commands&#039; and &#039;Pan/Tilt/Zoom&#039; are checked.&lt;br /&gt;
&lt;br /&gt;
3. Click on Edit Ruby commands and hit update button. This will add the missing ruby commands.&lt;br /&gt;
&lt;br /&gt;
4. In #350 process incoming Data put the following ruby code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Close()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Do a reload router and everything should be OK.&lt;/div&gt;</summary>
		<author><name>Gadgetlmce</name></author>
	</entry>
</feed>