<?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=A_new_concept_in_collaborative_development</id>
	<title>A new concept in collaborative development - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=A_new_concept_in_collaborative_development"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;action=history"/>
	<updated>2026-07-22T03:08:03Z</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=A_new_concept_in_collaborative_development&amp;diff=6603&amp;oldid=prev</id>
		<title>Danielk: LinuxMCEified</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=6603&amp;oldid=prev"/>
		<updated>2007-10-10T23:41:56Z</updated>

		<summary type="html">&lt;p&gt;LinuxMCEified&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 23:41, 10 October 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;&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 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;LinuxMCE introduces 2 new &lt;/del&gt;software programs--GSD and sqlCVS--which together greatly simplify &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;collaborative &lt;/del&gt;development&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.  In a &lt;/del&gt;smart home &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;environment, there &lt;/del&gt;are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rs232 &lt;/del&gt;controls, which work much better than &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;infrared&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Plus there are lots of other devices &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with RS232&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RS485 &lt;/del&gt;or Ethernet &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ports, like &lt;/del&gt;pool controls, sprinkler systems, alarm panels, lighting controls, 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;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Linux MCE contains two &lt;/ins&gt;software programs -- GSD and sqlCVS -- which together greatly simplify development &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for &quot;&lt;/ins&gt;smart home&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; devices. There &lt;/ins&gt;are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RS-232 &lt;/ins&gt;controls, which work much better than &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;using an IRBlaster like TiVo uses&lt;/ins&gt;. Plus there are lots of other devices &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which communicate over RS-232&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RS-485 &lt;/ins&gt;or Ethernet&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Like &lt;/ins&gt;pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;&lt;/del&gt;For example, call the manufacturers of high-end TV&#039;s with &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RS232 &lt;/del&gt;ports.  They will confirm that if they want their TV to work nicely in a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smarthome &lt;/del&gt;system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http://www.amx.com&lt;/del&gt;] (the two leading &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smarthome &lt;/del&gt;providers), &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;C++ coders start writing new software drivers. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;These drivers then need to be compiled&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the resulting binaries &lt;/del&gt;distributed to dealers. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; It&#039;s a terribly &lt;/del&gt;expensive and burdensome process.&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;For example, call the manufacturers of high-end TV&#039;s with &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RS-232 &lt;/ins&gt;ports.  They will confirm that if they want their TV to work nicely in a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smart home &lt;/ins&gt;system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AMX&lt;/ins&gt;] (the two leading &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smart home &lt;/ins&gt;providers), &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;there &lt;/ins&gt;C++ coders start writing new software drivers. These drivers then need to be compiled and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;distributed to dealers. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This is an &lt;/ins&gt;expensive and burdensome process &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for everyone involved. The manufacturer needs to pay for the coding service and the end user needs to get a special driver disk from a dealer and install the driver which may or may not work with their home automation software&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;Further, it &lt;/del&gt;means that only software programmers can write new device drivers. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Yet&lt;/del&gt;, these drivers are really very simple&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&lt;/del&gt;usually just sending/receiving &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;some characters across &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;com or network port&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; So, we wanted a new approach that made it easy &lt;/del&gt;for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;non-programmers to add support for new &lt;/del&gt;devices, and that &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;whenever &lt;/del&gt;one &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;person added &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;new device, every other LinuxMCE user would immediately &lt;/del&gt;have &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;access &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it without downloading or compiling anything&lt;/del&gt;.&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;It also &lt;/ins&gt;means that only software programmers can write new device drivers. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;But&lt;/ins&gt;, these drivers are really very simple&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;usually just sending/receiving a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;few simple commands, well within the reach of most people setting up home automation software&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Instead of requiring custom modules &lt;/ins&gt;for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;each of these &lt;/ins&gt;devices &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE has a Generic Serial Driver or GSD which pulls device definitions from the local database&lt;/ins&gt;, and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sqlCVS provides a data replication &lt;/ins&gt;that &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;allows &lt;/ins&gt;one &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;user to send an updated definition to &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;central database and &lt;/ins&gt;have &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that definition replicated &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;other users with the same device&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;&lt;/del&gt;So, to add support for a new device, all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you &lt;/del&gt;do is go into the LinuxMCE Admin web site, click a &#039;new device&#039; button, and then check off what commands that device knows how to implement (like &#039;on&#039;, &#039;off&#039;, &#039;skip forward&#039;, &#039;set temperature&#039;, etc&#039;), what events it fires (like &#039;track changed&#039;, &#039;power is off&#039;, etc.), and what data parameters it needs.&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;So, to add support for a new device, all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the user needs to &lt;/ins&gt;do is go into the LinuxMCE Admin web site, click a &#039;new device&#039; button, and then check off what commands that device knows how to implement (like &#039;on&#039;, &#039;off&#039;, &#039;skip forward&#039;, &#039;set temperature&#039;, etc&#039;), what events it fires (like &#039;track changed&#039;, &#039;power is off&#039;, etc.), and what data parameters it needs.&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;&lt;/del&gt;The GSD wizard then presents a simple web form with a text box for each of the commands. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Type &lt;/del&gt;in each box the command to send the device when it needs to execute that command. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;For example, to turn on a Denon Receiver you send it the string PWON followed by a carriage return.  Just put: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;$&lt;/del&gt;&quot;PWON\r&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;$&amp;gt;    &lt;/del&gt;in the input box next to the &quot;ON&quot; command. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;If the protocol is more complicated, GSD includes an embedded Ruby language processor. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Ruby is a very comfortable yet powerful high-level &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OO &lt;/del&gt;language. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Using the snippets of embedded Ruby code you can do almost anything. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Even very complex, bi-directional automation systems, like EIB, are &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;done &lt;/del&gt;with the same GSD system. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Since the whole process is very structured, this ensures all devices are uniform and interchangeable. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;The structure, protocol and Ruby snippets you create are stored in are automatically stored in a local database on your Core.&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;The GSD wizard then presents a simple web form with a text box for each of the commands. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The user types &lt;/ins&gt;in each box the command to send the device when it needs to execute that command. For example, to turn on a Denon Receiver you send it the string PWON followed by a carriage return.  Just put: &quot;PWON\r&quot; in the input box next to the &quot;ON&quot; command. If the protocol is more complicated, GSD includes an embedded Ruby language processor. Ruby is a very comfortable yet powerful high-level &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;programing &lt;/ins&gt;language. Using the snippets of embedded Ruby code you can do almost anything. Even very complex, bi-directional automation systems, like EIB, are &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;handled &lt;/ins&gt;with the same GSD system. Since the whole process is very structured, this ensures all devices are uniform and interchangeable. The structure, protocol and Ruby snippets you create are stored in are automatically stored in a local database on your Core &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE system&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;&lt;/del&gt;This is where the 2nd piece of the puzzle comes in: sqlCVS. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;If you leave the check box &quot;Share my I/R and GSD devices with other&quot;, then sqlCVS will keep your database synchronized a central sqlCVS server.  If you know programming with source control programs like CVS or SVN, sqlCVS essentially does the same thing with a database that those programs do with source code.  It features atomic commits, tracks ownership at the record-level, gives us at LinuxMCE a control panel to monitor all activity on the database and rollback or correct bad data.&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;This is where the 2nd piece of the puzzle comes in: sqlCVS. If you leave the check box &quot;Share my I/R and GSD devices with other&quot;, then sqlCVS will keep your database synchronized a central sqlCVS server.  If you know programming with source control programs like CVS or SVN, sqlCVS essentially does the same thing with a database that those programs do with source code.  It features atomic commits, tracks ownership at the record-level, gives us at LinuxMCE a control panel to monitor all activity on the database and rollback or correct bad data.&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;&lt;/del&gt;Together GSD and sqlCVS make adding and sharing smart home device drivers an automatic and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;trivial &lt;/del&gt;task. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Since LinuxMCE keeps all devices isolated, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a total newbie &lt;/del&gt;can experiment knowing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;he &lt;/del&gt;can&#039;t do anything to break LinuxMCE. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Adding new devices is a simple fill-in-the-blanks process. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; And without doing anything, automatically all &lt;/del&gt;LinuxMCE users can share the same database of devices.&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;Together GSD and sqlCVS make adding and sharing smart home device drivers an automatic and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;simple &lt;/ins&gt;task. Since LinuxMCE keeps all devices isolated, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;anyone &lt;/ins&gt;can experiment knowing &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that they &lt;/ins&gt;can&#039;t do anything to break LinuxMCE. Adding new devices is a simple fill-in-the-blanks process. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;All &lt;/ins&gt;LinuxMCE users can share the same database of devices &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;as soon as the user who wrote the definition for their device clicks the &quot;share my device&quot; checkbox on the website&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Danielk</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=3440&amp;oldid=prev</id>
		<title>Jerry finn at 15:58, 16 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=3440&amp;oldid=prev"/>
		<updated>2007-03-16T15:58:28Z</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 15:58, 16 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;[[Category: Programmer&#039;s Guide]]&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;[[Category: Programmer&#039;s Guide]]&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;&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;LinuxMCE introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&amp;#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;LinuxMCE introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&amp;#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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=A_new_concept_in_collaborative_development&amp;diff=3063&amp;oldid=prev</id>
		<title>Jerry finn at 10:21, 14 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=3063&amp;oldid=prev"/>
		<updated>2007-03-14T10:21:59Z</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 10:21, 14 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;&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;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;[[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;&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;[[Category: Programmer&amp;#039;s Guide]]&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;&amp;lt;p&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;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;&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;For example, call the manufacturers of high-end TV&amp;#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com http://www.amx.com] (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&amp;#039;s a terribly expensive and burdensome process.&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;For example, call the manufacturers of high-end TV&amp;#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com http://www.amx.com] (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&amp;#039;s a terribly expensive and burdensome process.&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;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;&amp;lt;p&amp;gt;Further, it means that only software programmers can write new device drivers.  Yet, these drivers are really very simple--usually just sending/receiving some characters across a com or network port.  So, we wanted a new approach that made it easy for non-programmers to add support for new devices, and that whenever one person added a new device, every other &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;user would immediately have access to it without downloading or compiling anything.&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;Further, it means that only software programmers can write new device drivers.  Yet, these drivers are really very simple--usually just sending/receiving some characters across a com or network port.  So, we wanted a new approach that made it easy for non-programmers to add support for new devices, and that whenever one person added a new device, every other &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;user would immediately have access to it without downloading or compiling anything.&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;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;&amp;lt;p&amp;gt;So, to add support for a new device, all you do is go into the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;Admin web site, click a &#039;new device&#039; button, and then check off what commands that device knows how to implement (like &#039;on&#039;, &#039;off&#039;, &#039;skip forward&#039;, &#039;set temperature&#039;, etc&#039;), what events it fires (like &#039;track changed&#039;, &#039;power is off&#039;, etc.), and what data parameters it needs.&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;So, to add support for a new device, all you do is go into the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;Admin web site, click a &#039;new device&#039; button, and then check off what commands that device knows how to implement (like &#039;on&#039;, &#039;off&#039;, &#039;skip forward&#039;, &#039;set temperature&#039;, etc&#039;), what events it fires (like &#039;track changed&#039;, &#039;power is off&#039;, etc.), and what data parameters it needs.&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;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;&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 GSD wizard then presents a simple web form with a text box for each of the commands.  Type in each box the command to send the device when it needs to execute that command.  For example, to turn on a Denon Receiver you send it the string PWON followed by a carriage return.  Just put: &amp;lt;$&amp;quot;PWON\r&amp;quot;$&amp;gt;    in the input box next to the &amp;quot;ON&amp;quot; command.  If the protocol is more complicated, GSD includes an embedded Ruby language processor.  Ruby is a very comfortable yet powerful high-level OO language.  Using the snippets of embedded Ruby code you can do almost anything.  Even very complex, bi-directional automation systems, like EIB, are done with the same GSD system.  Since the whole process is very structured, this ensures all devices are uniform and interchangeable.  The structure, protocol and Ruby snippets you create are stored in are automatically stored in a local database on your Core.&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 GSD wizard then presents a simple web form with a text box for each of the commands.  Type in each box the command to send the device when it needs to execute that command.  For example, to turn on a Denon Receiver you send it the string PWON followed by a carriage return.  Just put: &amp;lt;$&amp;quot;PWON\r&amp;quot;$&amp;gt;    in the input box next to the &amp;quot;ON&amp;quot; command.  If the protocol is more complicated, GSD includes an embedded Ruby language processor.  Ruby is a very comfortable yet powerful high-level OO language.  Using the snippets of embedded Ruby code you can do almost anything.  Even very complex, bi-directional automation systems, like EIB, are done with the same GSD system.  Since the whole process is very structured, this ensures all devices are uniform and interchangeable.  The structure, protocol and Ruby snippets you create are stored in are automatically stored in a local database on your Core.&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;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;&amp;lt;p&amp;gt;This is where the 2nd piece of the puzzle comes in: sqlCVS.  If you leave the check box &quot;Share my I/R and GSD devices with other&quot;, then sqlCVS will keep your database synchronized a central sqlCVS server.  If you know programming with source control programs like CVS or SVN, sqlCVS essentially does the same thing with a database that those programs do with source code.  It features atomic commits, tracks ownership at the record-level, gives us at &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;a control panel to monitor all activity on the database and rollback or correct bad data.&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;This is where the 2nd piece of the puzzle comes in: sqlCVS.  If you leave the check box &quot;Share my I/R and GSD devices with other&quot;, then sqlCVS will keep your database synchronized a central sqlCVS server.  If you know programming with source control programs like CVS or SVN, sqlCVS essentially does the same thing with a database that those programs do with source code.  It features atomic commits, tracks ownership at the record-level, gives us at &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;a control panel to monitor all activity on the database and rollback or correct bad data.&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;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;&amp;lt;p&amp;gt;Together GSD and sqlCVS make adding and sharing smart home device drivers an automatic and trivial task.  Since &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;keeps all devices isolated, a total newbie can experiment knowing he can&#039;t do anything to break &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.  Adding new devices is a simple fill-in-the-blanks process.  And without doing anything, automatically all &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;users can share the same database of devices.&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;Together GSD and sqlCVS make adding and sharing smart home device drivers an automatic and trivial task.  Since &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;keeps all devices isolated, a total newbie can experiment knowing he can&#039;t do anything to break &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.  Adding new devices is a simple fill-in-the-blanks process.  And without doing anything, automatically all &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;users can share the same database of devices.&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=A_new_concept_in_collaborative_development&amp;diff=2475&amp;oldid=prev</id>
		<title>Wikiadmin at 03:00, 29 August 2006</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=2475&amp;oldid=prev"/>
		<updated>2006-08-29T03:00:55Z</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 03:00, 29 August 2006&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;Pluto introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;&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;/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;Pluto introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;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;&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;For example, call the manufacturers of high-end TV&amp;#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com http://www.amx.com] (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&amp;#039;s a terribly expensive and burdensome process.&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;For example, call the manufacturers of high-end TV&amp;#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to [http://www.crestron.com Crestron] and another to [http://www.amx.com http://www.amx.com] (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&amp;#039;s a terribly expensive and burdensome process.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=2440&amp;oldid=prev</id>
		<title>Wikiadmin at 01:41, 28 August 2006</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=2440&amp;oldid=prev"/>
		<updated>2006-08-28T01:41: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 01:41, 28 August 2006&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;&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;Pluto introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&amp;#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;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;Pluto introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&amp;#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&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;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;&amp;lt;p&amp;gt;For example, call the manufacturers of high-end TV&#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to http://www.crestron.com&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&amp;gt;&lt;/del&gt;Crestron&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/a&amp;gt; &lt;/del&gt;and another to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;a href=&quot;&lt;/del&gt;http://www.amx.com (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&#039;s a terribly expensive and burdensome process.&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;For example, call the manufacturers of high-end TV&#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;http://www.crestron.com Crestron&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/ins&gt;and another to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[http://www.amx.com &lt;/ins&gt;http://www.amx.com&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/ins&gt;(the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&#039;s a terribly expensive and burdensome process.&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;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;&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;Further, it means that only software programmers can write new device drivers.  Yet, these drivers are really very simple--usually just sending/receiving some characters across a com or network port.  So, we wanted a new approach that made it easy for non-programmers to add support for new devices, and that whenever one person added a new device, every other Pluto user would immediately have access to it without downloading or compiling anything.&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;Further, it means that only software programmers can write new device drivers.  Yet, these drivers are really very simple--usually just sending/receiving some characters across a com or network port.  So, we wanted a new approach that made it easy for non-programmers to add support for new devices, and that whenever one person added a new device, every other Pluto user would immediately have access to it without downloading or compiling anything.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=2027&amp;oldid=prev</id>
		<title>Wikiadmin: Imported document</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=A_new_concept_in_collaborative_development&amp;diff=2027&amp;oldid=prev"/>
		<updated>2006-06-05T16:47:29Z</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;Pluto introduces 2 new software programs--GSD and sqlCVS--which together greatly simplify collaborative development.  In a smart home environment, there are thousands upon thousands of relatively simple devices that all have proprietary protocols for controlling them.  Many high-end TV&amp;#039;s and stereos have rs232 controls, which work much better than infrared.  Plus there are lots of other devices with RS232, RS485 or Ethernet ports, like pool controls, sprinkler systems, alarm panels, lighting controls, etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For example, call the manufacturers of high-end TV&amp;#039;s with RS232 ports.  They will confirm that if they want their TV to work nicely in a smarthome system, they have to ship one TV to http://www.crestron.com&amp;quot;&amp;gt;Crestron&amp;lt;/a&amp;gt; and another to &amp;lt;a href=&amp;quot;http://www.amx.com (the two leading smarthome providers), where C++ coders start writing new software drivers.  These drivers then need to be compiled, and the resulting binaries distributed to dealers.  It&amp;#039;s a terribly expensive and burdensome process.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Further, it means that only software programmers can write new device drivers.  Yet, these drivers are really very simple--usually just sending/receiving some characters across a com or network port.  So, we wanted a new approach that made it easy for non-programmers to add support for new devices, and that whenever one person added a new device, every other Pluto user would immediately have access to it without downloading or compiling anything.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;So, to add support for a new device, all you do is go into the Pluto Admin web site, click a &amp;#039;new device&amp;#039; button, and then check off what commands that device knows how to implement (like &amp;#039;on&amp;#039;, &amp;#039;off&amp;#039;, &amp;#039;skip forward&amp;#039;, &amp;#039;set temperature&amp;#039;, etc&amp;#039;), what events it fires (like &amp;#039;track changed&amp;#039;, &amp;#039;power is off&amp;#039;, etc.), and what data parameters it needs.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GSD wizard then presents a simple web form with a text box for each of the commands.  Type in each box the command to send the device when it needs to execute that command.  For example, to turn on a Denon Receiver you send it the string PWON followed by a carriage return.  Just put: &amp;lt;$&amp;quot;PWON\r&amp;quot;$&amp;gt;    in the input box next to the &amp;quot;ON&amp;quot; command.  If the protocol is more complicated, GSD includes an embedded Ruby language processor.  Ruby is a very comfortable yet powerful high-level OO language.  Using the snippets of embedded Ruby code you can do almost anything.  Even very complex, bi-directional automation systems, like EIB, are done with the same GSD system.  Since the whole process is very structured, this ensures all devices are uniform and interchangeable.  The structure, protocol and Ruby snippets you create are stored in are automatically stored in a local database on your Core.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This is where the 2nd piece of the puzzle comes in: sqlCVS.  If you leave the check box &amp;quot;Share my I/R and GSD devices with other&amp;quot;, then sqlCVS will keep your database synchronized a central sqlCVS server.  If you know programming with source control programs like CVS or SVN, sqlCVS essentially does the same thing with a database that those programs do with source code.  It features atomic commits, tracks ownership at the record-level, gives us at Pluto a control panel to monitor all activity on the database and rollback or correct bad data.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together GSD and sqlCVS make adding and sharing smart home device drivers an automatic and trivial task.  Since Pluto keeps all devices isolated, a total newbie can experiment knowing he can&amp;#039;t do anything to break Pluto.  Adding new devices is a simple fill-in-the-blanks process.  And without doing anything, automatically all Pluto users can share the same database of devices.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
</feed>