<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://savelkoul.net/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Antoine Savelkoul</title><subtitle type="html" /><id>http://savelkoul.net/cs/blogs/antoine/atom.aspx</id><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/default.aspx" /><link rel="self" type="application/atom+xml" href="http://savelkoul.net/cs/blogs/antoine/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61129.2">Community Server</generator><updated>2007-03-29T19:48:00Z</updated><entry><title>The end of 'Oslo' as a language workbench?</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/11/27/the-end-of-oslo-as-a-language-workbench.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/11/27/the-end-of-oslo-as-a-language-workbench.aspx</id><published>2009-11-27T16:45:00Z</published><updated>2009-11-27T16:45:00Z</updated><content type="html">&lt;P&gt;If you follow blogs of other Oslo enthusiastic, you couldn't have missed it. Oslo , the codename for Microsoft's new modeling platform, has been &lt;A title="Douglas Purdy - From “Oslo” to SQL Server Modeling" href="http://www.douglaspurdy.com/2009/11/10/from-oslo-to-sql-server-modeling/" target=_blank&gt;renamed to SQL Server Modeling&lt;/A&gt;.&amp;nbsp; Confirms this&amp;nbsp;that the focus will shift to SQL Server instead of creating a modeling platform for DSLs and storing models?&lt;/P&gt;
&lt;P&gt;This development is however something that comes as a disappointment to me. I was hoping for improvements to Oslo which should raise the speed of creating and deploying DSLs. Something I am missing is the possibility to modify language definitions without the need to redeploy your schemes and without losing your models. This is something essential when dealing with changes in DSLs, especially during prototyping. But if Microsoft is really moving their focus to SQL, it will not surprising me if these features will never be developed. &lt;/P&gt;
&lt;P&gt;Some other news that is also interesting, but might also be confusing, is the use of &lt;A title="Oslo transforms into the underlying application model of the cloud" href="http://community.zdnet.co.uk/blog/0,1000000567,10014471o-2000675210b,00.htm" target=_blank&gt;SQL Server Modeling Services as underlying application model for Microsoft's cloud&lt;/A&gt;, &lt;A title="Windows Azure Platform" href="http://www.microsoft.com/windowsazure/" target=_blank&gt;Azure&lt;/A&gt;.&lt;BR&gt;Using DSLs to model applications running within a cloud is something that is in line with my vision for years. If you really want to stimulate people to connect their online services running within a cloud, you should make it easy for them by raising the abstraction level of application development. I believe that DSLs will be the way to make this possible, but I also see that the language workbenches currently available would have to undergo a necessary transformation. I therefore really wonder how this will fit within the direction Microsoft is taking with the SQL Server Modeling Services. &lt;/P&gt;
&lt;P&gt;However, I'm still interested in using the SQL Server Modeling Services (Hmm, the name ' Oslo ' still sounds a lot better) as platform for sharing models. For DSL prototyping however, I will use other tools. Hopefully Microsoft will at the end choose to change the name of there moddeling platform to something like&amp;nbsp;the "Azure Modeling Services" ;).&lt;/P&gt;
&lt;P&gt;To see what other people are writing about the rename: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Gerben van Loon - “Oslo” renames to SQL Server Modeling" href="http://bloggingabout.net/blogs/gerben/archive/2009/11/11/oslo-renames-to-sql-server-modeling.aspx" target=_blank&gt;Gerben van Loon - “Oslo” renames to SQL Server Modeling"&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Keith Short - Codename “Oslo” Repository Becomes SQL Server Modeling Service" href="http://blogs.msdn.com/keith_short/archive/2009/11/23/codename-oslo-repository-becomes-sql-server-modeling-services.aspx" target=_blank&gt;Keith Short - Codename “Oslo” Repository Becomes SQL Server Modeling Service&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Aali Alikoski - Oslo -&gt; SQL Server Modeling" href="http://blog.avanadeadvisor.com/blogs/aalialikoski/archive/2009/11/10/14736.aspx" target=_blank mce_href="http://blog.avanadeadvisor.com/blogs/aalialikoski/archive/2009/11/10/14736.aspx"&gt;Aali Alikoski - Oslo -&amp;gt; SQL Server Modeling&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To read more&amp;nbsp;about the name change, see &lt;A title="On DSLs and a few other things…" href="http://www.douglaspurdy.com/2009/11/12/on-dsls-and-a-few-other-things/" target=_blank&gt;this post&lt;/A&gt; and &lt;A title="Douglas Purdy's blog" href="http://www.douglaspurdy.com/" target=_blank&gt;other blog posts&lt;/A&gt; of Douglas Purdy.&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=221" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /><category term="SQL Server Modeling Services (Oslo)" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/SQL+Server+Modeling+Services+_2800_Oslo_2900_/default.aspx" /></entry><entry><title>Event on Home Automation and Smart Living</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/11/24/event-on-home-automation-and-smart-living.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/11/24/event-on-home-automation-and-smart-living.aspx</id><published>2009-11-24T19:17:00Z</published><updated>2009-11-24T19:17:00Z</updated><content type="html">&lt;P&gt;&lt;IMG style="WIDTH:300px;HEIGHT:225px;" title="Philips Pronto" alt="Philips Pronto" align=right src="http://www.savelkoul.net/projects/HomeAutomation/PhilipsPronto.jpg" width=400 height=300&gt;Thursday I went - together with my brother (Martin) - to an event on Home Automation (&lt;A title="Beurs Domotica &amp;amp; Slim Wonen" href="http://www.beursdomoticaenslimwonen.nl/" target=_blank&gt;Beurs Domotica&amp;nbsp;&amp;amp; Slim Wonen&lt;/A&gt;). On this event a number of installers and manufacturers of home automation equipment were represented. We used this opportunity to do some market research.&lt;/P&gt;
&lt;P&gt;Most significant to realize, and what we knew before going to the event, is that the companies at the event focus mostly on the higher segment of the home automation market. Examples are Philips with their Pronto, Siemens with&amp;nbsp;KNX hardware&amp;nbsp;and a lot of manufactures of touch screen units.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Software solutions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We were mainly interested in manufacturers of software solutions. We talked to some of them which gave us a good indication of where the home automation market stands today. Some of the most remarkable things were the user interfaces. Some of them were so messy that we didn't understand where all the buttons were meant for. Others were kept as generic as possible which made it difficult to distinguish features by importance and type. There were some more impressive ones, but they need to be configured by the installer. We think a lot of improvements are possible here.&lt;/P&gt;
&lt;P&gt;Another significant thing is the support of systems of external parties. &lt;A title=KNX href="http://www.knx.org/" target=_blank&gt;KNX&lt;/A&gt; is by far the most supported standard enabling manufacturer independent extendibility. Some companies will also support the X.10 which is popular in the lower segment of the market. Extensions to other systems like a/v equipment however are something that seems to have a lower priority. One system we saw had an integrated web radio, but this was limited to one party. If they supported DLNA, lots of other a/v applications would be possible as well.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The lower segment&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Within the lower segment of the market we find manufacturers like KlikAan-KlikUit and Marmitek (X.10). They also offer software, but these are very limited in functionality and often support only their own systems or single protocol. Their equipment however is affordable for a much larger audience. An example of not manufacturer specific software is HomeSeer, which offers extensibility through APIs. An advantage of the HomeSeer software is that is has a large community of enthusiastic peopele developing add-ins for even the more affordable equipment. However, the average computer user would not have enough experience with finding and configuring these extensions. So, where the price is the barrier to a large audience within the higher segment of the market, the complexity is the barrier for the lower.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;IMG style="WIDTH:225px;HEIGHT:300px;" title="Beurs Domotica en Slim Wonen" alt="Beurs Domotica en Slim Wonen" align=left src="http://www.savelkoul.net/projects/HomeAutomation/BeursDomotica.jpg" width=225 height=300&gt;Significant players in the future&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I believe that sooner or later home automation will become as common as the telephone and internet access. A growing market that is related to home automation is that of the Smart Metering. Within the near future utility companies will roll out many electricity, water and gas meters that send 'usage information' to a central system. Each meter will have its own data connection. This data connection will however have a lot more potential. This is something companies like &lt;A title="Microsoft hohm" href="http://www.microsoft-hohm.com/"&gt;Microsoft&lt;/A&gt; and &lt;A title="Google PowerMeter" href="http://www.google.org/powermeter/"&gt;Google&lt;/A&gt;&amp;nbsp;also realize. These data connections might become a new gate for them to deliver information based services. Smart meters might also contain communication interfaces to home automation systems, so this might also be an opportunity to them to get access to this part of your house to without the need of a home server or internet connection. And so there are many other examples of existing multinationals that might extend their market this way.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Home automation is a living and growing market with enough space for innovations. Complete solutions can been found within the higher market segment. To make these complete solutions accessible to the lower segment of the market, home automation systems will have to become less complex and the need of custom development and configuration needs to be taken away. At this moment a lot of innovations comes from small start-ups, but it would not be inconceivable that large companies like Microsoft and Google will enter the market soon.&amp;nbsp;&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=220" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>Questionnaire DSL at PDC09</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/11/10/questionnaire-dsl.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/11/10/questionnaire-dsl.aspx</id><published>2009-11-10T12:04:00Z</published><updated>2009-11-10T12:04:00Z</updated><content type="html">&lt;P&gt;In my previous blog posts and papers I referred to my master's project. During this project I designed and build a prototype of a DSL for medical statements. My DSL is now used within Avanade Netherlands as a case study for other interns. Michael Wolbert and Bryan Sumter developed my DSL further by making a version of the DSL for Microsoft Oslo, which will be presented at the Microsoft PDC next week. Gerben van Loon wrote a blog post: "&lt;A title='Questionnaire DSL with Microsoft "Oslo" overview' href="http://bloggingabout.net/blogs/gerben/archive/2009/10/30/questionnaire-dsl-with-microsoft-quot-oslo-quot-overview.aspx"&gt;Questionnaire DSL with Microsoft "Oslo" overview&lt;/A&gt;" about it showing some of it's details that might be interesting to have a look at.&lt;/P&gt;
&lt;P&gt;The master's thesis of my which is the root of this project will be hopefully made public soon.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=219" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /><category term="SQL Server Modeling Services (Oslo)" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/SQL+Server+Modeling+Services+_2800_Oslo_2900_/default.aspx" /></entry><entry><title>First designs for the home automation DSLs</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/11/05/first-designs-for-the-home-automation-dsls.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/11/05/first-designs-for-the-home-automation-dsls.aspx</id><published>2009-11-05T21:12:00Z</published><updated>2009-11-05T21:12:00Z</updated><content type="html">&lt;P&gt;When writing this post I realized how many design choices I have already made while designing the first prototype. Too much to blog about, so I will only discuss a few design choices I have made. Firstly, I would like to start with describing the domain of the first DSLs.&lt;/P&gt;
&lt;P&gt;The first DSLs will be used to define the capabilities of devices that will be controlled by the home automation system. Examples of devices are light switches, dimmers, energy meters and the TV. It should not only be understandable by the designers of the devices, but also by its users. A high level description of the basic functionalities of a television might look like:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;The television has a power button that can be used to turn the television on and of. Furthermore, the volume can be set to a variable level or muted on and off without losing the previous sound level. The user can switch between the sources "HDMI", "VGA", "Composite in" and the build in tuner. The tuner has some pre-sets the user can choose from.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;A visualization might result in an image like below:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.savelkoul.net/projects/HomeAutomation/Model_TV.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From this drawing we nearly have a language, we only need to formalize it. A pseudo description of the language might look like:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;A device type has a name&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;A device type has zero or more device functions&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;A device function has a name&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;A device function should be one of the following types:&lt;/EM&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;On / off&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Variable&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Fixed choice&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Dynamic&amp;nbsp;choice&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;EM&gt;A fixed choice should have one or more pre defined options&lt;/EM&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;EM&gt;A variable should have a minimum and maximum level&lt;/EM&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A second DSL is used to describe how the devices will talk&amp;nbsp;with the home automation system. My first observation was that, each device will receive commands through a transmitter unit or another connection. For example the light switches will receive signals from a transmitter and the television via a serial connection. But by defining it this way, each device implementation will depend on a specific transmitter or connection while, for example with the wireless light switches I have used, the user has the choice to use an original manufacturer's transmitter or one of RFXCOM. So, the original design was not completely in line with my goal to have a manufacturer independent solution.&lt;/P&gt;
&lt;P&gt;However, I came up with the idea to include communication protocols so that a manufacturer independent solution is possible. These communication protocols can be best compared with web services. The DSL for the communication protocol will have some resemblance with for example the &lt;A title="Web Service Software Factory" href="http://msdn.microsoft.com/en-us/library/bb931187.aspx" target=_blank&gt;Web Service Software Factory&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Some simplified examples of two communication protocols within my home automation system:&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;Wireless light switches&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;Request:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;TABLE style="MARGIN:auto auto auto 36pt;WIDTH:444.3pt;BORDER-COLLAPSE:collapse;" class=MsoNormalTable cellSpacing=0 cellPadding=0&gt;

