<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Make_a_DCE_Device_in_5_minutes</id>
	<title>Make a DCE Device in 5 minutes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Make_a_DCE_Device_in_5_minutes"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;action=history"/>
	<updated>2026-10-27T09:50:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=29378&amp;oldid=prev</id>
		<title>Buggman at 01:37, 22 January 2012</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=29378&amp;oldid=prev"/>
		<updated>2012-01-22T01:37:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:37, 22 January 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are 2 ways to add a new device.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are 2 ways to add a new device.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/del&gt;For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/del&gt;We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the first step is to define &lt;/del&gt;the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Define &lt;/ins&gt;the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;First see if you can find &lt;/del&gt;an existing device that has a similar function to the one you want to create&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  &lt;/del&gt;Choose an existing manufacturer and/or category to see some the devices in the &quot;Models&quot; list&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  &lt;/del&gt;Click edit to view the device&#039;s data, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;command &lt;/del&gt;and events&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  &lt;/del&gt;Note that the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;command &lt;/del&gt;are put into &#039;groups&#039;, so you will need to click on the command group to see the commands that device implements&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  &lt;/del&gt;Now figure out what data, commands and events your device will use.  You can also click on &quot;Advanced&quot;, &quot;DCE&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and &lt;/del&gt;view a list of all the commands in the system and which devices implement them.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## Find &lt;/ins&gt;an existing device that has a similar function to the one you want to create&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;The data parameters is not really important.  It can be anything your device will need to run.  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;If &lt;/del&gt;the device is going to control some equipment via RS232, you&#039;ll want a parameter to indicate the COM port&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, for example&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/ins&gt;Choose an existing manufacturer and/or category to see some the devices in the &quot;Models&quot; list&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/ins&gt;Click edit to view the device&#039;s data, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;commands &lt;/ins&gt;and events&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Next, figure &lt;/del&gt;out what command your device will want to implement.  Here it&#039;s more important to try to use the same commands in the same way as other, similar devices.  This will mean that the remote controls (Orbiters) for those devices will work for yours too. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Also, other developers may expect your device to implement a logical command.  For example, someone may develop a doorbell device, which allows the user to pause all his media when someone is at the door so he will hear the  bell.  The doorbell device may, therefore, send a &quot;Pause&quot; command destined to every device in the house of the category &quot;Media Player&quot;, expecting that any media player should know what that means. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;From the Device Template list page there is also a link to manage commands which lets you see all the existing commands, what parameters they take, what devices implement them, and how, so that you can be sure your device is capable of behaving in a similar manner.  Of course, you can add as much custom functionality as you want, but it&#039;s recommended that your device implements at least the basics in a consistent manner.  On/Off, skip forward, skip back, etc.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/ins&gt;Note that the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;commands &lt;/ins&gt;are put into &#039;groups&#039;, so you will need to click on the command group to see the commands that device implements&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;## &lt;/ins&gt;Now figure out what data, commands and events your device will use.  You can also click on &quot;Advanced&quot;, &quot;DCE&quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/ins&gt;view a list of all the commands in the system and which devices implement them. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;The data parameters is not really important.  It can be anything your device will need to run.  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;For example, if &lt;/ins&gt;the device is going to control some equipment via RS232, you&#039;ll want a parameter to indicate the COM port.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Lastly, decide &lt;/del&gt;on what events your device should fire.  Again, try to use the same events in the same way as similar devices.  The user may have created an event handler, for example, that turns on a siren when the &quot;Security Breach&quot; event is detected.  If you are making a device for an alarm panel and see that the other panels fire the &quot;Security Breach&quot; event, then if yours fires the same event &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the user will be &lt;/del&gt;swap his current panel for yours and know that all his event handlers will still work.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Figure &lt;/ins&gt;out what command your device will want to implement.  Here it&#039;s more important to try to use the same commands in the same way as other, similar devices.  This will mean that the remote controls (Orbiters) for those devices will work for yours too.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Also, other developers may expect your device to implement a logical command.  For example, someone may develop a doorbell device, which allows the user to pause all his media when someone is at the door so he will hear the  bell.  The doorbell device may, therefore, send a &quot;Pause&quot; command destined to every device in the house of the category &quot;Media Player&quot;, expecting that any media player should know what that means.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Once you decided on the data, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;command &lt;/del&gt;and events, you&#039;ve done the hard part. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Now just go back to the [[List Page]] page, choose the manufacturer, or add one, and choose a category. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Once those are chosen, the &#039;add new&#039; box is available under the Models list.  Type in a descriptive name for your device, and click &#039;add&#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;From the Device Template list page there is also a link to manage commands which lets you see all the existing commands, what parameters they take, what devices implement them, and how, so that you can be sure your device is capable of behaving in a similar manner.  Of course, you can add as much custom functionality as you want, but it&#039;s recommended that your device implements at least the basics in a consistent manner.  On/Off, skip forward, skip back, etc.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Decide &lt;/ins&gt;on what events your device should fire.  Again, try to use the same events in the same way as similar devices.  The user may have created an event handler, for example, that turns on a siren when the &quot;Security Breach&quot; event is detected.  If you are making a device for an alarm panel and see that the other panels fire the &quot;Security Breach&quot; event, then if yours fires the same event &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;other users can &lt;/ins&gt;swap his current panel for yours and know that all his event handlers will still work. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;Once you decided on the data, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;commands &lt;/ins&gt;and events, you&#039;ve done the hard part.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You are now on the [[Edit Page]] page.  Check that the device implements DCE.  You can leave alone the remotes, controlled via, package and a/v sections for now.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Now just go back to the [[List Page]] page, choose the manufacturer, or add one, and choose a category.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Once those are chosen, the &#039;add new&#039; box is available under the Models list.  Type in a descriptive name for your device, and click &#039;add&#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Add your device&#039;s data parameters.  You can use an existing parameter if it&#039;s applicable, or add one.  The name is really just a description.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;You are now on the [[Edit Page]] page.  Check that the device implements DCE.  You can leave alone the remotes, controlled via, package and a/v sections for now.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;You will see here all the Command Groups that other devices in this category already implement.  Click &#039;Edit Commands&#039; to see what commands are in that group. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;If there is a group that is appropriate for your device, just enable it to add those commands to your device. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;You can also create one more new groups.  All commands in all groups you select will be implemented by your device. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Then add the commands to your device, explaining how your device implements them. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;You can also add new commands.  When adding the parameters for your commands, you can make the parameters &quot;out&quot; parameters.  This means when another device sends you the command, you will get a pointer to this parameter--rather than the parameter itself.  You just assign the value you want to return, and the other device that sent you the command will see it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Add your device&#039;s data parameters.  You can use an existing parameter if it&#039;s applicable, or add one.  The name is really just a description.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;You will see here all the Command Groups that other devices in this category already implement.  Click &#039;Edit Commands&#039; to see what commands are in that group.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lastly, add the events, and click save.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;If there is a group that is appropriate for your device, just enable it to add those commands to your device.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;You can also create one more new groups.  All commands in all groups you select will be implemented by your device.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]] [[Cpp]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Then add the commands to your device, explaining how your device implements them.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;You can also add new commands.  When adding the parameters for your commands, you can make the parameters &quot;out&quot; parameters.  This means when another device sends you the command, you will get a pointer to this parameter--rather than the parameter itself.  You just assign the value you want to return, and the other device that sent you the command will see it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Lastly, add the events, and click save.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or &lt;/ins&gt;[[Cpp]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Buggman</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=24934&amp;oldid=prev</id>
		<title>Hipper at 21:16, 20 August 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=24934&amp;oldid=prev"/>
		<updated>2010-08-20T21:16:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:16, 20 August 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lastly, add the events, and click save.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lastly, add the events, and click save.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] [[Cpp&lt;/ins&gt;]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hipper</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=23801&amp;oldid=prev</id>
		<title>Marie.o: beautification</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=23801&amp;oldid=prev"/>
		<updated>2010-05-17T20:29:30Z</updated>

		<summary type="html">&lt;p&gt;beautification&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:29, 17 May 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&amp;#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&amp;#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;There are 2 ways to add a new device.  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &quot;Models&quot; list.  Click edit to view the device&#039;s data, command and events.  Note that the command are put into &#039;groups&#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &quot;Advanced&quot;, &quot;DCE&quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &quot;Models&quot; list.  Click edit to view the device&#039;s data, command and events.  Note that the command are put into &#039;groups&#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &quot;Advanced&quot;, &quot;DCE&quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&#039;ll want a parameter to indicate the COM port, for example.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&#039;ll want a parameter to indicate the COM port, for example.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Next, figure out what command your device will want to implement.  Here it&#039;s more important to try to use the same commands in the same way as other, similar devices.  This will mean that the remote controls (Orbiters) for those devices will work for yours too.  Also, other developers may expect your device to implement a logical command.  For example, someone may develop a doorbell device, which allows the user to pause all his media when someone is at the door so he will hear the  bell.  The doorbell device may, therefore, send a &quot;Pause&quot; command destined to every device in the house of the category &quot;Media Player&quot;, expecting that any media player should know what that means.  From the Device Template list page there is also a link to manage commands which lets you see all the existing commands, what parameters they take, what devices implement them, and how, so that you can be sure your device is capable of behaving in a similar manner.  Of course, you can add as much custom functionality as you want, but it&#039;s recommended that your device implements at least the basics in a consistent manner.  On/Off, skip forward, skip back, etc.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Lastly, decide on what events your device should fire.  Again, try to use the same events in the same way as similar devices.  The user may have created an event handler, for example, that turns on a siren when the &quot;Security Breach&quot; event is detected.  If you are making a device for an alarm panel and see that the other panels fire the &quot;Security Breach&quot; event, then if yours fires the same event the user will be swap his current panel for yours and know that all his event handlers will still work.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Next, figure out what command your device will want to implement.  Here it&#039;s more important to try to use the same commands in the same way as other, similar devices.  This will mean that the remote controls (Orbiters) for those devices will work for yours too.  Also, other developers may expect your device to implement a logical command.  For example, someone may develop a doorbell device, which allows the user to pause all his media when someone is at the door so he will hear the  bell.  The doorbell device may, therefore, send a &quot;Pause&quot; command destined to every device in the house of the category &quot;Media Player&quot;, expecting that any media player should know what that means.  From the Device Template list page there is also a link to manage commands which lets you see all the existing commands, what parameters they take, what devices implement them, and how, so that you can be sure your device is capable of behaving in a similar manner.  Of course, you can add as much custom functionality as you want, but it&#039;s recommended that your device implements at least the basics in a consistent manner.  On/Off, skip forward, skip back, etc.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Once you decided on the data, command and events, you&#039;ve done the hard part.  Now just go back to the [[List Page]] page, choose the manufacturer, or add one, and choose a category.  Once those are chosen, the &#039;add new&#039; box is available under the Models list.  Type in a descriptive name for your device, and click &#039;add&#039;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;You are now on the [[Edit Page]] page.  Check that the device implements DCE.  You can leave alone the remotes, controlled via, package and a/v sections for now.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lastly, decide on what events your device should fire.  Again, try to use the same events in the same way as similar devices.  The user may have created an event handler, for example, that turns on a siren when the &quot;Security Breach&quot; event is detected.  If you are making a device for an alarm panel and see that the other panels fire the &quot;Security Breach&quot; event, then if yours fires the same event the user will be swap his current panel for yours and know that all his event handlers will still work.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Add your device&#039;s data parameters.  You can use an existing parameter if it&#039;s applicable, or add one.  The name is really just a description.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;You will see here all the Command Groups that other devices in this category already implement.  Click &#039;Edit Commands&#039; to see what commands are in that group.  If there is a group that is appropriate for your device, just enable it to add those commands to your device.  You can also create one more new groups.  All commands in all groups you select will be implemented by your device.  Then add the commands to your device, explaining how your device implements them.  You can also add new commands.  When adding the parameters for your commands, you can make the parameters &quot;out&quot; parameters.  This means when another device sends you the command, you will get a pointer to this parameter--rather than the parameter itself.  You just assign the value you want to return, and the other device that sent you the command will see it.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Once you decided on the data, command and events, you&#039;ve done the hard part.  Now just go back to the [[List Page]] page, choose the manufacturer, or add one, and choose a category.  Once those are chosen, the &#039;add new&#039; box is available under the Models list.  Type in a descriptive name for your device, and click &#039;add&#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Lastly, add the events, and click save.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You are now on the [[Edit Page]] page.  Check that the device implements DCE.  You can leave alone the remotes, controlled via, package and a/v sections for now.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Add your device&#039;s data parameters.  You can use an existing parameter if it&#039;s applicable, or add one.  The name is really just a description.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;You will see here all the Command Groups that other devices in this category already implement.  Click &#039;Edit Commands&#039; to see what commands are in that group.  If there is a group that is appropriate for your device, just enable it to add those commands to your device.  You can also create one more new groups.  All commands in all groups you select will be implemented by your device.  Then add the commands to your device, explaining how your device implements them.  You can also add new commands.  When adding the parameters for your commands, you can make the parameters &quot;out&quot; parameters.  This means when another device sends you the command, you will get a pointer to this parameter--rather than the parameter itself.  You just assign the value you want to return, and the other device that sent you the command will see it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lastly, add the events, and click save.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Marie.o</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=4635&amp;oldid=prev</id>
		<title>Mstovenour: Added to Category: Programmer&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=4635&amp;oldid=prev"/>
		<updated>2007-08-11T14:32:41Z</updated>

		<summary type="html">&lt;p&gt;Added to Category: Programmer&amp;#039;s Guide&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:32, 11 August 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Programmer&#039;s Guide]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &amp;#039;fill-in-the-blanks&amp;#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&amp;#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &amp;#039;fill-in-the-blanks&amp;#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embedded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&amp;#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &amp;quot;Advanced&amp;quot;, &amp;quot;Device Templates&amp;quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[LinuxMCE Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &amp;quot;Advanced&amp;quot;, &amp;quot;Device Templates&amp;quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mstovenour</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3554&amp;oldid=prev</id>
		<title>Jerry finn at 09:11, 19 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3554&amp;oldid=prev"/>
		<updated>2007-03-19T09:11:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:11, 19 March 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/del&gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;embeded &lt;/del&gt;Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;embedded &lt;/ins&gt;Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other LinuxMCE users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  LinuxMCE&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;Admin Website]] that was installed on your computer when you installed LinuxMCE.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &amp;quot;Models&amp;quot; list.  Click edit to view the device&amp;#039;s data, command and events.  Note that the command are put into &amp;#039;groups&amp;#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &amp;quot;Advanced&amp;quot;, &amp;quot;DCE&amp;quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &amp;quot;Models&amp;quot; list.  Click edit to view the device&amp;#039;s data, command and events.  Note that the command are put into &amp;#039;groups&amp;#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &amp;quot;Advanced&amp;quot;, &amp;quot;DCE&amp;quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&amp;#039;ll want a parameter to indicate the COM port, for example.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&amp;#039;ll want a parameter to indicate the COM port, for example.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3244&amp;oldid=prev</id>
		<title>Jerry finn at 14:26, 15 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3244&amp;oldid=prev"/>
		<updated>2007-03-15T14:26:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:26, 15 March 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embeded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &#039;fill-in-the-blanks&#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embeded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;&#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[Pluto Admin Website]] that was installed on your computer when you installed &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[Pluto Admin Website]] that was installed on your computer when you installed &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.  Login, and choose &quot;Advanced&quot;, &quot;Device Templates&quot;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &amp;quot;Models&amp;quot; list.  Click edit to view the device&amp;#039;s data, command and events.  Note that the command are put into &amp;#039;groups&amp;#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &amp;quot;Advanced&amp;quot;, &amp;quot;DCE&amp;quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &amp;quot;Models&amp;quot; list.  Click edit to view the device&amp;#039;s data, command and events.  Note that the command are put into &amp;#039;groups&amp;#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &amp;quot;Advanced&amp;quot;, &amp;quot;DCE&amp;quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&amp;#039;ll want a parameter to indicate the COM port, for example.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&amp;#039;ll want a parameter to indicate the COM port, for example.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Lastly, add the events, and click save.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Lastly, add the events, and click save.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=1940&amp;oldid=prev</id>
		<title>Wikiadmin: Imported document</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=1940&amp;oldid=prev"/>
		<updated>2006-06-05T16:44:36Z</updated>

		<summary type="html">&lt;p&gt;Imported document&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&amp;quot;#FFCFCF&amp;quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;There are 2 ways to add a new device.  1) For most external devices that are controlled by  RS232, USB or Ethernet, you can use GSD (Generic Serial Device).  There is a &amp;#039;fill-in-the-blanks&amp;#039; web form for you to specify the protocol--no programming is required.  GSD also includes an embeded Ruby-language processor, so you can do almost anything and even complex, sophisticated devices can be created easily.  Whatever protocol and Ruby commands you input are automatically sent back to our master database and shared with all other Pluto users, so everyone can use the device (you can turn this option off).  Nearly all external devices, like home automation components, use GSD.  2) We also have a generator that will build you a cross-platform C++ project.  Pluto&amp;#039;s sophisticated, internal devices like Bluetooth communication, software media players, etc. are all written in C/C++.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Either way, the first step is to define the data, commands and events for your device.  Go to the [[Pluto Admin Website]] that was installed on your computer when you installed Pluto.  Login, and choose &amp;quot;Advanced&amp;quot;, &amp;quot;Device Templates&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First see if you can find an existing device that has a similar function to the one you want to create.  Choose an existing manufacturer and/or category to see some the devices in the &amp;quot;Models&amp;quot; list.  Click edit to view the device&amp;#039;s data, command and events.  Note that the command are put into &amp;#039;groups&amp;#039;, so you will need to click on the command group to see the commands that device implements.  Now figure out what data, commands and events your device will use.  You can also click on &amp;quot;Advanced&amp;quot;, &amp;quot;DCE&amp;quot;, and view a list of all the commands in the system and which devices implement them.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The data parameters is not really important.  It can be anything your device will need to run.  If the device is going to control some equipment via RS232, you&amp;#039;ll want a parameter to indicate the COM port, for example.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, figure out what command your device will want to implement.  Here it&amp;#039;s more important to try to use the same commands in the same way as other, similar devices.  This will mean that the remote controls (Orbiters) for those devices will work for yours too.  Also, other developers may expect your device to implement a logical command.  For example, someone may develop a doorbell device, which allows the user to pause all his media when someone is at the door so he will hear the  bell.  The doorbell device may, therefore, send a &amp;quot;Pause&amp;quot; command destined to every device in the house of the category &amp;quot;Media Player&amp;quot;, expecting that any media player should know what that means.  From the Device Template list page there is also a link to manage commands which lets you see all the existing commands, what parameters they take, what devices implement them, and how, so that you can be sure your device is capable of behaving in a similar manner.  Of course, you can add as much custom functionality as you want, but it&amp;#039;s recommended that your device implements at least the basics in a consistent manner.  On/Off, skip forward, skip back, etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly, decide on what events your device should fire.  Again, try to use the same events in the same way as similar devices.  The user may have created an event handler, for example, that turns on a siren when the &amp;quot;Security Breach&amp;quot; event is detected.  If you are making a device for an alarm panel and see that the other panels fire the &amp;quot;Security Breach&amp;quot; event, then if yours fires the same event the user will be swap his current panel for yours and know that all his event handlers will still work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Once you decided on the data, command and events, you&amp;#039;ve done the hard part.  Now just go back to the [[List Page]] page, choose the manufacturer, or add one, and choose a category.  Once those are chosen, the &amp;#039;add new&amp;#039; box is available under the Models list.  Type in a descriptive name for your device, and click &amp;#039;add&amp;#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You are now on the [[Edit Page]] page.  Check that the device implements DCE.  You can leave alone the remotes, controlled via, package and a/v sections for now.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Add your device&amp;#039;s data parameters.  You can use an existing parameter if it&amp;#039;s applicable, or add one.  The name is really just a description.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will see here all the Command Groups that other devices in this category already implement.  Click &amp;#039;Edit Commands&amp;#039; to see what commands are in that group.  If there is a group that is appropriate for your device, just enable it to add those commands to your device.  You can also create one more new groups.  All commands in all groups you select will be implemented by your device.  Then add the commands to your device, explaining how your device implements them.  You can also add new commands.  When adding the parameters for your commands, you can make the parameters &amp;quot;out&amp;quot; parameters.  This means when another device sends you the command, you will get a pointer to this parameter--rather than the parameter itself.  You just assign the value you want to return, and the other device that sent you the command will see it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly, add the events, and click save.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Now, decide how you want to implement your device.  Choose one of the following: [[GSD]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
</feed>