&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Parameter&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Type&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Is address&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Home code&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;A .. P&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Yes&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Home code set on the device&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Device code&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;1 .. 16&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Yes&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Device group and number&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Value&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;on/off&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;On/off or dimming&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;TV Serial Control&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;Request:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;TABLE style="MARGIN:auto auto auto 36pt;WIDTH:444.3pt;BORDER-COLLAPSE:collapse;" class=MsoNormalTable cellSpacing=0 cellPadding=0&gt;

&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Parameter&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Type&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Is address&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Set ID&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;1 .. 99&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Yes&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;ID of the television&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Command 1&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;j,k,m,x&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;First part of command code&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Command 2&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;a .. z&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;second part of command code&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Data&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;0-255&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Value (on/of, level etc.)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt 36pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;Response:&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;TABLE style="MARGIN:auto auto auto 36pt;WIDTH:444.3pt;BORDER-COLLAPSE:collapse;" class=MsoNormalTable cellSpacing=0 cellPadding=0&gt;

&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Parameter&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Type&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Is address&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Command 2&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;a .. z&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Second part of the command received&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Set ID&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;1-99&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Yes&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;ID of the television&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Act code&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;OK, NC&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Indicates if the command has been received and executed successfully&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:111.75pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;Data&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:77.95pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:windowtext 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;0-255&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:131pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;No&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:123.6pt;PADDING-RIGHT:5.4pt;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Calibri;"&gt;New value&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Calibri;COLOR:black;"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Parameters can have a "Is address" flag. This flag will be used to add configuration parameters when adding devices to the home automation system.&lt;/P&gt;
&lt;P&gt;The last DSL I would like to discuss is the DSL used to assign the protocols to the devices. Within the image below we see how, by using the protocols, compatibility between devices can be modelled without creating direct dependencies.&lt;BR&gt;&lt;IMG src="http://www.savelkoul.net/projects/HomeAutomation/Model_DevicesAndProtocols.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One interesting scenario for this DSL is that it should be easy to work with multiple people on. There will be several ways on how the model will be created. People can assign self defined or existing protocols to devices they have defined, but might not interested in all the transmitters that are available or all devices that can be controlled by a specific transmitter. On the other hand, protocols might be designed to control specific type of devices. For the end user there is no difference between a light switch controlled using a wireless protocol or using Power Line Communication. So, how the model above will be created and visualized is still something to think about.&lt;/P&gt;
&lt;P&gt;Some things that are not yet covered by the DSLs described in this blog post are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;The translation of commands (protocol) to device functions&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;The translation of commands to, for example, to a textual representation used for communication over a serial link&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These will also be covered by the first DSL prototypes I am designing. As soon as I have built these prototypes I will make some parts of my project available for download.&lt;/P&gt;
&lt;P&gt;For who is interested in other home automation DSLs too I can recommend the following interesting papers and blog posts of other people (thanks to Steven Kelly for providing some of the references):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="Online draft from Martin Fowler’s next book" href="http://martinfowler.com/dslwip/Intro.html"&gt;Online draft from Martin Fowler’s next book&lt;/A&gt;.&amp;nbsp;His DSL&amp;nbsp;is based on a state machine.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="Steven Kelly discussing the DSL of Martin Fowler" href="http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;amp;entry=3414834520"&gt;Steven Kelly discussing the DSL of Martin Fowler&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="The Making Of User-Interface Designer, A Proprietary DSM Tool" href="http://www.dsmforum.org/events/DSM07/papers/safa.pdf"&gt;The Making Of User-Interface Designer, A Proprietary DSM Tool&lt;/A&gt;&amp;nbsp;and &lt;A title="The Practice of Deploying DSM Report from a Japanese Appliance Maker Trenches" href="http://www.dsmforum.org/events/DSM06/Papers/19-safa.pdf"&gt;The Practice of Deploying DSM Report from a Japanese Appliance Maker Trenches&lt;/A&gt; by&amp;nbsp;Laurent Safa.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Chapter 7 of the &lt;A title="Domain-Specific Modeling book" href="http://www.dsmbook.com/"&gt;Domain-Specific Modeling book&lt;/A&gt; from Steven Kelly and Juha-Pekka Tolvanen. See also the &lt;A title="example on dsmforum.org" href="http://www.dsmforum.org/voicemenu.html"&gt;example on dsmforum.org&lt;/A&gt;.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="Oslo is running my house" href="http://blogs.msdn.com/krisho/archive/2009/03/24/oslo-is-running-my-house.aspx"&gt;OSLO is running my house&lt;/A&gt; by Kris Horrocks.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="HAAIS DSL" href="http://portal.acm.org/citation.cfm?id=1519133&amp;amp;dl=GUIDE&amp;amp;coll=GUIDE&amp;amp;CFID=61530208&amp;amp;CFTOKEN=72985758"&gt;HAAIS DSL&lt;/A&gt;. You need a ACM account to download (unfortunately I don’t have such an account) and&amp;nbsp;&lt;A title="HAAIS DSL Presentation" href="http://ess.cs.tu-dortmund.de/workshops/iies/2009/presentations/clemente.pdf"&gt;HAAIS DSL Presentation&lt;/A&gt; (free download). The domain of the DSL on page 25 has an overlap with the domain I described in this blog post.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=218" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>Going embedded</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/10/21/going-embedded.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/10/21/going-embedded.aspx</id><published>2009-10-21T17:39:00Z</published><updated>2009-10-21T17:39:00Z</updated><content type="html">&lt;P&gt;From the embedded prototyping systems I considered, the &lt;A title=Arduino href="http://www.arduino.cc/" target=_blank&gt;Arduino&lt;/A&gt; is one of the cheapest and the most popular ones. The combination with the &lt;A title="ethernet shield" href="http://arduino.cc/en/Main/ArduinoEthernetShield"&gt;ethernet shield&lt;/A&gt; will make it the perfect addition for my home automation project. This weekend I received the one that I have ordered online.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:400px;HEIGHT:235px;" title="Going embedded" alt="Going embedded" align=baseline src="http://savelkoul.net/projects/HomeAutomation/Arduino.jpg" width=400 height=235&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The ATmega328 microcontroller used by the Arduino includes a serial connection, PWM outputs, I2C bus, analog inputs and more. This will make it ideal for connecting my LCD TV, RGB Led lighting, climate sensors and other equipment to the network. Running simple macros on the controller will in some cases take away the need of a home server being on 24/7. It seems that I'm not far away from generating my first code for embedded devices. :)&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=217" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Gadgets" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Gadgets/default.aspx" /><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /><category term="Arduino" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Arduino/default.aspx" /></entry><entry><title>Automated home: Applying Interaction Design on DSLs</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/10/03/automated-home-applying-interaction-design-on-dsls.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/10/03/automated-home-applying-interaction-design-on-dsls.aspx</id><published>2009-10-03T19:17:00Z</published><updated>2009-10-03T19:17:00Z</updated><content type="html">&lt;P&gt;In my previous posts I have given an impression of the current situation (how the hardware is connected, which software I use). It is very tempting to dig into hardware and software details now, but during previous experiences with designing DSLs I learned that this will be the wrong way.&lt;/P&gt;
&lt;P&gt;During my Master’s thesis a few years ago I did an investigation at one of Netherlands major insurance companies. During this investigation, I designed a number of DSLs for the domain of medical statements. I did this in cooperation with domain experts. The methods I used were very promising.&lt;/P&gt;
&lt;P&gt;One of the methods I was inspired by is Interaction Design. A lot of papers and articles about designing DSLs will start with an analysis of the &lt;STRIKE&gt;problem&lt;/STRIKE&gt; solution domain by discussing complete hardware designs and software architectures (including some of my own). However, I decided to have a look at the how medical statements were defined by medical advisors, evaluated by legal advisors and implemented by software developers. This resulted in a totally different design as I primarily had in mind. I also believe that the methods I used will create more efficient DSLs that will really decrease the time needed per project phase because it covers the most relevant business logic while representing the language of the business. Thereby, the created models can even be used to validate requirements with domain experts saving valuable time on writing documentation.&lt;/P&gt;
&lt;P&gt;For my home automation system, I will apply these successful methods as well. With the only exception, that the group of volunteers who can act as domain experts will be smaller this time. The next step will be to form a list of personas that will have an important part in the process of designing and using this system.&lt;BR&gt;The personas are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Residents of the automated home (e.g. a family with kids or elderly people)&lt;/LI&gt;
&lt;LI&gt;Owner or maintainer of the home automation system (normally the person in house who also configures the thermostat and television set)&lt;/LI&gt;
&lt;LI&gt;The installer of the home automation system (might be a small company or the owner self)&lt;/LI&gt;
&lt;LI&gt;Equipment manufacturers who want to make their equipment compatible with my home automation system&lt;/LI&gt;
&lt;LI&gt;Hobbyists who want to create their own hardware for the system&lt;/LI&gt;
&lt;LI&gt;Hobbyists who want to add existing (not by the manufacturer supported) hardware to the system&lt;/LI&gt;
&lt;LI&gt;Manufacturers, retailers and hobbyists who want to design their own user interfaces for the system&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In short (when writing an article about my project, I will give more details);&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The average residents just like to have an overview of the system, e.g. knowing where which equipment is located. They will not design their own system but at most define some simple macros.&lt;/LI&gt;
&lt;LI&gt;The installer of the system wants to be able to configure the system, e.g. how everything will be connected. They will also need the possibility to make some adjustments to the user interface and define some more complex macros.&lt;/LI&gt;
&lt;LI&gt;Equipment manufacturers and hobbyists who want to make their hardware compatible with the system need to create a software add-in. They need to be able to define what the capabilities of the hardware are, how they can be configured and implement the communication protocols. In the case of hardware that still has to be developed, the communication protocols might be even in scope for the design.&lt;/LI&gt;
&lt;LI&gt;Finally, some manufacturers, retailers and hobbyists might give their own touch and feel to the system by designing their own user interfaces.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These are a number of personas I have identified so far. For the first phase of my project I would like to limit my scope to the device side because without having them connected, other parts like customizable user interfaces will be useless. In one of my next blog posts I will show an initial design of my first DSL.&lt;/P&gt;
&lt;P&gt;Recommendation for reading:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Alan Cooper. The Inmates Are Running the Asylum.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=215" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>Automated home: The software</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/10/01/automated-home-the-software.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/10/01/automated-home-the-software.aspx</id><published>2009-10-01T16:32:00Z</published><updated>2009-10-01T16:32:00Z</updated><content type="html">&lt;P&gt;The hardware that I have selected offers the functionality that I will need for this project. Unfortunately, this is not the case for all the software that was provided with the selected hardware. PlugWise is the only one providing software with webinterfaces and some kind of webservices. The other software is simply not focused on extensions to other type of systems. &lt;/P&gt;
&lt;P&gt;The table will give an overview of the solutions chosen for the first prototypes of my home automation system.&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-COLLAPSE:collapse;mso-padding-alt:0cm 0cm 0cm 0cm;" class=MsoNormalTable cellSpacing=0 cellPadding=0&gt;

&lt;TR style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Device&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Functionality of software&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Missing functionality&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:black 1pt solid;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Chosen alternative&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:1;"&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Wireless switch units&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Sending commands&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;High level API&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Software based on the xPL project (RFXCOM service, .NET API etc.)&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:2;"&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;LCD TV&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;None. No software provided&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Driver with API or something similar&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Custom written API with the serial protocol implemented.&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:3;"&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;UPnP media players&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Media server with indexing&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;API to control media renderers&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Intel UPnP SDK or other (open source) UPnP API&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow:4;mso-yfti-lastrow:yes;"&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:black 1pt solid;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;PlugWise &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.25pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Management, statistics, control and a kind of webservice&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;API&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:black 1pt solid;BORDER-LEFT:#ece9d8;PADDING-BOTTOM:0cm;BACKGROUND-COLOR:transparent;PADDING-LEFT:5.4pt;WIDTH:120.3pt;PADDING-RIGHT:5.4pt;BORDER-TOP:#ece9d8;BORDER-RIGHT:black 1pt solid;PADDING-TOP:0cm;"&gt;
&lt;P style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Calibri;mso-ansi-language:EN-GB;"&gt;Custom written API to connect with webservice&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;The solutions that I haven chosen will raise the abstraction level and will make it easier to integrate them. In a next phase of my project, when the first DSL will be defined, I will give a more detailed look at the APIs.&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=214" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>Automated home: The hardware</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/09/29/automated-home-the-hardware.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/09/29/automated-home-the-hardware.aspx</id><published>2009-09-29T19:28:00Z</published><updated>2009-09-29T19:28:00Z</updated><content type="html">&lt;P style="TEXT-ALIGN:justify;MARGIN-BOTTOM:0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;In a series of blog posts about the domain of my home automation DSL I'd like to start by giving a first and high level description of the problem domain. I'm going to do this by explaining the current situation of my own home automation system.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;MARGIN-BOTTOM:0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Since, I have the intention to create a home automation system that will be suitable for a broad audience, the first step was to select - as much as possible - ready-to-use hardware available at DIY-shops, large retailers and the internet. The more expensive hardware has been selected for its multi-purpose. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;MARGIN-BOTTOM:0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Hardware includes:&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;tab-stops:162.0pt;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;A self configured Windows Home server running on an Intel Atom CPU. A Windows Home Server can be configured for a price as low as € 350,- when using for example an Asus EEE-Box.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Wireless switch units from KlikAan-KlikUit. (An introduction set with three receivers will cost less than € 20,-.)&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;RFXCOM transmitter. This will make it possible to control the wireless switch units from KlikAan-KlikUit and a lot of other manufacturers. The transmitter can be connected to a PC and costs around € 80,-.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;LG 32 LH3000 LCD-TV, cost me less then € 450,-. It's serial port makes it possible to control the TV by software at a PC or embedded system.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Network media players by Philips supporting UPnP. These days prices of media players that can be connected to the TV and support UPnP start at around € 100,- (e.g. the Asus O!Play). Some high-end TVs already have these players on board.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Wireless energy meters from PlugWise. With +/- € 35,- each, they are a little bit pricy, but they are very reliable.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;Other equipment like USB Device servers and USB to serial converters used to connect equipment to the home network.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;TEXT-INDENT:-18pt;MARGIN:5pt 0cm 0pt 54pt;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;·&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;A HTC-Touch Diamond II mobile phone which has very interesting specs like a high resolution touch screen and WIFI.&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;MARGIN-BOTTOM:0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;All by all still a big investment, but to begin with home automation, you do not have to buy it all at once.&lt;BR&gt;&lt;BR&gt;The image below shows how everything is connected.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN:justify;MARGIN-BOTTOM:0pt;"&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;"&gt;&lt;IMG style="WIDTH:578px;HEIGHT:292px;" src="http://savelkoul.net/projects/HomeAutomation/Hardware.jpg" width=578 height=292&gt;&lt;BR&gt;&lt;BR&gt;The different hardware will have its own way to communicate. There are several Standards and protocols involved like ZigBee, RS232 and UPnP. Manufacturers however also use their own protocols based on for example HTTP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:'Tahoma','sans-serif';COLOR:black;FONT-SIZE:10pt;mso-ansi-language:EN-GB;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;In the next blog post I will explain how devices will interact with each other via software. Other posts that will follow will be about scoping of the domain and sub domains, other already available DSLs and choice of modelling software.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=213" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>Still busy with DSLs</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2009/09/10/still-busy-with-dsls.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2009/09/10/still-busy-with-dsls.aspx</id><published>2009-09-10T20:22:00Z</published><updated>2009-09-10T20:22:00Z</updated><content type="html">After moving to the apartment of my girlfriend and my and doing some jobs to make it our place, I recently took a week off to work on some of my ideas. One of the projects I started is a DSL for home automation and smart metering.&amp;nbsp; The goal of the DSL will be to simplify the way of building add-ins to support several types of devices like wireless switch units, energy meters and a/v equipment. This while maintaining a manufacturer independent architecture of the home automation system.&amp;nbsp; Thus far the results are promising. Within the next months, I hope to explain a little bit more of the approach I´m taking in my home automation.&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=210" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /><category term="Home Automation" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Home+Automation/default.aspx" /></entry><entry><title>OOPSLA Paper online!</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2007/10/12/oopsla-paper-online.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2007/10/12/oopsla-paper-online.aspx</id><published>2007-10-12T23:33:00Z</published><updated>2007-10-12T23:33:00Z</updated><content type="html">&lt;P&gt;The paper “Building a framework to support Domain Specific Language evolution using Microsoft DSL Tools” Gerardo de Geest, Aali Alikoski and I wrote together for the OOPSLA DSM event of this year has been published on internet: &lt;A href="http://www.dsmforum.org/events/DSM07/papers.html"&gt;http://www.dsmforum.org/events/DSM07/papers.html&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The paper describes some issues regarding the evolution of DSLs, some scenarios and a solution in the form of a method for automating the transformation of domain models to a newer version of a DSL. The method is the result of the investigation on language evolution Gerardo is doing for his Master’s degree.&lt;/P&gt;
&lt;P&gt;Gerardo and Aali will give a presentation on the subject during the OOPSLA Workshop on Domain-Specific Modeling in Montréal the 21st of October.&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=99" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /></entry><entry><title>Bottom-Up Approach = Reverse Engineering = Wrong decisions?</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2007/07/10/bottom-up-approach-reverse-engineering-wrong-decisions.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2007/07/10/bottom-up-approach-reverse-engineering-wrong-decisions.aspx</id><published>2007-07-10T23:31:00Z</published><updated>2007-07-10T23:31:00Z</updated><content type="html">&lt;P&gt;Some people already asked me when I will start with blogging. I really have to tell a lot, but usually cost me quite a lot time to make something clear to myself, and even more to others. But now I’m busy with my Master thesis, this is something I’m doing constantly. This made me to decided to make some time free and share some parts of it. So hopefully this post is just the beginning of a lot more posts that will follow the months from now. I’m known as someone who writes large pieces of text, so I hope they will be interested enough that some people will be read them and respond to them. I start some discussions so I enabled the possibility to respond on posts now.&lt;/P&gt;
&lt;P&gt;For my Master thesis I’m doing an investigation on business-DSLs. For a proof-of-concept DSL I had to decide whenever to apply the bottom-up or top-down approach. These two approaches are quite often discussed by people who have to build DSLs. In short, when applying the bottom-up approach, you will identify variation points that will be captured by the DSL by looking at the code. With the top-down approach, these variation points will be identified by looking at the conceptual level. A lot of technically oriented people prefer the bottom-up approach, just to avoid complex or impossible model to code translations when reusing existing code and frameworks for generation purpose.&lt;/P&gt;
&lt;P&gt;But how bottom-up is the bottom-up approach? Each structural element within code is the result of a design decision, whenever it is documented or not. I think it is nearly impossible to indentify variation points in a good way without thinking at a conceptual level, even for technology-DSLs. When you have to discover these concepts because they are not documented, the code is not self describing and you are not able to talk with the original designers, I think the process of coming to a DSL has more in common with reverse engineering. Every piece of known and applied conceptual knowledge might been seen as is a form of top-down thinking.&lt;/P&gt;
&lt;P&gt;But what is wrong with reverse engineering? This can be best explained by looking at business DSLs. As part of my graduation project I’m building a DSL for an existing system. I made the choice to apply the top-down approach and not having a close look at the existing code before having defined the DSL. By talking to the domain expert I identified a number of customer needs which I would never have detected with the bottom-up approach. This because a lot of the domain experts knowledge and way of thinking couldn’t impossible recognized and restored to it’s original form from the code. This was the result of optimizations made by the functional designer and limitations of the architecture. By using the code as base for the DSL, not only these limitations in translation from concept to code will be introduced into the DSL, but also new during the translation from code to an unknown conceptual level.&lt;/P&gt;
&lt;P&gt;During my investigation I even decided make some functionality from the domain experts wish list part of the DSL. An example of this is a multi select option lists on a webpage while the current architecture only supported single select. These additions can often be disabled by constrains on the DSL and enable in the future. I also decided to leave optimizations like reuse of definitions if it made the DSL more complex to understand while the profits were minimal.&lt;/P&gt;
&lt;P&gt;My conclusion from my experiences till now is that a pure bottom-up approach will in most cases lead to DSLs that do not cover the target audience, even in the case of technology DSLs. Mistakes in the translation will be made in two ways, from conceptual level to code and back. My advice is to start from conceptual level and involve the target audience in an early stage of design, especially in the case of business-domains. This doesn’t mean you have to avoid compromises when the target architecture doesn’t support some structures, as long as you understand that they will influence the understandability of the DSL by the target audience. In the case of good software designs, the translation of models to exiting architectures and code should be not much more complex in the case of a top-down approach than with a bottom-up approach, especially when techniques like Domain-Driven Design have been applied on the original code. If the translation will seems to be impossible, this might be a sign that the original design doesn’t capture all the needs.&lt;/P&gt;
&lt;P&gt;References:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Steve Cook at al. Domain-Specific Development with Visual Studio DSL Tools. pages 46-48, 457. Addison-Wesley, 2007&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=3" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /></entry><entry><title>Building a DSL for an existing Framework (Paper)</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2007/03/29/building-a-dsl-for-an-existing-framework-paper.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2007/03/29/building-a-dsl-for-an-existing-framework-paper.aspx</id><published>2007-03-30T03:11:00Z</published><updated>2007-03-30T03:11:00Z</updated><content type="html">&lt;P&gt;The &lt;A class="" title=whitepaper href="http://msdn2.microsoft.com/en-us/library/bb381702(vs.80).aspx"&gt;whitepaper&lt;/A&gt; I’ve been talking about for months has now been published on MSDN. I wrote it together with &lt;A class="" title="Dennis Mulder" href="http://dennismulder.net/" target=_blank&gt;Dennis Mulder&lt;/A&gt;. This paper describes an iterative approach for building DSLs by using the DSL Tools from Microsoft. The domain of web services is used as example.&lt;/P&gt;
&lt;P&gt;See: &lt;A class="" title=http://msdn2.microsoft.com/en-us/library/bb381702(vs.80).aspx href="http://msdn2.microsoft.com/en-us/library/bb381702(vs.80).aspx" target=_blank&gt;http://msdn2.microsoft.com/en-us/library/bb381702(vs.80).aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=2" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author><category term="Model Driven Software Development" scheme="http://savelkoul.net/cs/blogs/antoine/archive/tags/Model+Driven+Software+Development/default.aspx" /></entry><entry><title>Finally online! My new blog.</title><link rel="alternate" type="text/html" href="http://savelkoul.net/cs/blogs/antoine/archive/2007/03/29/finally-online-my-new-blog.aspx" /><id>http://savelkoul.net/cs/blogs/antoine/archive/2007/03/29/finally-online-my-new-blog.aspx</id><published>2007-03-30T02:48:00Z</published><updated>2007-03-30T02:48:00Z</updated><content type="html">&lt;P&gt;After having a look at DotNetNuke, I finally decided to use Community Server again. Since there are a lot things that have a higher priority, easy of use is more important for me than a whole set of features I will have no time for to explore.&lt;/P&gt;
&lt;P&gt;The target audience for this new blog will be people with the same professional interests as me. This means you may expect a lot posts about, for example, model driven development.&lt;/P&gt;&lt;img src="http://savelkoul.net/cs/aggbug.aspx?PostID=1" width="1" height="1"&gt;</content><author><name>Antoine</name><uri>http://savelkoul.net/cs/members/Antoine.aspx</uri></author></entry></feed>