<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jerry+finn</id>
	<title>LinuxMCE - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jerry+finn"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php/Special:Contributions/Jerry_finn"/>
	<updated>2026-07-21T20:01:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=SqlCVS_User%27s_manual&amp;diff=3846</id>
		<title>SqlCVS User&#039;s manual</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=SqlCVS_User%27s_manual&amp;diff=3846"/>
		<updated>2007-05-02T07:57:13Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Here is a general overview of how to use sqlCVS, designed to explain quickly what you can do with it.  This assumes you have a master database, we will call &#039;masterdb&#039; somewhere.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;First, put the masterdb on a server somewhere where you will run sqlCVS.  Once you do, you should not use the database directly again.  If you have a web server, for example, that uses the database, it will now run against a separate copy of the database--not the masterdb that sqlCVS will be using.  The masterdb that sqlCVS uses should only be used by sqlCVS, and everyone else will use local copies they checkout from sqlCVS.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next, on the server, run sqlCVS passing it the login information for the masterdb.  You will now use the &amp;lt;i&amp;gt;create&amp;lt;/i&amp;gt; command to create repository(ies) within the masterdb.  A repository is really just a collection of tables that you will want to logically group together.  For example, you could create an &#039;Accounts Payable&#039; repository which contained all the tables related to A/P.  When local users want to do a check-out, they will check-out a whole repository.  You can create just 1 repository and put all the tables in it, in which case all users will check-out and check-in the whole database at once.  There may be some tables that you do not put in any repository, but then nobody will be able to access them using sqlCVS.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;When creating the repository, we recommend you turn on &#039;history tracking&#039;.  This causes sqlCVS to create 2 other copies of every table, called [table]_pschist and [table]_pscmask.  These copies has the same structure as the original table, but with all the constraints removed.  Every time someone changes a row, the full contents of the row will be saved into the pschist table, and a record with bit flags added to _pscmask indicating which fields were modified.  This is how sqlCVS can go back in time and undo changes, or restore the database to a prior state.  Your original table will still have only the current values, just like it always did.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next you run sqlCVS with the &amp;lt;i&amp;gt;dump&amp;lt;/i&amp;gt; command.  This creates a [repository].sqlcvs file that contains a working copy of the repository (or database) for you to give to the clients.  The clients use the same sqlCVS program (binary) as the server--the whole program is in 1 file shared by both server and client.  The client uses the &amp;lt;i&amp;gt;import&amp;lt;/i&amp;gt; command to import the .sqlcvs into their local MySQL database.  This becomes their working copy, and has the same structure as the original database you started with.  It doesn&#039;t matter if the .sqlcvs file they import is very old.  It&#039;s only a starting point--as soon as they do a sqlCVS &amp;lt;i&amp;gt;update&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;sync&amp;lt;/i&amp;gt; the local copy will be brought current.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the server you run sqlCVS with the &amp;lt;i&amp;gt;listen&amp;lt;/i&amp;gt; command.  That causes sqlCVS to open a tcp/ip port for an incoming connection from a client, and allows clients to connect to do checkins and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the client the user will continue to use all the same software without changing anything--he just points the database connection to his local copy rather than the server&#039;s.  Your web site, your accounting program, etc. all will use the working copies and will no longer connect directly to the masterdb.  Since the working copy is essentially identical to the original masterdb all the software that uses the database should be unaffected and should work fine with this client copy.  The only difference in the database is the addition of some special psc_ fields at the end of each table.  However, the fields all have default values and you do not ever need to touch them.  The only time this may cause a problem for your software is if it does an INSERT statement without specifying the field names, assuming a certain number of fields.  In that case, the insert statement may fail because the table now contains more fields.  The other potential problem is if your table has a &#039;timestamp&#039; field.  One of the special psc_ fields is a &#039;timestamp&#039; so sqlCVS can keep track of what records were modified, but MySQL does not allow a table to have 2 timestamps and still work as expected.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;***IMPORTANT NOTE***&amp;lt;/b&amp;gt;  Some editors, like SQLyog, do not know how to properly handle timestamp fields.  They reset the timestamp field every time the row changes.  This is actually a bug in those editors since it defeats the whole purpose of a timestamp.  PhpMyAdmin does not have this problem, and your software will not either since your software will be unaware of the timestamp field.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;sqlCVS also added a psc_id field to each table.  This is sqlCVS&#039;s internal ID for that row.  It is permanent, and will never change.  This is how sqlCVS is able to accurately know what row was modified.  You can change all your fields, including the primary key, and sqlCVS will still update the correct row in the master database.  This field defaults to NULL and is assigned a value only when you check-in the new row.  That is how sqlCVS knows whether a row is new.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There is also a psc_user field.  This contains the user id of the person who owns the record.  The security settings can be changed, but by default only the owner of a record or an administrator can go back and change that record.  The field defaults to NULL, and when the new rows are checked in, sqlCVS will set them to be the user id of whoever is doing the checkin--he becomes the &amp;quot;owner&amp;quot; of those records.  This means that if you have 30 people using the database and adding records, only the person who does the checkin will later be the &#039;owner&#039; of those rows.  You may modify your application to set the psc_user manually, and sqlCVS will respect your values.  However, once the row has been checked in, the sqlCVS on the server will not allow any local users to change this value.  To change the owner of a record after checkin, you will need to update the record in the sqlCVS master database.  Or you can turn off the security, allowing anyone to modify any records, or have only table-level security, and then it does not matter anymore.  If you do keep the default row-level security and a user who is not an administrator modifies a row that does not belong to him or tries to modify a row or table that is marked as &amp;quot;frozen&amp;quot; or he does not have permission to modify, then when he does a sqlCVS checkin, the server will keep his modifications in a special place, and give him a batch #, together with the name of the user who owns those records.  Then that user, or any administrator, can run sqlCVS &#039;approve batch&#039; to have those changes put back into the master database.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you have history tracking enabled in the sqlCVS master databsae, you can also checkout local copies of the database as of a given date, or with some modifications ignored.  For example, you can see what the database looked like as of last month, or get a copy that omits all the modifications made by a certain user.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;When you do a check-in, all changes, including new, deleted and modified rows, are committed in a &amp;quot;batch&amp;quot;, and given a batch id.  If the database engine you are using supports transactions (commits and rollbacks), then your checkins will be atomic.  In other words, if you modified 100 rows, when you do a check-in, all 100 rows will be sent to the server in a batch.  If there is a failure--maybe you entered some data in your local copy that violates a constraint--then none of the rows will be checked in.  It&#039;s all or nothing.  If the database engine does not support transactions, it&#039;s possible to get some rows checked-in, but not all.  This will not break anything, and sqlCVS will checkin the rest of the changes in another batch, but usually atomic commits are preferred.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can also see what modifications where made to the database by date, user, or batch.  If you&#039;re an administrator, you can roll back the master database to it&#039;s state at a given time, or selectively remove some batches after the fact.  There&#039;s also a command-line switch that forces strict verification of database integrity and will not allow rows that reference foreign keys that do not exist.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Lighting_Scenarios&amp;diff=3825</id>
		<title>Lighting Scenarios</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Lighting_Scenarios&amp;diff=3825"/>
		<updated>2007-04-12T09:45:57Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The lighting scenarios are grouped by room.  Whenever you enter a room with the mobile orbiter, or choose a room with a regular orbiter, you will see a button for each of the lighting scenarios you created for that room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To add a new scenario, click the &#039;Add Scenario&#039; button next to the room you want the lighting scenario to appear in.  Note this is not necessarily the room with the lights you want to control.  Any lighting scenario can control any light anywhere in your home.  This is just the room where you want to see the button.  For example, you may want a lighting scenario in the bedroom called &#039;Go to sleep&#039; which turns off all the lights throughout the house, or a lighting scenario in the kitchen called &#039;Mealtime&#039; which turns on the lights in the dining room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To edit an existing scenario, click the &#039;Edit&#039; link next to the scenario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Whether adding or editing the scenario, you will see a list of all the lights in the house.  For those lights you don&#039;t want to be affected by this scenario, just leave the radio button at &amp;quot;Unchanged&amp;quot;.  That means when you choose this scenario, that light will not change.  You can also choose &amp;quot;On&amp;quot;, meaning the scenario will turn the light on full brightness, or &amp;quot;Off&amp;quot; to turn it off.  &amp;quot;Set Level&amp;quot; lets you type in a level in the text box.  The level is a percentage from 0 to 100.  If you select &amp;quot;Set Level&amp;quot; and put in &amp;quot;50&amp;quot;, then choosing the scenario will dim that light to 50% brightness.  You can also preface the Level with a + or - character, meaning a relative change.  Then the level can be &amp;quot;+20&amp;quot; or &amp;quot;-10&amp;quot; meaning the scenario will turn the light up 20% or down 10%.  Not all types of lights support dimming, and not all dimmable lights support relative dimming.  It won&#039;t hurt anything to try it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next to each device is a &amp;quot;?&amp;quot; button that will show you information the manufacturer provides about that device.  This should explain exactly what the device is capable of doing.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want this scenario to do something besides just control lights, like maybe turn on some music too, then first use this wizard page to specify the lighting settings, and then click &amp;quot;Advanced&amp;quot; to go to the Advanced Scenario editor.  That advanced page is a bit more complicated, but it allows to add any command to the scenario--not just lighting control.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Lighting_Scenarios&amp;diff=3824</id>
		<title>Lighting Scenarios</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Lighting_Scenarios&amp;diff=3824"/>
		<updated>2007-04-12T09:45:21Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The lighting scenarios are grouped by room.  Whenever you enter a room with the mobile orbiter, or choose a room with a regular orbiter, you will see a button for each of the lighting scenarios you created for that room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To add a new scenario, click the &#039;Add Scenario&#039; button next to the room you want the lighting scenario to appear in.  Note this is not necessarily the room with the lights you want to control.  Any lighting scenario can control any light anywhere in your home.  This is just the room where you want to see the button.  For example, you may want a lighting scenario in the bedroom called &#039;Go to sleep&#039; which turns off all the lights throughout the house, or a lighting scenario in the kichen called &#039;Mealtime&#039; which turns on the lights in the dining room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To edit an existing scenario, click the &#039;Edit&#039; link next to the scenario.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Whether adding or editing the scenario, you will see a list of all the lights in the house.  For those lights you don&#039;t want to be affected by this scenario, just leave the radio button at &amp;quot;Unchanged&amp;quot;.  That means when you choose this scenario, that light will not change.  You can also choose &amp;quot;On&amp;quot;, meaning the scenario will turn the light on full brightness, or &amp;quot;Off&amp;quot; to turn it off.  &amp;quot;Set Level&amp;quot; lets you type in a level in the text box.  The level is a percentage from 0 to 100.  If you select &amp;quot;Set Level&amp;quot; and put in &amp;quot;50&amp;quot;, then choosing the scenario will dim that light to 50% brightness.  You can also preface the Level with a + or - character, meaning a relative change.  Then the level can be &amp;quot;+20&amp;quot; or &amp;quot;-10&amp;quot; meaning the scenario will turn the light up 20% or down 10%.  Not all types of lights support dimming, and not all dimmable lights support relative dimming.  It won&#039;t hurt anything to try it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Next to each device is a &amp;quot;?&amp;quot; button that will show you information the manufacturer provides about that device.  This should explain exactly what the device is capable of doing.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want this scenario to do something besides just control lights, like maybe turn on some music too, then first use this wizard page to specify the lighting settings, and then click &amp;quot;Advanced&amp;quot; to go to the Advanced Scenario editor.  That advanced page is a bit more complicated, but it allows to add any command to the scenario--not just lighting control.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Advanced_Pages&amp;diff=3823</id>
		<title>Advanced Pages</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Advanced_Pages&amp;diff=3823"/>
		<updated>2007-04-12T09:42:08Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;These pages give you low-level control of all the devices and scenarios in your installation, and also let you edit the Device Templates, which are the master records that define a device.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Scenarios&amp;diff=3822</id>
		<title>Scenarios</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Scenarios&amp;diff=3822"/>
		<updated>2007-04-12T09:40:16Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;These pages create your scenarios.  Each scenario is a group of commands, or tasks, that appears on the Orbiter as a button.  The wizard allows you to quickly create scenarios to do the most common tasks.  For example, the lighting scenario wizard shows you all the lights in your home and lets you easily chose settings for each one.  Note that a scenario can do anything you want.  If you want to do something more advanced, click on &#039;Advanced/Scenarios&#039;.  Then you can add any sort of actions to your scenarios.  For example, you may using the wizard to create a lighting scenario called &#039;Bedtime&#039; that turns off all the lights in the house.  You could then go to the Advanced/Scenarios editor and specify that you also want the scenario to set the alarm, and change all the user status&#039;s to sleeping.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=USB_Surveillance_Camera&amp;diff=3627</id>
		<title>USB Surveillance Camera</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=USB_Surveillance_Camera&amp;diff=3627"/>
		<updated>2007-03-19T11:45:14Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To setup a USB Camera is not straightforward at all, this is because LinuxMCE currently does not and can not directly talk with the camera, however an intermediate script called Motionwrapper constantly captures from the camera, detects motion and saves all the images and AVI timelapse video.&lt;br /&gt;
&lt;br /&gt;
First you must insure that you have the correct driver for your camera correctly installed. That process is beyond the scope of this document, however it should be noted thhave confired works with .43 as long as you have installed the linux-header package and you have created a at the gspca driver supports 200+ cameras. I have confired works with .43 as long as you have installed the linux-header package and you have created a symlink from /lib/modules/2.6.x.x-pluto-2-686/build to /usr/src/linux-headers-2.6.x.x-pluto-2-686. This also assumes that your device driver creates a /dev/videox file. In addtion your webcam might create a /dev/audiox using the snd-usb-audio driver.&lt;br /&gt;
&lt;br /&gt;
   1. Login to LinuxMCE-admin site.&lt;br /&gt;
   2. Click &amp;quot;Show devices in tree&amp;quot; at the bottom of the left-side navigation frame.&lt;br /&gt;
   3. A list of top-level devices is shown, click on the name of the device to which the camera is connected.&lt;br /&gt;
   4. A new page will load on the right frame, click &amp;quot;Create Child Device.&amp;quot;&lt;br /&gt;
   5. Enter a name for the new device in the &amp;quot;Description&amp;quot; field and click &amp;quot;Pick Device Template&amp;quot;&lt;br /&gt;
   6. A new window will pop up, select &amp;quot;Motion Wrapper&amp;quot; from the dropdown &amp;quot;Device Template&amp;quot; menu.&lt;br /&gt;
   7. Window closes, a new device with the name you selected is created and you are taken to its properies page,&lt;br /&gt;
   8. The default device data &amp;quot;(null),1,1,8&amp;quot; is the correct setting for a USB camera, click &amp;quot;Create Child Device;&amp;quot; Create a child device as per steps { x - x} using the &amp;quot;Generic Analog Camera&amp;quot; template.&lt;br /&gt;
   9. The device data for the new camera device must be configured, set the &amp;quot;Device&amp;quot; as a single digit, Device Number of /dev/videoX.&lt;br /&gt;
  10. Devices are initialized when the router starts up, therefore you must go to Wizard -&amp;gt; Restart and click &amp;quot;Quick Reload Router.&amp;quot; You will be prompted to regenerate the screens, do this so that you will have a button for the camera. &lt;br /&gt;
&lt;br /&gt;
Further development needs to be done on LinuxMCE, when adding a surveillance camera the motion wrapper should at least be created, better yet motion wrapper should be included into the cameras and a clear distinction should be made between cameras for communications and cameras for security, IE: there should be an option to enable or disable motionwrapper.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Upgrading_the_Kernel&amp;diff=3620</id>
		<title>Upgrading the Kernel</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Upgrading_the_Kernel&amp;diff=3620"/>
		<updated>2007-03-19T11:29:51Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:LinuxMCEMaintenance]]&lt;br /&gt;
&lt;br /&gt;
When upgrading the kernel for the LinuxMCE distribution, there are some things that we should take care of:&lt;br /&gt;
&lt;br /&gt;
* Upgrade the alsa libraries and utilities to match the alsa kernel version&lt;br /&gt;
* Upgrade smbfs custom kernel modules (pluto-smbfs package)&lt;br /&gt;
* Upgrade ftdi_sio module to work with zwave ( ftdi-sio-zvawe package )&lt;br /&gt;
* Upgrade ivtv video drivers ( pluto-ivtv-video-drivers )&lt;br /&gt;
* Upgrade cx88 video drivers ( pluto-cx88 )&lt;br /&gt;
* Upgrade asterisk kernel modules&lt;br /&gt;
* Upgrade lirc&lt;br /&gt;
&lt;br /&gt;
 make-kpkg --stem &#039;linux&#039; --initrd --append-to-version=&amp;quot;-pluto-1-686&amp;quot; --revision &amp;quot;2.6.16.20-1&amp;quot; --config oldconfig --us --uc configure buildpackage&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Storage_Devices&amp;diff=3619</id>
		<title>Storage Devices</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Storage_Devices&amp;diff=3619"/>
		<updated>2007-03-19T11:29:17Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Info ==&lt;br /&gt;
&#039;&#039;&#039;Package:&#039;&#039;&#039; LinuxMCE-storage-devices&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Directory:&#039;&#039;&#039; src/PlutoStorageDevices&lt;br /&gt;
&lt;br /&gt;
== Background Info ==&lt;br /&gt;
This bash scripts where created to configure / setup storage devices that can be used in LinuxMCE. Currently there are 2 device templates that can be configured by this scripts:&lt;br /&gt;
*Hard Drives / Generic Internal Driver (1790)&lt;br /&gt;
*Network Storage / HD-HG300LAN (1794)&lt;br /&gt;
&lt;br /&gt;
This device templates have some common device data:&lt;br /&gt;
;PK_Users (3) : A list of integer values separated by comma. The numbers represent the id of the users who can use the storage device for storing private files on them. If the 0 value is there too, the storage device can also be used to store public files. If no value is entered, the default is considered 0 (public only). If the next device data (use LinuxMCE dir structure) is not set to 1, all the files will be accessible from one directory on the storage device, meaning that public / private files can be accessible by every user that can access that device.&lt;br /&gt;
&lt;br /&gt;
;Use LinuxMCE Directory Structure (130) : This value can be 1 or 0, meaning that the information on that devices will be stored using a LinuxMCE directory structure, identical to the one in /home directory. For every user there will be a separate directory to store it&#039;s private data and there will also be a /public directory in there. The default is set to 1 but if other/no value is entered will be considered 0.&lt;br /&gt;
&lt;br /&gt;
;Use Automatically (134) : A leftover ? Not used&lt;br /&gt;
&lt;br /&gt;
;Directories (153) : The media directories from the LinuxMCE directory structure that can be used on this device. Example by entering &#039;&#039;music, movies&#039;&#039; only the music and movies folders will be available from LinuxMCE. The value can be empty, meaning that all directories will be available.&lt;br /&gt;
&lt;br /&gt;
== File Details ==&lt;br /&gt;
=== Scripts used to do generic setup ===&lt;br /&gt;
&lt;br /&gt;
;auto.PlutoStorageDevice : The /etc/auto.PlutoStorageDevices file is used by automounter to mount different storage device in the /mnt/device/device_id directories.&lt;br /&gt;
&lt;br /&gt;
;StorageDevices_ExportsNFS.sh : Some devices can be attached to only one computer, for example the internal disc drive. This script generates a section in the /etc/exports file that can export the local mounts of this kind of devices over nfs. This way the local storage devices can be accessed by any computer over the network. After it updates the /etc/exports file it also triggers a nfs reload.&lt;br /&gt;
&lt;br /&gt;
;StorageDevices_Symlinks.sh : The mounted storage devices will be accessible to the user via symlinks that are created in the /home directory by this script. Depending if the storage device uses a LinuxMCE directory structure or not the symlink will be pointing to the mount point directly or to the LinuxMCE media directors that where previously created in it. Also the symlinks will be created only in the directories listed on the &#039;&#039;Directories&#039;&#039; device data.&lt;br /&gt;
&lt;br /&gt;
;StorageDevices_PlutoDirStructure.sh [-d &amp;lt;deviceID&amp;gt;]: Creates a LinuxMCE directory structure on a mounted storage device. Called without -d parameter it creates the LinuxMCE dir structure only on the locally mounted devices, used with &#039;&#039;-d&#039;&#039; it creates the LinuxMCE structure on the specified device. If a device doesn&#039;t have the corresponding device data (130) set to true that the script skips it.&lt;br /&gt;
&lt;br /&gt;
;StorageDevices_Setup.sh [--cascade]: is the main script that calls the previous script so that it can setup the storage devices. Is intended to be used as a startup script. At startup is called by sysv-rc without the cascade parameter. If the &#039;&#039;--cascade&#039;&#039; parameter is supplied that the scripts runs on the local machine and triggers itself to run on the other working machines too.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Case ==&lt;br /&gt;
=== Generic Internal Driver (1790) ===&lt;br /&gt;
This device can be associated with a spare partition that the user has on the drives located in one of the computers running LinuxMCE (Diskless MD, Core or Hybrid). The spare partition can be used to store data like movies, music or any other files that the user wants to be easily accessed by LinuxMCE.&lt;br /&gt;
&lt;br /&gt;
This device is detected automatically by LinuxMCE.&lt;br /&gt;
&lt;br /&gt;
=== HD-HG300LAN (Buffalo NAS) (1794) ===&lt;br /&gt;
This device template is used for integrating Buffalo HD-HG300LAN Network Storage Device into LinuxMCE. The Buffalo device is detected via the DHCP Plug&#039;n&#039;Play daemon once inserted into the internal network of the LinuxMCE core.&lt;br /&gt;
&lt;br /&gt;
=== Generic NFS/Samba Shares (1769/1678) ===&lt;br /&gt;
This device can be associated with a samba(windows) or nfs share that is located on a computer/storage device. To add this kind of device, the user needs to manually add it from the LinuxMCE-admin web interface.&lt;br /&gt;
&lt;br /&gt;
For the samba share the user needs to know:&lt;br /&gt;
* The ip address which will need to added to the device IPaddress field&lt;br /&gt;
* The username that that can have acces to that samba share. If the user is left empty or is &#039;guest&#039;, an unathenticated mount will be tried.&lt;br /&gt;
* The password for the username (mandatory)&lt;br /&gt;
* The share name&lt;br /&gt;
&lt;br /&gt;
He can also add the maximum file size that is supported by that share. For example on FAT32 partitions the maximum file size is limited to 4GB.&lt;br /&gt;
&lt;br /&gt;
For the nfs shares the user needs to know:&lt;br /&gt;
* The ip address of the device/computer that has that share&lt;br /&gt;
* The name of the directory that is shared&lt;br /&gt;
&lt;br /&gt;
After adding one of this devices the user should manually do a quick reload router.&lt;br /&gt;
&lt;br /&gt;
[[Category: LinuxMCEBashScripts ]]&lt;br /&gt;
[[Category: LinuxMCE Devices ]]&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Why_DCE_complements_UPNP,_XAP,_XPL_and_other_standards%3F&amp;diff=3611</id>
		<title>Why DCE complements UPNP, XAP, XPL and other standards?</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Why_DCE_complements_UPNP,_XAP,_XPL_and_other_standards%3F&amp;diff=3611"/>
		<updated>2007-03-19T11:21:55Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;There are lots of existing standards and protocols defining how devices in a smart home should communicate.  LinuxMCE is neutral in the protocol wars, and is not promoting its internal protocol, DCE, as an alternative.  We will be adding support for all the popular protocols over time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our focus is squarely on LinuxMCE as a consumer solution, rather than DCE as a protocol.  Our goal is to deliver a product that appeals to the consumer, and consumers buy solutions, not protocols.  A typical consumer doesn&#039;t walk into an electronics store and asks for a network audio player that supports UPNP over TCP/IP, connects via an RJ45 connector to his LAN and can render streaming MP3 files.  Rather, he just wants a way to listen to his music in the kitchen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Of course, the protocols are necessary and can make or break the user&#039;s experience.  But, at LinuxMCE, that&#039;s not our focus.  We will let the experts work out the protocols-our expertise is delivering a user-friendly solution.  Therefore, rather than competing with protocols, we see LinuxMCE as their greatest asset.  If you want to promote your protocol or device, we will work with you to make LinuxMCE support that protocol, and then you will be able to offer consumers a turnkey solution based on your protocol.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;As a protocol, LinuxMCE&#039;s DCE solution is different from the others because we wanted to encourage a collaborative environment, and make it very easy for any developer to start adding his own DCE Devies without consulting us, or a central committee.  Our different approach also makes it easier for DCE to work with and compliment the other protocols.  Here&#039;s a rundown:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Everything is defined in a SQL database managed by sqlCVS&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Like UPNP, XAP, etc., LinuxMCE&#039;s DCE is both a protocol and a data defintion.  Data definition meaning: this is Device X, these are the data parameters it needs, these are the commands it implements, these are the events it fires.  The protocol itself is simple.  We just defined a structure for messages that devices can pass between each other, usually commands and events.  As open source, the protocol is easy enough to enhance and build upon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The more challenging aspect is how to bring that same global collaboration process to the data definition.  This is something we felt was lacking in all the current standards.  We wanted a comfortable way for developers and hardware manufacturers to dive right in, adding and modifying device specifications instantly, working collaboratively with others around the globe.  If you want to be able to enhance or change the way a &amp;quot;Light switch&amp;quot; works, you should be able to do so with consulting a committee, but also without breaking the existing Light Switches, and without altering the &amp;quot;Light Switch&amp;quot; standard unless the original &amp;quot;Light Switch&amp;quot; author approves.  Basically, we wanted the data definition to be as dynamic as the software is.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If you are a programmer, you know that the tool which has allowed open source to grow so rapidly and become so popular is source control, like cvs.  There is a master repository somewhere.  Anybody can checkout a local copy.  Play with it, enhance it, fix it.  When done, he can check-in changes, pending approval from whoever is the owner of that particular module.  Everybody around the globe can work together and build upon what others have done, but there is still a control mechanism (ie cvs) that keeps it organized.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;So, we wrote a program called sqlCVS which does the same thing for a database that cvs does for source code.  Every LinuxMCE user, techie or end-user, automatically checks out a local copy of the master database, along with a web-based front-end.  LinuxMCE&#039;s installer does this.  So, if you&#039;re a developer, you can browse through all the commands in DCE&#039;s database.  Find one, say &amp;quot;GetVideoFrame&amp;quot;, and see who wrote it, what parameters it takes, what devices use it, how it&#039;s used, read the comments, and see where any related source code is.  If you have a device that handles video, then you can click a button to create a new device template, and add that command to your device too.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;GetVideoFrame&amp;quot; command started out as something that Television and PVR devices implemented.  The Orbiters would send the command so they could display multiple TV programs in picture-in-picture windows.  But then the developer that created a video surveillance camera added the same command to his device.  Now the end user can hit the &amp;quot;PIP&amp;quot; button on his tv remote, and choose a camera to put in the PIP window-without any change to the remote control software.  Maybe you want to add a new parameter to the &amp;quot;GetVideoFrame&amp;quot;, such as the aspect ratio.  You can do that-adding parameters does not break any existing devices.  But, perhaps you want to change an existing parameter.  Maybe you want to add &amp;quot;TIFF&amp;quot; as an option to the &amp;quot;Format&amp;quot; parameter.  You can do that on your local copy, and work on the source code to implement it.  When you choose to commit your changes, sqlCVS tells you that you don&#039;t have permission to change that parameter and will give you a batch number and an ID of the person responsible for that command.  You can send the responsible person a message through LinuxMCE asking him to review and approve your batch.  Once he does, your changes become committed to the &amp;quot;Development&amp;quot; repository.  When the developers feel they have a version ready for release, they notify the testing department, which runs a sqlCVS command to merge the changes into the &amp;quot;Testing&amp;quot; repository.  When it&#039;s been thoroughly tested, they merge the changes into the &amp;quot;Release&amp;quot; repository, and the end-users systems automatically update themselves.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This allows anybody to build upon the data definition without fear of breaking anything.  You can add a device, create commands, etc., knowing anybody else can build upon your work, but that you will always be notified and given the option of approving or denying changes to your device.  For the end user, the entire process is completely invisible.  All the end user sees is that over time more devices start doing more and more things.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We felt this was a much better solution than either (a) having a central committee that has to review and approve all changes to the specification, slowing down development, or (b) allowing a free-for-all where anybody can change anything and break other people&#039;s work.  The goal is a dynamic and flexible platform.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This also makes DCE very compatible with other protocols and standards.  For example, whoever is responsible for the specification of a UPNP thermostat can create a device &amp;quot;UPNP thermostat&amp;quot;, then add the various data, commands and events that device uses.  As the owner of that device, he knows that nobody else will be able to commit any changes to his specification without his approval.  If the data definition for a UPNP thermostat changes, it only takes minutes to make those changes on the DCE webpage.  sqlCVS automatically handles versioning the database, so that it is always in sync with the source code, keeps a full history of all modifications, allows rolling back unwanted changes and checking out snapshots at various times.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Easy to create DCE devices with DCEGen&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can create a DCE device in only a couple of minutes.  Just add the device using the web interface, define the data, command and events, and run DCEGen.  DCEGen will build you a complete C++ program with stubs for you to implement your commands, and functions to call to fire events and get/set data parameters.  It&#039;s ready to compile and run on both Windows with VS.net, and Linux with gcc.  And it has lots of libraries and widget classes to automate sorts of things.  For example, if you want to send the &amp;quot;Pause&amp;quot; command to all media players within a room, it&#039;s just 1 line of code.  When you change the data definition, rerun DCEGen and it will merge those changes back into your source code.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Very simple plug-and-play protocol&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If your device is IP based, you can specify ranges of Mac Addresses and a configure script.  When the user plugs any such device into the home network, LinuxMCE&#039;s PNP back-end will see the Mac Address, automatically add the device and call the configure script.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Granted this is a very simple approach, and doesn&#039;t have the sophistication of a standard like UPNP.  However, we maintain that all the end user cares about is that he plugs his network audio player into a network jack, and immediately he can hit the &#039;playlist&#039; button on his remote and his favorite music starts playing.  We added a device template for the Squeeze Box network audio player by Slim Devices, and took only a couple hours to write a configure script.  After that, it worked.  Now our users are able to plug in a Squeeze Box.  Their mobile phone beeps, says &amp;quot;Enjoy your Squeeze Box&amp;quot;.  They can hit &amp;quot;Playlist&amp;quot;, choose some music, and it starts playing.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;So, while we actively support the sophisticated protocols, like UPNP, having a mechanism like this that allows anyone to add PNP support for a device without even requiring contact with the hardware manufacturer can allow a lot more devices to be supported more quickly, promoting the whole concept of PNP.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Photo_Screen_Saver&amp;diff=3610</id>
		<title>Photo Screen Saver</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Photo_Screen_Saver&amp;diff=3610"/>
		<updated>2007-03-19T11:21:05Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Photo Screen Saver is an OpenGL application that will slide different images which are taken from www.flickr.com site.&lt;br /&gt;
They are downloaded by the script /usr/pluto/bin/flickr.pl&lt;br /&gt;
The params of that script are: minwidth, minheight, and which number of previous days should be searched.&lt;br /&gt;
&lt;br /&gt;
The all files are downloaded by at the folder /home/flickr/[year]/[mount]/[day]&lt;br /&gt;
&lt;br /&gt;
After the script saves some files the PhotoScreenSaver (PSS) is started.&lt;br /&gt;
&lt;br /&gt;
PSS is a child device of Orbiter which means that will get different parameters from the admin page and will be started/stopped by Orbiter itself.&lt;br /&gt;
&lt;br /&gt;
What is the normal flow of PSS?&lt;br /&gt;
&lt;br /&gt;
[[1. Initialization]]&lt;br /&gt;
&lt;br /&gt;
[[2. Animation thread]]&lt;br /&gt;
&lt;br /&gt;
[[3. Finalization]]&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=PlutoBaS-devel&amp;diff=3609</id>
		<title>PlutoBaS-devel</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=PlutoBaS-devel&amp;diff=3609"/>
		<updated>2007-03-19T10:18:05Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Application: Pluto Backup &amp;amp; Share - developed in C#/ VS2003&lt;br /&gt;
&lt;br /&gt;
Components:&lt;br /&gt;
   PlutoBaSInstaller - used to install the applications&lt;br /&gt;
   PlutoBaS - main application used to configure backup tasks and media shares&lt;br /&gt;
   PlutoBackupSrv - backup service - programmatically executing the backup tasks&lt;br /&gt;
   PlutoBaSMan - taskbar application for controlling the backup service&lt;br /&gt;
   PlutoBaSCtrls - custom visual controls&lt;br /&gt;
&lt;br /&gt;
PlutoBaSInstaller:&lt;br /&gt;
  - Standard setup application&lt;br /&gt;
  - Files included for deployment:&lt;br /&gt;
      - PlutoBaS.exe&lt;br /&gt;
      - PlutoBaSMan.exe&lt;br /&gt;
      - PlutoBaSSrv.exe&lt;br /&gt;
      - InstallUtil.exe - used for registering the service&lt;br /&gt;
      - MessageSend.exe, pthreadVC.dll - used for sending messages to DCERouter&lt;br /&gt;
  - Registry keys - HKLM\Software\Pluto :&lt;br /&gt;
      - LoggingPath&lt;br /&gt;
      - RouterIP&lt;br /&gt;
      - TaskDBPath&lt;br /&gt;
&lt;br /&gt;
PlutoBaS: &lt;br /&gt;
  - Main components&lt;br /&gt;
      - BackupTask - includes task management ( tasks list, task configuration - including saving itto a xml file ) &lt;br /&gt;
      - BackupDevices - includes Device Configuration( including reading&amp;amp;writing to xml&lt;br /&gt;
      - Backup - main functions for backup and restore&lt;br /&gt;
      - FolderInfo - includes disk folders management class ( paths, file filters )&lt;br /&gt;
      - MediaShares - main class for creating/removing media shares and saving shares configuration to a xml file )&lt;br /&gt;
      - NetAccess - classes for: &lt;br /&gt;
            - Share Management( creating/removing local shares, connecting to remote shares )&lt;br /&gt;
            - User Management( adding/deleting users - used for creating pluto_user )&lt;br /&gt;
            - Shell Commnads ( sending commands to DCERouter using MessageSend )&lt;br /&gt;
            - Pluto Manager ( used for discovering DCERouter - by udp broadcast - and connecting to it )&lt;br /&gt;
&lt;br /&gt;
      - TaskLogger - used for logging backup tasks into files&lt;br /&gt;
      - InterProcComm ( using Win32Security ) &lt;br /&gt;
            - manages interprocess communication&lt;br /&gt;
            - used mainly in PlutoBaSSrv &amp;amp; PlutoMan&lt;br /&gt;
            - includes implementation for interprocess Events, Semaphores and MemoryMappedFiles&lt;br /&gt;
&lt;br /&gt;
PlutoBaSCtrls:&lt;br /&gt;
  - FolderTreeView - tree for browsing through computer folders&lt;br /&gt;
  - EditableListBox - custom listbox with editable items&lt;br /&gt;
  - EditableCheckedListBox - custom checkedlistbox with editable items&lt;br /&gt;
&lt;br /&gt;
PlutoBackupSrv:&lt;br /&gt;
  - PlutoBackupSrvInstaller - component for registering the service&lt;br /&gt;
  - BackupService - main service component ( loading tasks, stating&amp;amp;stopping backup them, communication with PlutoBaSMan )&lt;br /&gt;
  - BackupTaskThread - multithreaded component for backup ( every task is executed in a separate thread )&lt;br /&gt;
  - Pluto&lt;br /&gt;
&lt;br /&gt;
PlutoBaSMan&lt;br /&gt;
  - main application - using InterprocComm to control the service&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=PlutoBaS&amp;diff=3608</id>
		<title>PlutoBaS</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=PlutoBaS&amp;diff=3608"/>
		<updated>2007-03-19T10:17:12Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Application: Pluto Backup &amp;amp; Media  Share&lt;br /&gt;
&lt;br /&gt;
Components:&lt;br /&gt;
   PlutoBaSInstaller - used to install the applications&lt;br /&gt;
   PlutoBaS - main application used to configure backup tasks and media shares&lt;br /&gt;
   PlutoBackupSrv - backup service - programmatically executing the backup tasks&lt;br /&gt;
   PlutoBaSMan - taskbar application for controlling the backup service&lt;br /&gt;
&lt;br /&gt;
Install the application using PlutoBaSInstaller.&lt;br /&gt;
Use Pluto Backup&amp;amp;Media Config ( PlutoBaS.exe ) to configure backup tasks and media shares.&lt;br /&gt;
  - First use &amp;quot;Find pluto&amp;quot; button to locate the DCERouter. It&#039;ll try to automatically find the router and load the available backup devices list.&lt;br /&gt;
  - After it finds the router you&#039;llbe able to use the other tabs:&lt;br /&gt;
      - Media tab:&lt;br /&gt;
            - Add directories you want to share and press save &amp;quot;Save configuration and update shares&amp;quot; to create the shares. &lt;br /&gt;
            - If you want to clear all shares you created, use &amp;quot;Clear all shares&amp;quot;&lt;br /&gt;
      - Backup tab:&lt;br /&gt;
            - Configure your backup tasks. For every task you can setup:&lt;br /&gt;
                  - which directories to backup ( including subdirectories and filtering files )&lt;br /&gt;
                  - how often to backup ( you can also create a full backup using the &amp;quot;Backup now&amp;quot; button from the &amp;quot;On demand&amp;quot; option&lt;br /&gt;
                  - choose backup devices to use, from those available. It&#039;ll try to create the backup on those devices you selected - if one of the devices it&#039;s not available or it doesn&#039;t have enough space it&#039;d try the next one.&lt;br /&gt;
            - Use &amp;quot;Save configuration&amp;quot; to save the backup tasks list.&lt;br /&gt;
      - Restore tab:&lt;br /&gt;
            - First choose backup device you want to restore from. when you select a device from the list it&#039;ll try to connect to the device and retrieve the backed up computers and tasks - sometimes, this could take take a while.&lt;br /&gt;
            - Then choose the backed up computers and check the tasks you want to restore.&lt;br /&gt;
            - Finally choose the destination ( the local directory you want to restore to ) and press &amp;quot;Restore&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Next you can use Pluto Backup&amp;amp;Media Manager to control the backup service. It will start minimized in the tray bar.&lt;br /&gt;
&lt;br /&gt;
You can use it to:&lt;br /&gt;
      - Start/Stop the service&lt;br /&gt;
      - Force reloading the task list - which will command the service to reload the backup configuration from the disk&lt;br /&gt;
      - See the current tasks status by pressing &amp;quot;Refreshing task list&amp;quot;&lt;br /&gt;
      - Enable/disable a task&lt;br /&gt;
      - Command the service to execute a &amp;quot;backup on demand&amp;quot; for that task.&lt;br /&gt;
&lt;br /&gt;
[http://linuxmce.com/wiki/index.php/PlutoBaS-devel Development Info]&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=PlutoBaS&amp;diff=3607</id>
		<title>PlutoBaS</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=PlutoBaS&amp;diff=3607"/>
		<updated>2007-03-19T10:16:42Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Application: Pluto Backup &amp;amp; Media  Share&lt;br /&gt;
&lt;br /&gt;
Components:&lt;br /&gt;
   PlutoBaSInstaller - used to install the applications&lt;br /&gt;
   PlutoBaS - main application used to configure backup tasks and media shares&lt;br /&gt;
   PlutoBackupSrv - backup service - programmatically executing the backup tasks&lt;br /&gt;
   PlutoBaSMan - taskbar application for controlling the backup service&lt;br /&gt;
&lt;br /&gt;
Install the application using PlutoBaSInstaller.&lt;br /&gt;
Use Pluto Backup&amp;amp;Media Config ( PlutoBaS.exe ) to configure backup tasks and media shares.&lt;br /&gt;
  - First use &amp;quot;Find pluto&amp;quot; button to locate the DCERouter. It&#039;ll try to automatically find the router and load the available backup devices list.&lt;br /&gt;
  - After it finds the router you&#039;llbe able to use the other tabs:&lt;br /&gt;
      - Media tab:&lt;br /&gt;
            - Add directories you want to share and press save &amp;quot;Save configuration and update shares&amp;quot; to create the shares. &lt;br /&gt;
            - If you want to clear all shares you created, use &amp;quot;Clear all shares&amp;quot;&lt;br /&gt;
      - Backup tab:&lt;br /&gt;
            - Configure your backup tasks. For every task you can setup:&lt;br /&gt;
                  - which directories to backup ( including subdirectories and filtering files )&lt;br /&gt;
                  - how often to backup ( you can also create a full backup using the &amp;quot;Backup now&amp;quot; button from the &amp;quot;On demand&amp;quot; option&lt;br /&gt;
                  - choose backup devices to use, from those available. It&#039;ll try to create the backup on those devices you selected - if one of the devices it&#039;s not available or it doesn&#039;t have enough space it&#039;d try the next one.&lt;br /&gt;
            - Use &amp;quot;Save configuration&amp;quot; to save the backup tasks list.&lt;br /&gt;
      - Restore tab:&lt;br /&gt;
            - First choose backup device you want to restore from. when you select a device from the list it&#039;ll try to connect to the device and retrieve the backed up computers and tasks - sometimes, this could take take a while.&lt;br /&gt;
            - Then choose the backed up computers and check the tasks you want to restore.&lt;br /&gt;
            - Finally choose the destination ( the local directory you want to restore to ) and press &amp;quot;Restore&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Next you can use Pluto Backup&amp;amp;Media Manager to control the backup service. It will start minimized in the tray bar.&lt;br /&gt;
&lt;br /&gt;
You can use it to:&lt;br /&gt;
      - Start/Stop the service&lt;br /&gt;
      - Force reloading the task list - which will command the service to reload the backup configuration from the disk&lt;br /&gt;
      - See the current tasks status by pressing &amp;quot;Refreshing task list&amp;quot;&lt;br /&gt;
      - Enable/disable a task&lt;br /&gt;
      - Command the service to execute a &amp;quot;backup on demand&amp;quot; for that task.&lt;br /&gt;
&lt;br /&gt;
[http://plutohome.com/wiki/index.php/PlutoBaS-devel Developement Info]&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Useful_3rd_party_applications&amp;diff=3605</id>
		<title>Useful 3rd party applications</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Useful_3rd_party_applications&amp;diff=3605"/>
		<updated>2007-03-19T09:46:13Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
I&#039;d like to aggregate all 3rd party applications that can be useful to use together with LinuxMCE.&lt;br /&gt;
&lt;br /&gt;
==Cross OS==&lt;br /&gt;
&lt;br /&gt;
[http://misterhouse.sourceforge.net/ Misterhouse]  great Perl based home automation system that lets you easily extend its functionality. Great for complementing features that are missing in LinuxMCE. Currently some limited integration is being worked on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Windows XP==&lt;br /&gt;
&lt;br /&gt;
[http://www.sudu.dk/mythtvplayer/index.php Mythtv player]   useful small application that lets you watch mythtv recordings on win xp machines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Linux Ubuntu==&lt;br /&gt;
&lt;br /&gt;
[http://www.egroupware.org/ Egroupware]  potentially useful as PIM back-end. No integration with LinuxMCE yet&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Sensors&amp;diff=3604</id>
		<title>Sensors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Sensors&amp;diff=3604"/>
		<updated>2007-03-19T09:45:36Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sending events from command line==&lt;br /&gt;
There is a utility in LinuxMCE (/usr/pluto/bin) that allows sending proper DCE message from command line. If you want for instance to trip motion sensors on/off you can achieve this in simple way (ID means ID of particular device that you send event for) :&lt;br /&gt;
&lt;br /&gt;
Event &amp;quot;tripped on&amp;quot;&lt;br /&gt;
 ID -1000 2 9 25 1&lt;br /&gt;
&lt;br /&gt;
Event &amp;quot;tripped off&amp;quot;&lt;br /&gt;
 ID -1000 2 9 25 0&lt;br /&gt;
&lt;br /&gt;
Event &amp;quot;temperature changed&amp;quot;&lt;br /&gt;
 ID  -1000 2 25 30 temperature_value&lt;br /&gt;
&lt;br /&gt;
Event &amp;quot;output on&amp;quot;&lt;br /&gt;
 ID  -1000 2 28&lt;br /&gt;
&lt;br /&gt;
Event &amp;quot;output off&amp;quot;&lt;br /&gt;
 ID  -1000 2 29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For instance - &lt;br /&gt;
&lt;br /&gt;
 A. tripping security sensor with ID of 195 to ON :&lt;br /&gt;
 /usr/pluto/bin/MessageSend dcerouter 195 -1000 2 9 25 1&lt;br /&gt;
&lt;br /&gt;
 B. play media (/home/public/data/tts/0.wav) on Xine player with ID of 44 :&lt;br /&gt;
 /usr/pluto/bin/MessageSend localhost 0 44 1 37 29 &amp;quot;&amp;quot; 41 &amp;quot;&amp;quot; 42 &amp;quot;&amp;quot; 59 &amp;quot;/home/public/data/tts/0.wav&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Share_IR_Codes&amp;diff=3603</id>
		<title>Share IR Codes</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Share_IR_Codes&amp;diff=3603"/>
		<updated>2007-03-19T09:44:54Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you don&#039;t uncheck &amp;quot;Share my I/R codes with other LinuxMCE users&amp;quot; checkbox from Wizard/Devices/AV Equipment page, the codes you [[Learning/typing_my_own_code|learned or typed]] are sent to our database using the script Share_IRCodes.sh, which use [[SqlCVS]] to send the codes to our central database, so any other users can benefit of them.&lt;br /&gt;
&lt;br /&gt;
The script is called automatically on each reboot. However, the codes need to be validated by our staff, mostly to prevent accidental submissions.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Enabling_UIv2&amp;diff=3602</id>
		<title>Enabling UIv2</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Enabling_UIv2&amp;diff=3602"/>
		<updated>2007-03-19T09:44:03Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To enable the version 2 of the Orbiter User Interface (UIv2), you have to do the following:&lt;br /&gt;
&lt;br /&gt;
* Login to the LinuxMCE-admin website on your Core&lt;br /&gt;
* Go to the &amp;quot;Orbiters&amp;quot; page&lt;br /&gt;
* For the Orbiter where you want to use UIv2, do this:&lt;br /&gt;
** In the &amp;quot;UI&amp;quot; drop-down box, select &amp;quot;V2 Normal Horizontal (16:9)&amp;quot;&lt;br /&gt;
** Tick &amp;quot;Use alpha blended UI&amp;quot;&lt;br /&gt;
** Tick &amp;quot;User OpenGL effects&amp;quot;&lt;br /&gt;
** Click &amp;quot;Update&amp;quot;&lt;br /&gt;
* Go to the &amp;quot;Media Directors&amp;quot; page, find the Media Director that runs the Orbiter you selected above and do this:&lt;br /&gt;
** Change &amp;quot;Hardware acceleration&amp;quot; to opengl&lt;br /&gt;
** Change &amp;quot;Deinterlace Quality&amp;quot; to &amp;quot;None&amp;quot;&lt;br /&gt;
** Go to the bottom of the page and click &amp;quot;Update&amp;quot;&lt;br /&gt;
* Find the Media Director again and change the resolution to a 16:9 resolution (like 720p)&lt;br /&gt;
&lt;br /&gt;
After you change the resolution, the X server and Orbiter will re-start and the Orbiter will get regenerated. After this is done, you will have the Orbiter running with the new user interface.&lt;br /&gt;
&lt;br /&gt;
Note about de-interlacing. It is said above that you should set it to &amp;quot;None&amp;quot; at first, but if your CPU can handle it, you can increase the settings.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=X10&amp;diff=3601</id>
		<title>X10</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=X10&amp;diff=3601"/>
		<updated>2007-03-19T09:42:30Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;X10 devices are controlled by the LinuxMCE system using a CM11A module connected to the core&#039;s serial port.  This module gets plugged into an electrical wall outlet to send X10 signals throughout the power lines of the house.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Wizard_Pages&amp;diff=3599</id>
		<title>Wizard Pages</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Wizard_Pages&amp;diff=3599"/>
		<updated>2007-03-19T09:42:02Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The Wizard is designed to be a quick and simple way to setup your whole LinuxMCE system.  To use it, just go to the LinuxMCE Admin web site, and click &amp;quot;Wizard&amp;quot;.  Then go through each of the pages and fill out the information on each page.  Be sure to click &amp;quot;Save&amp;quot; or &amp;quot;Update&amp;quot; to save the changes you make to each page before going to the next.  Every page in the Wizard section is designed to be simple for the non-techie.  There may be some other, more advanced pages that are more technical.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;What pages you see in your Wizard will depend on what devices you have in your home--you will only see pages that apply to your home.  If you add more devices later on, more pages may appear in the wizard for those devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Setting up your LinuxMCE system consists of 4 things:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1) Providing some general information, such as what kind of network you have.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2) Creating the devices (lights, tv&#039;s, cameras, etc.).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3) Creating your scenarios.  A &amp;quot;scenario&amp;quot; is a group of commands, or tasks, you want executed when you touch a button.  Each scenario you create will appear on the Orbiters as a button.  Scenarios are generally organized into 5 categories: lighting, media, climate, security and telephone.  You can create, for example, a lighting scenario called &amp;quot;Entertaining&amp;quot; which turns on all the lights in the house and in the front yard.  A button labeled &amp;quot;Entertaining&amp;quot; will then appear on the Orbiters in the lighting section--touch it to activate the scenario.  Any scenario can do anything.  For example, just because the &amp;quot;Entertaining&amp;quot; scenario is a lighting scenario doesn&#039;t mean  the scenario only affects lights.  You can make the scenario also play some music, and maybe open the front gate.  You can use the &amp;quot;Advanced, My Scenarios&amp;quot; menu option for low-level control over a scenario, to make it do whatever you want.  However the Wizard includes pages that make it very easy to create scenarios.  For example, when you add a lighting scenario with the Wizard, it lists all the lights in the house and lets you pick the ones you want to change with the scenario.&lt;br /&gt;
&amp;lt;p&amp;gt;4) Creating event handlers.  This is how you tell LinuxMCE you want it to do something in response to some event.  For example, you want LinuxMCE to turn on the Front Porch light when a motion detector is tripped.  Or you want it to play a loud message on the TV&#039;s when there is a security breach.  Or stop watering the lawn after it rains.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Wiring_Considerations&amp;diff=3598</id>
		<title>Wiring Considerations</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Wiring_Considerations&amp;diff=3598"/>
		<updated>2007-03-19T09:41:13Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Wiring is often the biggest hurdle in any whole house system because most such products use their own, proprietary wiring. That means tearing open walls to run their special cabling, which is often very thick and difficult to manage. With LinuxMCE, on the other hand, everything is IP based. That means it plugs into an Ethernet network (the same network that powers the Internet and virtually all office and home networks). An Ethernet network runs on Cat5 (or cat5e/cat6) cable. This cable is commonly installed in homes already, since it is used for most phone systems as well as a home network. If your home does not already have cat 5 cabling, cat 5 is definitely one of the smaller, easier wires to run. What&#039;s more, because home networks are so desirable for internet access and file/printer sharing, installing cat5 cabling in a house is well worth the cost and will increase the resale value, even without a LinuxMCE system. This is another advantage of LinuxMCE&#039;s use of the industry standard cable. The cable by itself, even without the LinuxMCE system, is very useful to have. When you have an Ethernet/cat5 jack, you can not only plug in LinuxMCE equipment, you can plug in any personal computer, a printer, or a wide variety of other IP based devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;So the only wiring requirement is that you have Ethernet (cat5) going to every location where you want to either put a piece of LinuxMCE equipment (a Media Director, a LinuxMCE Phone, etc.) or any third party device that you want LinuxMCE to control (your lighting control system, alarm panel, pool controls, surveillance cameras, etc.). All LinuxMCE devices will plug directly into the jack. And there are 3 primary ways that LinuxMCE will control your existing, non-LinuxMCE equipment:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Ethernet (aka IP based) -- this is the best, and most flexible way to control equipment. This means the device already uses the same system LinuxMCE uses, and you can plug it into any jack. Chances are the LinuxMCE core will be able to configure it automatically and there will be nothing for you to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;RS232 -- common with non-a/v equipment (lighting systems, pool controls, etc), and some high-end a/v equipment. If your a/v equipment has an RS232 port, this is definitely preferable over Infrared.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Infrared -- most common with a/v equipment, it sends infrared codes just like a remote control. If you are going to be buying new a/v equipment, try to get devices that have an RS232 port. You will find that RS232 is much faster and more reliable. If you decide to buy a device that does not have RS232 and will use Infrared to control it, be sure to only buy a/v equipment that supports discrete codes. If you buy a/v equipment that does not support discrete codes, LinuxMCE will still control it, and control it better than your typical home automation system, however you will find the devices will be slow to respond, and may not be as reliable.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Even for the Infrared and RS232 devices, they will still ultimately plug into the Ethernet jack. There will just be a device that sits in between them and the Ethernet network. In the case of infrared, that devices is an interface module. You plug the interface module into the Ethernet network, and little i/r emitters into the interface module. The i/r emitters send infrared codes just like your remote control. In the case of RS232 devices, you can plug them either into an interface module, or into the core, or into any of your LinuxMCE Media Directors.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
****&amp;lt;br&amp;gt;&lt;br /&gt;
  Can LinuxMCE run wireless?&amp;lt;br&amp;gt;&lt;br /&gt;
  What if my home doesn&#039;t have cat 5?&amp;lt;br&amp;gt;&lt;br /&gt;
  What is proper cat5 cabling?&amp;lt;br&amp;gt;&lt;br /&gt;
***&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Why_dual_network_cards%3F&amp;diff=3597</id>
		<title>Why dual network cards?</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Why_dual_network_cards%3F&amp;diff=3597"/>
		<updated>2007-03-19T09:39:34Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;If you have multiple computers connected in a network, every computer needs to have a unique IP address that identifies itself to the network.  The DHCP server has the responsibility of assigning IP addresses.  Normally one computer or device--and only one--will be the DHCP server.  Whenever a computer or other device is plugged into the network it will normally ask the DHCP server for a unique IP address.  In a typical home network the DSL or Cable Modem acts as the DHCP server and gives IP addresses.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to use LinuxMCE&#039;s plug-and-play, which allows you to just plug any device into any jack (camera, phone, media director, etc.) and have LinuxMCE automatically configure the device, then the LinuxMCE Core needs to be the DHCP server.  The same is true if you want the media directors to be dual purpose media director appliances and normal pc&#039;s.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If your existing cable or DSL modem is configured to be the DHCP server you will need to disable its internal DHCP server if you want the Core to be the DHCP server--there can only be 1 DHCP serveron the network.  If you have dual network cards in the Core this is not an issue.  Hookup your internet connection (DSL/Cable modem, etc.) to one network card. This is your &#039;external&#039; network where the internet comes in. And connect your other network card to the Ethernet switch where all your media directors and other computers are connected--your &#039;internal&#039; network.  The DSL/Cable modem is then the  DHCP server for the &#039;external&#039; network, and the Core is the DHCP server for your &#039;internal&#039; network. If you don&#039;t understand this, don&#039;t worry--the Core will configure itself for you and you won&#039;t need to change any settings in your DSL/Cable Modem&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Another advantage of dual network cards is that then all internet traffic is forced to go through the Core.  The Core then handles allocating your bandwidth automatically, giving higher priority to telephone and video calls so the connection is very smooth.  It&#039;s all automatic if you use the Kick-Start CD and have dual network cards--there is nothing to configure.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Who_Am_I,_Where_Am_I&amp;diff=3596</id>
		<title>Who Am I, Where Am I</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Who_Am_I,_Where_Am_I&amp;diff=3596"/>
		<updated>2007-03-19T09:39:04Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;When you setup your LinuxMCE system using the LinuxMCE Admin website, you create scenarios, or activities, for all the rooms in your house.  These are categorized under: Lighting, Media, Climate, Security, Telecommunications and Other.  You may create a media scenario in the family room called �Watch TV� that turns on the TV.  Or a lighting scenario in the bedroom called �Go to bed� that turns off the lights.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Any scenario in any room can control any device in the house.  For example, in the master bedroom you may create a scenario �Kids sleep�, which turns off the lights in your children�s bedrooms.  But you would put that scenario in the room �Master Bedroom� because you want to see that scenario on your Orbiter when you are in the master bedroom-not because that scenario is controlling the lights in your master bedroom.  You may also want to see that scenario when you are in the living room, or perhaps you always want that scenario visible on the Orbiter no matter what room you are in.  The process of creating the scenarios and choosing what rooms they should appear in is described in the ***LinuxMCE Admin*** section.  This part of the manual explains how to use the Orbiter once your LinuxMCE system is setup.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here we will explain how to tell the Orbiter what room you are in so that you can choose scenarios from that room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The wireless standard orbiters (such as tablets, pda�s, or pc�s) use a technology called Wi-fi.  With Wi-fi, the range is quite large-you can wander throughout the house and still use the Orbiter.  However the Orbiter is not able to determine automatically what room you are in.  You must tell it.  On the main menu, in the lower right corner, are the �Who� and �Where� buttons.  The �Where� button shows what room the Orbiter is controlling now.  The scenarios you see on the menu are those that belong to that room.  If the �Where� button does not show the room you want to control, just touch it and then choose the correct room.  Of course you can pick any room in the house-not just the room you are in-to choose scenarios from that room.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The mobile orbiters (the mobile phones) use a different technology called Bluetooth.  Your media directors normally have a Bluetooth dongle which is the transmitter.  The range for Bluetooth is much shorter-about 30 feet or 10 meters from the transmitter.  The mobile orbiters can, therefore, usually determine what room you are in because the media director in that room will detect a much stronger signal strength from your mobile phone than the other media directors.  With the mobile orbiter, whenever you enter a room with a media director the mobile orbiter automatically switches to that room and shows you the scenarios for that room.  Of course you can still manually override this and tell the mobile orbiter what room you want to control.  You can control any room in the house-not just the room you are in.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the mobile orbiter�s main menu, there �Where� button is in the lower right.  If you want to control a room other than the one shown, touch the �Where� button from the main menu and choose the room you want to control.  Note that if you manually choose a room, the mobile orbiter will stay locked on to that room even when you move around the house.  This also means �follow-me� will not work since the mobile orbiter remains locked into 1 room.  If you want to return to automatic mode so the mobile orbiter automatically switches to whatever room you enter and follow-me functions normally, just choose �Where� and then choose �Automatic�.  When you are not in �Automatic� mode, you will see a * next to the room indicating that you are locked onto that room.  When there is no *, that means you are in automatic mode.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The Orbiters also need to know who is using them.  Not all family members may have permission to control all the rooms in the house.  The parents, for example, may want to control everything, but they may not want the children to be able to control their bedroom.  The Orbiter also needs to know who is using it so that it can show that person�s private media choices and to implement parental controls.  Whenever you play music, watch a movie and so on, your choices will be a combination of all public media, and the private media of whoever is using the Orbiter.  LinuxMCE also tracks favorite tv shows, alarms and other preferences by user.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will always see the current user in the �Who� button, on both the standard orbiter and the mobile orbiter.  If that is not you, just touch the button and choose yourself so the orbiter knows who is using it.  Using the LinuxMCE Admin website you can indicate that you want your user to be �Pin Code Protected�.  That means that if your user is selected, you will be required to enter your pin code to use the orbiter.  If you do not protect your user with a pin code, then anyone who has the Orbiter can switch to your user and access your private media and other personal settings.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Users&amp;diff=3593</id>
		<title>Users</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Users&amp;diff=3593"/>
		<updated>2007-03-19T09:38:13Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Here you specify who will be using the system--normally just list the family members.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;When you create a new user, LinuxMCE will do several things.  This person will now appear as a User on all the Orbiters when you touch the &amp;quot;Users&amp;quot; button.  This person will be able to save files, music, tv shows, etc., in his or her own personal folder.  LinuxMCE will begin to remember that person&#039;s tv viewing preferences, and so on.  Here is an explanation of all the settings for each user:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;User name&amp;lt;/b&amp;gt;:  This is a unique name or id for this person.  No two people who have LinuxMCE can have the same user name.  This is the user name that will be used to log in to the system, and for many other services.  For example, this will be the unique name to receive voice-over-ip phone calls, instant chat, video conferencing, etc.  When you first install your LinuxMCE system, there will be 1 user in the database already--the user that registered on linuxmce.com and created the installation.  When you add a new user, your LinuxMCE Core will contact linuxmce.com and send the user name to be sure that no other person has that same user name.  If that user name is taken by someone else, you will get a message and have to pick another user name.  A user account will also be created on linuxmce.com.  Note that the passwords are completely separate.  The password you provide here when creating a new user will be the initial password on linuxmce.com, but the passwords are in way linked.  When you change your password on linuxmce.com it does not effect your local password and vice versa.  LinuxMCE corporate can do nothing to help you retrieve a password if it is lost, and there is no back door.  If you lose your password, you will need the &amp;quot;Root&amp;quot; password you used when first setting up LinuxMCE.  If there is another user within your home with &amp;quot;Can modify&lt;br /&gt;
configuration&amp;quot; set, that user will also be able to reset a password for any other user.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Voicemail+Email&amp;lt;/b&amp;gt;:  Check this box and LinuxMCE will setup both a voicemail and email account for the user.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Access general mail&amp;lt;/b&amp;gt;:  Means this user can listen to voicemail left in the general mailbox.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Extension for intercom&amp;lt;/b&amp;gt;:  Is a 1, 2, or 3 digit number that is this person&#039;s internal extension on the phone system.  You can pick up any phone in the house and dial this extension to reach the user.  Also, if you have the Auto Attendant feature where LinuxMCE answers your calls, this will be the extension the caller dials to reach this person.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;:  If you specify a &amp;quot;Nickname&amp;quot;, that is the name that will appear on the user&#039;s button on the orbiter.  If nickname is blank, the Orbiter will use the first name, or if that is blank, the user name.  Unlike the username, the Nickname does not need to be unique and can be anything you want.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Email&amp;lt;/b&amp;gt;:  If the user receives voicemail, or email in the LinuxMCE email server, it will be forwarded to this email address.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Can Modify Configuration&amp;lt;/b&amp;gt;:  Means this user can configure your LinuxMCE system, add devices, change scenarios, etc.  It also means this user can add other users and change other users&#039; passwords.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Language&amp;lt;/b&amp;gt;:  Is the user&#039;s language.  Whenever possible, the system will display everything for this user in this language.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Primary Installation&amp;lt;/b&amp;gt;:  If you have multiple homes or installations joined together, this is the primary one for this user.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Use_a_satellite/cable_box_with_the_PVR&amp;diff=3591</id>
		<title>Use a satellite/cable box with the PVR</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Use_a_satellite/cable_box_with_the_PVR&amp;diff=3591"/>
		<updated>2007-03-19T09:35:27Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to set it up&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In LinuxMCE admin choose wizard, devices, AV equipment.  You&#039;ll see that the PVR capture card within the media director is listed just like any other AV device.  Add the satellite or cable box to this page and edit the audio/video pipes.  Specify that the audio and video are going to the PVR capture card, and select the input on the PVR capture card.  Now whenever you are watching video on that input using the PVR software, LinuxMCE knows to send any channel change commands to the cable or satellite box.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;  If you choose the &amp;quot;use connection Wizard&amp;quot; link, you&#039;ll see that you&#039;re able to specify a &amp;quot;live&amp;quot; audio and video path.  If the PVR software correctly fires live and online events, then LinuxMCE will automatically select the correct input on your AV equipment.  For example most satellite boxes have multiple audio and video outlets.  Hook one set of audiovideo outputs directly into your TV and receiver, and in the connection Wizard indicate this as a live pipe from the satellite box to the TV and receiver.  Hook another set of audiovideo outputs into the media director&#039;s PVR capture card, and specify this connection as the normal audiovideo pipe.  Now while you&#039;re watching live TV, you&#039;ll see the signal going directly to the TV, however the media director is still recording the video that has been output to the PVR capture card.  When you hit deposit button, or rewind button, or otherwise you are recorded video clip, then LinuxMCE will switch the inputs on the TV so that you&#039;re watching the video from the media director.  The advantage to this approach, is that like with all PVR&#039;s, you lose quality when the video is re-encoded to the capture card.  This is the same whether you use a PC-based PVR or a standalone PVR.  So normally when you&#039;re using a PVR, although it is very convenient, the picture quality is not as good as it otherwise would be.  With this solution you will always see the best possible picture quality.  If you&#039;re watching live TV you will see the video live, including in high definition if you have a high-definition TV.  Only when you switch to time lapse or prerecorded video do you see the encoded video from the PVR capture card.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to use it&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It&#039;s completely automatic and transparent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;Programmer&#039;s guide&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Translate_the_GUI_into_another_language&amp;diff=3589</id>
		<title>Translate the GUI into another language</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Translate_the_GUI_into_another_language&amp;diff=3589"/>
		<updated>2007-03-19T09:34:28Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;All the text which you see on the orbiter is stored in the LinuxMCE_main database in the &amp;quot;Text&amp;quot; and &amp;quot;Text_LS&amp;quot; tables.  Each block of text or phrase has an entry in the text table.  And the Text_LS table has that text in the language specified.  So to add a new language you need to add a new record to the Language table, and then add new records to Text_LS with the translated version of each text blocked.  It is probably easiest to do this in the Designer program.  Designer will show you all the text blocks logically laid out in folders and categories.  It is not necessary to translate the entire user interface all once.  You can translate only certain phrases and when OrbiterGen is building the user interface it will use English for any phrases that are not translated.  To select the Language for an orbiter, use LinuxMCE Admin and go to the Wizard, Devices, Orbiter page.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=The_Main_Menu&amp;diff=3587</id>
		<title>The Main Menu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=The_Main_Menu&amp;diff=3587"/>
		<updated>2007-03-19T09:33:41Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;This is the primary screen on the orbiter.  No matter what you see on the screen, you can always touch the &#039;main menu&#039; button (aka &#039;home&#039; button) to return to the main menu.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The main menu lists all the scenarios, or activities, for the room you are in.  You setup these scenarios using the LinuxMCE Admin web site.  Here is **more information** on telling the orbiter what room you want to control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The scenarios are categorized by: Lighting, Media, Climate, Security, Telecommunications and Other.  The categories are really just groupings to make it easier to find the scenario you want.  As explained in the documentation, you can make any scenario do anything you want.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To choose a scenario, just touch the appropriate button.  Some scenarios will cause the screen to change.  For example, if you touch �Watch TV�, the menu will change to the TV remote control.  Other scenarios do not change the menu.  For example, if you choose a lighting scenario, normally the lighting scenario is executed but the screen does not change.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On the standard orbiter, all the scenarios are there on the main menu.  If there are more scenarios than will fit on the screen, you will see a �more� button which will show you the rest of the scenarios.  On the mobile orbiter, the main menu just lists the categories.  Choose one of the categories to see the actual list of scenarios within that category.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every category also has a map as explained in the next chapter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TIP: Press CTRL+SHIFT+F1 to always return to the main menu if you don&#039;t have a menu button on the screen.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=TOAD_vs_Discrete_Codes&amp;diff=3585</id>
		<title>TOAD vs Discrete Codes</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=TOAD_vs_Discrete_Codes&amp;diff=3585"/>
		<updated>2007-03-19T09:33:10Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The goal of LinuxMCE media is to let the homeowner press 1 button, such as &#039;watch tv&#039;, and have LinuxMCE automatically turn on all the necessary a/v equipment and adjust all the settings automatically.  Sometimes the manufacturers of a/v equipment had the foresight to build into their products a mechanism for a smart home system, like LinuxMCE, to control their devices automatically.  These devices have a computer connection like RS232 or Ethernet.  They will always work exceptionally well in a LinuxMCE home.  LinuxMCE can command the a/v to do anything.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Very few a/v manufacturers put this type of control in their devices, and therefore LinuxMCE must control the equipment by sending infrared codes just like you do when you hit the button on your remote control.  The problem is that some a/v devices were designed in such a way that only a human operator can control them.  For example, to select an input on many TV&#039;s the operator must press an &#039;input select&#039; button on the remote control and watch the display on the TV until they see the input they want.  If LinuxMCE needs to set your TV to &#039;INPUT #3&#039;, it&#039;s impossible for LinuxMCE to &#039;watch&#039; the screen and know when the TV is at the right input.  Fortunately, some manufacturers added what are called &#039;discrete codes&#039; to their TV.  This means that there is an infrared command that will cause the TV to go directly to Input #3, for example, no matter what input it is currently on.  There may not be a button for Input #3 on the remote--you may still have to use the toggle &#039;input select&#039; button--but the TV has a special code that will cause it to go directly to that input.  Sony brand TV&#039;s are an example.  Even though there is only a toggle &#039;input select&#039; button on the remote, there are infrared commands that LinuxMCE can send to make the TV go directly to the desired input.  These are called &#039;discrete codes&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The same thing is true with turning the device on and off.  Some remote controls have dedicated &#039;on&#039; and &#039;off&#039; buttons.  But others have only a &#039;power&#039; button that toggles the state, and the manufacturer expects you, the user, to watch what&#039;s on the TV and decide if it&#039;s on or off.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you are going to buy new a/v equipment we recommend that you only buy devices that have computer-type controls, like RS232, or, at least, recognize discrete codes.  There are several web sites like http://www.remotecentral.com that have a lot of information on this subject and recommendations for equipment that have discrete codes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If your device does not recognize discrete codes, it is referred to in the industry as a TOAD--toggle only analog device.  It just recognizes commands that toggle it&#039;s state, such as the input or power.  LinuxMCE will still control these devices but due to their nature, it is impossible to control them perfectly.  For example, you will need to go to the A/V Properties page and list all the inputs that your device has in the right order.  LinuxMCE will then &#039;remember&#039; what input it last left the device on, and send the appropriate number of toggle commands.  If LinuxMCE last turned the device to Input #1, and you now want to watch something on Input #4, LinuxMCE will send the input select command 3 times.  This is not a perfect system.  If someone manually changed the input, or if the device ever didn&#039;t recognize a code, it could get out of sync.  LinuxMCE may think it&#039;s on one input when it&#039;s really on another.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The same thing is true for the power.  If your device has only a toggle power button, LinuxMCE will remember if you last the device on or off so it knows when to send the toggle power command.  But if LinuxMCE gets out of sync, it could be turning the TV off when it really thinks it&#039;s turning it on.  For the power setting, at least, your LinuxMCE Pro dealer has lots of tricks they can use to work around this problem.  There are sensors that LinuxMCE can read to determine if the TV is on or off, for example.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Settings_By_Alert_Type&amp;diff=3583</id>
		<title>Settings By Alert Type</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Settings_By_Alert_Type&amp;diff=3583"/>
		<updated>2007-03-19T09:30:19Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;For each of the types of security problems (security, fire, etc.) you can specify some parameters.  &#039;Delay before alarm&#039; means how many seconds you will have from the time the sensor is tripped to enter your PIN code on an Orbiter before the alarm sounds.  Normally for security alerts you would want to allow about 30 seconds so that you can enter the house and shut the alarm off.  You may also want a brief delay on &#039;fire&#039; events since you will likely add event handlers to tell before LinuxMCE to call the fire department in such cases.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Normally you will not have a delay on &#039;Movement&#039;, &#039;Announcement&#039; and &#039;Air Quality&#039; alerts since these do not normally trigger alarms.  If a sensor triggers an announcement, for example, you probably want LinuxMCE to make the announcement right away, rather than waiting for a delay.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that what type of security problem a sensor triggers, as in what event gets fired when the sensor is tripped, are specified on Wizard/Security/Reaction to sensors.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Exit delay means that no events of that type will be fired for that many seconds after you change house modes by entering your PIN on an Orbiter.  You will likely give yourself an exit delay of 30 seconds or so for security events.  If you specify no delay, then the instant you arm a sensor it becomes &#039;live&#039; and you will have no time to leave the house.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Alarm duration indicates how long after firing the initial event before LinuxMCE fires a corresponding &#039;reset&#039; event.  Let&#039;s say that you have added an event handler that turns on all the lights, tv&#039;s and stereos in the event of a security breach.  You likely will not want them to stay on indefinitely until you return.  So after however many seconds you specify here, LinuxMCE will fire a &#039;Reset security breach&#039; event.  In the event handler wizard you would then specify that in response to the security event you want LinuxMCE to turn on all the devices, and in response to the reset security event you want LinuxMCE to turn them off again.  You really have total flexibility to tell LinuxMCE to do anything in response to the events.  For example, if there is a security alert you may want LinuxMCE to turn on the lights and tv&#039;s, but after so many seconds when it resets the security alert, you want it to turn off the tv&#039;s and all lights except the front porch light.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Security-Video_Links&amp;diff=3581</id>
		<title>Security-Video Links</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Security-Video_Links&amp;diff=3581"/>
		<updated>2007-03-19T09:29:44Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Check off which cameras are able to view which sensors.  Then if an alert occurs with a sensor, LinuxMCE will archive video from all the cameras that are associated with it, and send you video from those cameras on your mobile phone.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Rip_a_CD/DVD_to_the_Core&amp;diff=3580</id>
		<title>Rip a CD/DVD to the Core</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Rip_a_CD/DVD_to_the_Core&amp;diff=3580"/>
		<updated>2007-03-19T09:29:01Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to set it up&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;There is nothing to setup other than [[Watch a DVD/Listen to a CD]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to use it&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note: The free version of LinuxMCE does not play or rip encrypted discs, like css encrypted dvd&#039;s, due to licensing issues.  So this will only work with non-encrypted DVD&#039;s if you have the free version.  See the [[Quick Start Guides]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Put the disc in the media director&#039;s drive, it will start playing automatically.  If there is device you are using as an Orbiter, such as a webpad, pda or phone, and it is in the same room as the media director, the remote will appear automatically and you can touch the &#039;copy disc&#039; button.  If you are using the media director&#039;s own on-screen orbiter with a mouse/keyboard or infrared remote, you will see the remote on screen if the disc contains audio.  But you won&#039;t see it if the disc contains video, since the video is playing full screen.  However if you click the mouse, press a key, or hit &#039;enter&#039; on the infrared remote, then a small window will appear with the controls, including the &#039;copy disc&#039; button.  If you have a media identifier device installed, the name of the file will be the title of the disc by default.  Otherwise you will need to type in the name using the Orbiter.  Ripping a dvd takes from 10 to 45 minutes depending on the speed of the drive and type of disc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;Programmer&#039;s guide&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A Rip Disk command is sent to the Disk_Drive device.  Disk_Drive uses abcde and cdparanoia to rip audio cd&#039;s.  If creates a folder under /home/X/data/music for the name of the disc, and within that folder a file for each track, where X is either &amp;quot;public&amp;quot; if you choose to save the media publicly, or &amp;quot;user_[user ID]&amp;quot; if you choose private.  For DVD&#039;s it runs dd to make a binary image (like an .iso image) which is saved in /home/X/data/movies with a .dvd extension.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you have a media identification device, the discs attributes will have been stored in the LinuxMCE_media database, in tables Disc and Disc_Attribute, and the cover art is stored in the table Picture, with the actual jpeg file going in /home/mediapics/ and the filename is the primary key from the picture table.  When the media is ripped, those attributes and cover art are transferred to the File and File_Attribute tables.  You can change the attributes or cover art in LinuxMCE Admin by choosing &amp;quot;Files &amp;amp; Media&amp;quot;, and &amp;quot;Browse Media&amp;quot;.  LinuxMCE uses the following extended attributes from the XFS file file system to track the file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ID = The primary key in the File table&amp;lt;br&amp;gt;&lt;br /&gt;
PIC = The primary key in the Picture table with the cover art&amp;lt;br&amp;gt;&lt;br /&gt;
DIR_AS_FILE = If it&#039;s set to 1, LinuxMCE will treat the directory as a file.  This is because LinuxMCE rips DVD&#039;s to a single .dvd file.  But you may already have a folder containing the individual VIDEO_TS directory with .vob files.  If so, when UpdateMedia finds this directory it sets this attribute to 1 so that LinuxMCE will treat the directory as a single movie, and play the movie when you select the directory, rather than treating it like a directory and showing you the individual .vob files to play.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The utility /usr/pluto/bin/UpdateMedia is what scans a directory and sets the attributes.  If you manually move or rename a file it will also pick up the attributes, realizing this is not a new file but rather one moved from another place, and will update the LinuxMCE_media Files table with the new location.  LinuxMCE needs to keep the LinuxmCE_media database in sync with the actual files on the drive since when you hit &#039;search&#039; on an Orbiter to find media by attribute (like by Composer), the only rapid way to find your media is through a database query.  UpdateMedia is run automatically every time a directory is modified to rescan the files in that directory.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Privacy_Settings&amp;diff=3578</id>
		<title>Privacy Settings</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Privacy_Settings&amp;diff=3578"/>
		<updated>2007-03-19T09:26:52Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Normally LinuxMCE allows everyone in the house to access everything.  There are 2 ways to restrict this.  One is by requiring certain users to enter their PIN code before they can use certain orbiters.  The other is by only allowing certain users to control the devices in certain rooms.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Let&#039;s say that you are the parent and you do not want your children to be able to control the television in the master bedroom.  You would uncheck the boxes for your children under the master bedroom to indicate they cannot control that room.  Then you would check the box for you under any Orbiters that your children had access to.  We&#039;ll assume the children have access to the Orbiter in your living room, but not the one in your bedroom.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In this case, you can control everything in the house from the Orbiter you keep in your bedroom without entering any pin codes.  But, when you go to use the Orbiter in the living room you will need to enter a PIN code so LinuxMCE knows it&#039;s you.  Your children could use the Orbiter in the living without entering a PIN code, but would not be able to control any of the devices, or more accurately execute any of the scenarios, in the master bedroom.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Plain_Text_DCE_Messages&amp;diff=3575</id>
		<title>Plain Text DCE Messages</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Plain_Text_DCE_Messages&amp;diff=3575"/>
		<updated>2007-03-19T09:25:17Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Normally DCE messages are exchanged in binary format.  If you are using C++, the DCE library will handle all the work for you.  The binary format was designed to allow maximum performance in the router, so it can pass through large numbers of messages.  Therefore the binary structure is optimized for use with C++.  If you want to make a device in another language, you can also connect to the DCE router and send messages as plain text.  Here&#039;s a quick tutorial explaining the concept:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1.  This sample shows how to write a device that intercepts messages from security sensors, and sends commands to lights.  In LinuxMCE admin, and go to Wizard devices security, and add a motion sensor.  Go to Wizard devices lights, and add a light.  Make note of the device ID for both by clicking the &amp;quot;ADV&amp;quot; button.  The device ID is shown above the description.  We will refer to those device IDs as [sensor] and [light].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.  In LinuxMCE admin, choose advanced, devices.  Choose a PC from the tree, such as &amp;quot;Core&amp;quot;.  Click &#039;Create Child Device&#039;, then &#039;Pick Device Template&#039;.  Choose the category &amp;quot;logic handler&amp;quot;.  Choose the category &#039;Logic Handlers&#039; and add the model &amp;quot;Generic #1&amp;quot;.  This category is reserved for devices that users create to add particular logic.  Make note of the device ID, we will refer to it as [logic].  Do a Quick Reload Router before proceeding so the router is aware of these new devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3.  If you click &amp;quot;view&amp;quot; next to the device template, you will see that &amp;quot;implements DCE&amp;quot; is checked.  This means a piece of software runs for these devices.  The software should register with the DCE router to receive commands and fire events.  Note the command line.  You can put a binary file in the directory /usr/pluto/bin with that name, and it will be run automatically on the computer in the &amp;quot;controlled via&amp;quot; pulldown when that computer boots up, and passed the command line argument -d [device id] -r [router ip].  Your program should use those parameters to connect to the router as that device.  We added a few generic device templates in the logic handler category so users who want to write some generic devices can do so without creating new templates.  We do not include any binary files for these generic templates, they&#039;re just placeholders.  So untill you add a binary file with that name you will see a warning at boot up that the file does not exist.  It is harmless.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4.  Open 4 consoles or SSH sessions.  In the first we will follow the DCE router log by running: tail -f /var/log/pluto/DCERouter.log&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5.  In the second and third, you will create 2 telnet sessions to connect to the DCERouter running on the core so you can see how the messages work.  Each device connects to the DCERouter twice.  One connection is used for incoming messages, normally receiving commands.  The second connection is used for outgoing messages, normally firing events.  Two socket connections are used because if a device receives an incoming message that will require a response, such as a command with output parameters, that device may want to be able to send messages and to get back responses before it responds to its message.  In both consoles run: telnet [ip of core] 3450&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;6.  Both telnet sessions should say they connected to the server.  In console number two type: COMMAND [logic]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;7.  Remember [logic] is the device ID from step number two.  Go back to console number one, and you should see DCE router logged: Device ID [logic]&#039;s Command Handler registered.  This means your device is ready to receive commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8.  In the fourth console session send your device a bogus command of type 999, ID 9999 from device ID 1234 to confirm it is working like this: /usr/pluto/bin/MessageSend [core ip] 1234 [logic] 999 9999.  It doesn&#039;t matter to the router that the &#039;From Device&#039;, 1234, doesn&#039;t exist.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;9.  In your second console window you should&#039;ve seen the plain text MESSAGE 63, meaning you are receiving an incoming message of 63 bytes, followed by the message as binary data.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;10. In the third console window you&#039;ll connect your event handler which you can use to send messages to the router.  Note that you can connect as many events handlers, that is outgoing sockets, as you want.  However you can only connect one command socket for incoming messages.  If you were to open another telnet session and connect again with the same device ID, the prior connection would automatically be dropped.  So in this third console window, enter EVENT [logic]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;11. The router should give you back an OK followed by your Device&#039;s IP address and Mac Address.  Tell the router you want messages in plain text, rather than binary by entering: PLAIN_TEXT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12. Go back to the fourth console and send yourself that same message again.  This time when you switch back to your command handler on the second console, you should see the message arrived in plain text, and the MESSAGE is now MESSAGET, for plain text.  The format of the message is identical to the command line arguments you would pass using the MessageSend utility.  Type /usr/pluto/bin/MessageSend --help for details.  Note messages can be embedded within messages, they will be separated with a single &amp;quot;&amp;amp;&amp;quot; parameter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;13. Now let&#039;s register a message interceptor telling the router you want to receive all events from any device within the category &amp;quot;security sensor&amp;quot;.  See [[Message Interceptors]].  Normally message interceptors are handled by the C++ DCE library automatically.  Most interceptors are registered by plug-ins, which share DCERouter&#039;s memory space, and therefore get copies of the actual message and can do processing on it.  Since you have created an external device without using DCE&#039;s C++ libraries, you will instead send the router a message indicating what type of messages you want to intercept.  You do this by sending a message of type 8 (MESSAGETYPE_REGISTER_INTERCEPTOR) to DCERouter.  DCERouter always responds to the virtual device ID -1000 (DEVICEID_DCEROUTER).  The &#039;from device&#039; in the message must be your device ID.  This is the device that will receive copies of messages that meet the criteria.  The ID of the message is unimportant--we will use zero.  The parameters of the message represent the criteria: PARM_FROM=1, PARM_TO=2, PARM_TEMPLATE=3, PARM_CATEGORY=4, PARM_MESSAGE_TYPE=5, PARM_MESSAGE_ID=6.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;14. So our message has two parameters, one for the type, since we only once messages of type 2 MESSAGETYPE_EVENT, and one for the category since we only want events from devices within category 84 (Security Device).  The Message, as we would send it with MessageSend (don&#039;t do this yet), would look like this: /usr/pluto/bin/MessageSend [core ip] [logic] -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;15. You actually could use MessageSend to send that message.  The router would still register the interceptor and forward matching messages to the device ID [logic].  But since you already have on outgoing event connection on console three, we can send the message there.  Note to the length of the message starting with the from device.  So if this device was 54625, the message would be 24 bytes long: 54625 -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16. In console 3 enter this, where 24 is the length of the message, which may vary if your device ID is not 5 digits: MESSAGET 24&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;17. Like always you hit enter to terminate the plain text command.  Now the router knows you are sending a message, and will wait to receive 24 bytes, and process the message when it does.  Enter: [logic] -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;18. You should see an &amp;quot;OK&amp;quot; and a log entry on console 1 showing the interceptor.  If you mess up, enter a bunch of characters so DCERouter finishes waiting for that message to come in.  Then hit enter.  You can always enter TIME and you should get back the time, or enter garbage, like xxxxxx and get back an ERROR.  Now let&#039;s test this.  We will fire an event from your sensor &amp;quot;sensor tripped&amp;quot; (id 9) with the tripped parameter (id 25) set to 1.  Events should be sent to the virtual device -1001 (DEVICEID_EVENTMANAGER).   Entering this in console 4: /usr/pluto/bin/MessageSend [core ip] [sensor] -1001 2 9 25 1 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;19. Note that if you already added some actions for this sensor on the Wizard, devices, security settings page, and if you set the house mode accordingly, such as &amp;quot;armed&amp;quot;, security plug-in will also intercept the message and treat this like a security breach.  It will pop up in pads on all the orbiters, start archiving video, and after 30 seconds attempt to notify you.  So leave your security system disarmed at the moment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20. Back in console 2, where you have your incoming command connection, you should have received a message of type 9 (MESSAGETYPE_MESSAGE_INTERCEPTED), and the first embedded message will be the event the security sensor fired, like this: 0 [logic] 9 0 &amp;quot;&amp;amp;&amp;quot; [sensor] -1001 2 9 25 &amp;quot;1&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;21. Now let&#039;s also tell DCE router you want to be notified whenever lights are turned on or off.  So we will add two more message interceptors, both with the type 1 (MESSAGETYPE_COMMAND), category 73 (Lighting Device), and with the ID 192 (command on), 193 (command off).  Send this in your event connection on console 3: MESSAGET 63 (ENTER) [logic] -1000 8 0 5 1 4 73 6 192 &amp;amp; [logic] -1000 8 0 5 1 4 73 6 193&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;22. Now send the lights on and off command.  You can do this with MessageSend, or with the SendCommand option in LinuxMCE admin, or create a lighting scenario that turns them on or off, or use of floor plans on the orbiter.  In all cases you will get the intercepted message the same.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you only want to be able to send commands to LinuxMCE devices, you can just make an events connection with the special device ID -1003 (DEVICEID_MESSAGESEND).  In other words send EVENT -1003 when you open your event connection.  This is a special device ID the DCERouter ignores allowing external utilities to connect and send messages without actually having a unique device ID that exists in the database.  When the MessageSend utility connects to the router to send a message, it uses this device ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Of course, if you only you want to write an external script that sends messages, you can just use the MessageSend utility.  However by registering a command handler to receive incoming messages, then you will be able to implement commands, and register message interceptors.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The messages are entirely freeform.  In other words, you can send a device message of a type and an ID that does not exist, and DCERouter will process it just fine forwarding it to do what ever destination device.  Message type 1 and 2 are reserved for commands and events, and when DCERouter sees messages of those types, it will look up the description of the command and event, which ultimately comes from the database, and log that.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you need to send or receive binary message parameters, they will come through uuencoded.  MessageSend can do uuencode/decode for you.  Type MessageSend --help for details.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If your device dies, and restarts and re-registers message interceptors, DCERouter will have multiple message interceptors for your device, and will therefore send your device multiple copies of intercepted messages.  DCERouter&#039;s list of message interceptors is reset on when DCERouter is reloaded.  You can tell DCERouter to purge any message interceptors for your device by sending it a message type 13 (MESSAGETYPE_PURGE_INTERCEPTORS), or by calling void Command_Impl::PurgeInterceptors();&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PING/PONG responses ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DCERouter sends &#039;PING&#039; string on device&#039;s event receiving socket. Device should response with PONG on same socket - otherwise DCERouter will close command socket...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DCERoter Reload behaviour ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When DCERouter reloads, it sends command &#039;reload&#039; of type 7 to all clients. They should take proper actions too. One way is to exit application and let Core restart them. Another is probably to reconnect after some time delay...&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Plain_Text_DCE_Messages&amp;diff=3574</id>
		<title>Plain Text DCE Messages</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Plain_Text_DCE_Messages&amp;diff=3574"/>
		<updated>2007-03-19T09:25:05Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;t&amp;lt;p&amp;gt;Normally DCE messages are exchanged in binary format.  If you are using C++, the DCE library will handle all the work for you.  The binary format was designed to allow maximum performance in the router, so it can pass through large numbers of messages.  Therefore the binary structure is optimized for use with C++.  If you want to make a device in another language, you can also connect to the DCE router and send messages as plain text.  Here&#039;s a quick tutorial explaining the concept:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1.  This sample shows how to write a device that intercepts messages from security sensors, and sends commands to lights.  In LinuxMCE admin, and go to Wizard devices security, and add a motion sensor.  Go to Wizard devices lights, and add a light.  Make note of the device ID for both by clicking the &amp;quot;ADV&amp;quot; button.  The device ID is shown above the description.  We will refer to those device IDs as [sensor] and [light].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2.  In LinuxMCE admin, choose advanced, devices.  Choose a PC from the tree, such as &amp;quot;Core&amp;quot;.  Click &#039;Create Child Device&#039;, then &#039;Pick Device Template&#039;.  Choose the category &amp;quot;logic handler&amp;quot;.  Choose the category &#039;Logic Handlers&#039; and add the model &amp;quot;Generic #1&amp;quot;.  This category is reserved for devices that users create to add particular logic.  Make note of the device ID, we will refer to it as [logic].  Do a Quick Reload Router before proceeding so the router is aware of these new devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3.  If you click &amp;quot;view&amp;quot; next to the device template, you will see that &amp;quot;implements DCE&amp;quot; is checked.  This means a piece of software runs for these devices.  The software should register with the DCE router to receive commands and fire events.  Note the command line.  You can put a binary file in the directory /usr/pluto/bin with that name, and it will be run automatically on the computer in the &amp;quot;controlled via&amp;quot; pulldown when that computer boots up, and passed the command line argument -d [device id] -r [router ip].  Your program should use those parameters to connect to the router as that device.  We added a few generic device templates in the logic handler category so users who want to write some generic devices can do so without creating new templates.  We do not include any binary files for these generic templates, they&#039;re just placeholders.  So untill you add a binary file with that name you will see a warning at boot up that the file does not exist.  It is harmless.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4.  Open 4 consoles or SSH sessions.  In the first we will follow the DCE router log by running: tail -f /var/log/pluto/DCERouter.log&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5.  In the second and third, you will create 2 telnet sessions to connect to the DCERouter running on the core so you can see how the messages work.  Each device connects to the DCERouter twice.  One connection is used for incoming messages, normally receiving commands.  The second connection is used for outgoing messages, normally firing events.  Two socket connections are used because if a device receives an incoming message that will require a response, such as a command with output parameters, that device may want to be able to send messages and to get back responses before it responds to its message.  In both consoles run: telnet [ip of core] 3450&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;6.  Both telnet sessions should say they connected to the server.  In console number two type: COMMAND [logic]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;7.  Remember [logic] is the device ID from step number two.  Go back to console number one, and you should see DCE router logged: Device ID [logic]&#039;s Command Handler registered.  This means your device is ready to receive commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8.  In the fourth console session send your device a bogus command of type 999, ID 9999 from device ID 1234 to confirm it is working like this: /usr/pluto/bin/MessageSend [core ip] 1234 [logic] 999 9999.  It doesn&#039;t matter to the router that the &#039;From Device&#039;, 1234, doesn&#039;t exist.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;9.  In your second console window you should&#039;ve seen the plain text MESSAGE 63, meaning you are receiving an incoming message of 63 bytes, followed by the message as binary data.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;10. In the third console window you&#039;ll connect your event handler which you can use to send messages to the router.  Note that you can connect as many events handlers, that is outgoing sockets, as you want.  However you can only connect one command socket for incoming messages.  If you were to open another telnet session and connect again with the same device ID, the prior connection would automatically be dropped.  So in this third console window, enter EVENT [logic]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;11. The router should give you back an OK followed by your Device&#039;s IP address and Mac Address.  Tell the router you want messages in plain text, rather than binary by entering: PLAIN_TEXT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12. Go back to the fourth console and send yourself that same message again.  This time when you switch back to your command handler on the second console, you should see the message arrived in plain text, and the MESSAGE is now MESSAGET, for plain text.  The format of the message is identical to the command line arguments you would pass using the MessageSend utility.  Type /usr/pluto/bin/MessageSend --help for details.  Note messages can be embedded within messages, they will be separated with a single &amp;quot;&amp;amp;&amp;quot; parameter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;13. Now let&#039;s register a message interceptor telling the router you want to receive all events from any device within the category &amp;quot;security sensor&amp;quot;.  See [[Message Interceptors]].  Normally message interceptors are handled by the C++ DCE library automatically.  Most interceptors are registered by plug-ins, which share DCERouter&#039;s memory space, and therefore get copies of the actual message and can do processing on it.  Since you have created an external device without using DCE&#039;s C++ libraries, you will instead send the router a message indicating what type of messages you want to intercept.  You do this by sending a message of type 8 (MESSAGETYPE_REGISTER_INTERCEPTOR) to DCERouter.  DCERouter always responds to the virtual device ID -1000 (DEVICEID_DCEROUTER).  The &#039;from device&#039; in the message must be your device ID.  This is the device that will receive copies of messages that meet the criteria.  The ID of the message is unimportant--we will use zero.  The parameters of the message represent the criteria: PARM_FROM=1, PARM_TO=2, PARM_TEMPLATE=3, PARM_CATEGORY=4, PARM_MESSAGE_TYPE=5, PARM_MESSAGE_ID=6.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;14. So our message has two parameters, one for the type, since we only once messages of type 2 MESSAGETYPE_EVENT, and one for the category since we only want events from devices within category 84 (Security Device).  The Message, as we would send it with MessageSend (don&#039;t do this yet), would look like this: /usr/pluto/bin/MessageSend [core ip] [logic] -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;15. You actually could use MessageSend to send that message.  The router would still register the interceptor and forward matching messages to the device ID [logic].  But since you already have on outgoing event connection on console three, we can send the message there.  Note to the length of the message starting with the from device.  So if this device was 54625, the message would be 24 bytes long: 54625 -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16. In console 3 enter this, where 24 is the length of the message, which may vary if your device ID is not 5 digits: MESSAGET 24&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;17. Like always you hit enter to terminate the plain text command.  Now the router knows you are sending a message, and will wait to receive 24 bytes, and process the message when it does.  Enter: [logic] -1000 8 0 5 2 4 84&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;18. You should see an &amp;quot;OK&amp;quot; and a log entry on console 1 showing the interceptor.  If you mess up, enter a bunch of characters so DCERouter finishes waiting for that message to come in.  Then hit enter.  You can always enter TIME and you should get back the time, or enter garbage, like xxxxxx and get back an ERROR.  Now let&#039;s test this.  We will fire an event from your sensor &amp;quot;sensor tripped&amp;quot; (id 9) with the tripped parameter (id 25) set to 1.  Events should be sent to the virtual device -1001 (DEVICEID_EVENTMANAGER).   Entering this in console 4: /usr/pluto/bin/MessageSend [core ip] [sensor] -1001 2 9 25 1 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;19. Note that if you already added some actions for this sensor on the Wizard, devices, security settings page, and if you set the house mode accordingly, such as &amp;quot;armed&amp;quot;, security plug-in will also intercept the message and treat this like a security breach.  It will pop up in pads on all the orbiters, start archiving video, and after 30 seconds attempt to notify you.  So leave your security system disarmed at the moment.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20. Back in console 2, where you have your incoming command connection, you should have received a message of type 9 (MESSAGETYPE_MESSAGE_INTERCEPTED), and the first embedded message will be the event the security sensor fired, like this: 0 [logic] 9 0 &amp;quot;&amp;amp;&amp;quot; [sensor] -1001 2 9 25 &amp;quot;1&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;21. Now let&#039;s also tell DCE router you want to be notified whenever lights are turned on or off.  So we will add two more message interceptors, both with the type 1 (MESSAGETYPE_COMMAND), category 73 (Lighting Device), and with the ID 192 (command on), 193 (command off).  Send this in your event connection on console 3: MESSAGET 63 (ENTER) [logic] -1000 8 0 5 1 4 73 6 192 &amp;amp; [logic] -1000 8 0 5 1 4 73 6 193&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;22. Now send the lights on and off command.  You can do this with MessageSend, or with the SendCommand option in LinuxMCE admin, or create a lighting scenario that turns them on or off, or use of floor plans on the orbiter.  In all cases you will get the intercepted message the same.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you only want to be able to send commands to LinuxMCE devices, you can just make an events connection with the special device ID -1003 (DEVICEID_MESSAGESEND).  In other words send EVENT -1003 when you open your event connection.  This is a special device ID the DCERouter ignores allowing external utilities to connect and send messages without actually having a unique device ID that exists in the database.  When the MessageSend utility connects to the router to send a message, it uses this device ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Of course, if you only you want to write an external script that sends messages, you can just use the MessageSend utility.  However by registering a command handler to receive incoming messages, then you will be able to implement commands, and register message interceptors.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The messages are entirely freeform.  In other words, you can send a device message of a type and an ID that does not exist, and DCERouter will process it just fine forwarding it to do what ever destination device.  Message type 1 and 2 are reserved for commands and events, and when DCERouter sees messages of those types, it will look up the description of the command and event, which ultimately comes from the database, and log that.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you need to send or receive binary message parameters, they will come through uuencoded.  MessageSend can do uuencode/decode for you.  Type MessageSend --help for details.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If your device dies, and restarts and re-registers message interceptors, DCERouter will have multiple message interceptors for your device, and will therefore send your device multiple copies of intercepted messages.  DCERouter&#039;s list of message interceptors is reset on when DCERouter is reloaded.  You can tell DCERouter to purge any message interceptors for your device by sending it a message type 13 (MESSAGETYPE_PURGE_INTERCEPTORS), or by calling void Command_Impl::PurgeInterceptors();&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PING/PONG responses ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DCERouter sends &#039;PING&#039; string on device&#039;s event receiving socket. Device should response with PONG on same socket - otherwise DCERouter will close command socket...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DCERoter Reload behaviour ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When DCERouter reloads, it sends command &#039;reload&#039; of type 7 to all clients. They should take proper actions too. One way is to exit application and let Core restart them. Another is probably to reconnect after some time delay...&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Phone_Extensions&amp;diff=3573</id>
		<title>Phone Extensions</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Phone_Extensions&amp;diff=3573"/>
		<updated>2007-03-19T09:23:26Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Most phone extensions, or handsets, are plug-and-play.  Just plug them into any jack and LinuxMCE will start using them.  If you want to use a regular old-fashioned style phone, you will need an adapter that plugs into the network jack (RJ45) and gives you a regular analog POTS connection (RJ11) that you can plug your phone into.  These adapters are also plug-and-play.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can change the settings for your phone extensions here, or add new phones that are not plug-and-play.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3571</id>
		<title>Overview of the software modules</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3571"/>
		<updated>2007-03-19T09:21:37Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Programmer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[[LinuxMCE Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&#039;s a plug-in which gets loaded into DCERouter&#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[LinuxMCE_main database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as the type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Because LinuxMCE is so database intensive and absolutely everything is stored in the LinuxMCE-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to LinuxMCE.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then check-in those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the database.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LinuxMCE also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to LinuxMCE.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;Kick-Start&amp;quot; project is a collection of scripts and utilities to install LinuxMCE on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;There are also a collection of [[LinuxMCE Scripts]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LinuxMCE specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  LinuxMCE is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to LinuxMCE.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Orbiter_User%27s_manual&amp;diff=3569</id>
		<title>Orbiter User&#039;s manual</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Orbiter_User%27s_manual&amp;diff=3569"/>
		<updated>2007-03-19T09:20:16Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The Orbiter is quite simple to use, and all the screens are quite straightforward.  Use the LinuxMCE Admin Website to configure your LinuxMCE system, including choosing the options on your Orbiter, such as lighting scenes, climate scenarios, and define what a/v equipment you want it to control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This User&#039;s Manual explains the basic operation of the Orbiter, and how to control LinuxMCE using the standard user interface that LinuxMCE supplies for the Orbiters.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Screen_Saver_Animation_thread&amp;diff=3568</id>
		<title>Screen Saver Animation thread</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Screen_Saver_Animation_thread&amp;diff=3568"/>
		<updated>2007-03-19T09:19:46Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Photo Screen Saver thread match the AVWizard flow with that differences:&lt;br /&gt;
- internal events are not treated, excluding the Quit event, which will clean quits the thread, the rest of events will be excluded&lt;br /&gt;
- there is a singleton class: Gallery which manage at the topest level the all Photo Screen Saver logic.&lt;br /&gt;
&lt;br /&gt;
Gallery contains the SDLFrontEnd.cpp as internal class which includes support for SDL and use OpenGL for initialize.&lt;br /&gt;
&lt;br /&gt;
The Geometry references are related to the [[STEngine]] implementation and they are restricted only to the Mesh classes and to the OpenGLGraphic.&lt;br /&gt;
&lt;br /&gt;
[[PSS Gallery class]]&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Network_Settings&amp;diff=3565</id>
		<title>Network Settings</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Network_Settings&amp;diff=3565"/>
		<updated>2007-03-19T09:18:12Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The settings on this page are used to configure the network in your Core.  The recommended configuration for a LinuxMCE Core is to have 2 network cards, and plug 1 of them into the external internet (the cable or DSL modem), and the other into the internal switch that the other computers and devices in the house connect to.  This allows the LinuxMCE Core to act as a firewall to protect the devices in the house, and also to manage your network bandwidth to ensure that phone calls, video calls and other time-sensitive traffic takes priority over web pages and file downloads.  In such a configuration you would enable DHCP on the internal network, and the external network would obtain an IP address either statically or through the DHCP server in your DSL/Cable modem, depending on how your internet service provider configured it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Every device connected to the local area network in your home needs a unique IP address.  The &amp;quot;DHCP Server&amp;quot; is the device that assigns every device it&#039;s own IP.  If you have multiple computers in your home, you probably have a router, dsl or cable modem that is your DHCP Server.  Normally you should only have 1 DHCP server on the network.  If you have more than 1, they can &#039;fight&#039; over the assignment of IP addresses.  If you have dual network cards in the core this is not a problem since the &#039;external&#039; internet connection provided by your DSL or cable modem is physically a separate network from the internal network in your home.  In that case it is okay to have LinuxMCE act as the DHCP server for the internal network while the Cable/DSL modem is the DHCP server for the external network.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to have diskless media directors, where they do not boot LinuxMCE from their local hard drive, but rather use the LinuxMCE Core, the Core needs to be the DHCP server for those media directors.  Also, for the Core to be able to automatically configure your devices, such as telephones, the Core needs to be their DHCP server.  The easiest solution is, therefore, to make the Core the sole DHCP server in your house.  It will then assign IP addresses for every computer in your home, whether it&#039;s running LinuxMCE&#039;s software or not.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you do not have dual network cards, or want to use another DHCP server, you can disable DHCP on the LinuxMCE Core altogether.  Or, you can tell the Core to &amp;quot;give IP addresses to LinuxMCE devices only&amp;quot;.  This means the LinuxMCE Core will assign IP addresses for LinuxMCE devices, but ignore everything else in your home.  If you do this, LinuxMCE can work with your other DHCP servers if they likewise do not try to assign IP addresses to your LinuxMCE devices.  But this means that plug-and-play will not work since LinuxMCE will only give IP addresses to devices it already knows--not new devices.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[[Why dual network cards?]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[[How to setup ADSL access?]]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Network_Attached_Storage&amp;diff=3564</id>
		<title>Network Attached Storage</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Network_Attached_Storage&amp;diff=3564"/>
		<updated>2007-03-19T09:17:43Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Include here a list of NAS that have been tested with LinuxMCE.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;300&amp;quot; style=&amp;quot;text-align:center; background:#efefef; width:75%; border:1px solid black&amp;quot;&lt;br /&gt;
|+ NAS&lt;br /&gt;
|-&lt;br /&gt;
| [[Buffalo Terastation]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding SMB Client to LinuxMCE==&lt;br /&gt;
As of this writing, the current version of LinuxMCE needs the smbfs application before the core will be able to read and write to any Samba or SMB server.  To do this, ssh into your LinuxMCE core as root and type the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install smbfs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After pressing enter, the core will download and install the smbfs application.&lt;br /&gt;
&lt;br /&gt;
==LinuxMCE Firewall Configuration==&lt;br /&gt;
As of this writing, the current version of LinuxMCE&#039;s firewall blocks any SMB mounts.  &lt;br /&gt;
To fix this????&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
# I can see the files on the media directors, orbiters, and (while SSH&#039;d) on /mnt/NAS_# and in the subdirectories of each user. But the files do not play. None of the music or video files play. All files stored on the core play fine.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* (This solution comes from bliss01 on the forum.  Needs more detailed instructions please...)&lt;br /&gt;
Make sure you&#039;ve mounted the device as the same name and dir and on the Core.&lt;br /&gt;
Edit the /etc/exports file on the core, and the /etc/fstab on the MDs to fix this. But also to make the changes stay after reboot, edit the templates in /usr/pluto/templates/&lt;br /&gt;
&lt;br /&gt;
Also make sure the SMB drive is on the same network ie the 192.168.80.x as the core has a firewall which stops smb mounts.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Motion&amp;diff=3563</id>
		<title>Motion</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Motion&amp;diff=3563"/>
		<updated>2007-03-19T09:16:56Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Motion is an open source surveillance camera recording software.  Its homepage is found at [[http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome here]] and is very well written and documented.  Its main feature is that it detects motion (hence the name!) and can start recording based on motion criteria.&lt;br /&gt;
&lt;br /&gt;
==Motion in LinuxMCE==&lt;br /&gt;
LinuxMCE has a wrapper that connects to Motion.  You add this wrapper as an &amp;quot;Interface&amp;quot; on the Interface page.  It is called, &amp;quot;Motion Wrapper&amp;quot;.  You must have this interface prior to setting up your cameras.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling (contributing) to Motion Wrapper in LinuxMCE==&lt;br /&gt;
On 0.41 version of LinuxMCE I wanted to incorporate few changes into Motion wrapper. I decided to compile it and described procedure [[How_to_compile_Motion_Wrapper|here]].&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Misterhouse&amp;diff=3562</id>
		<title>Misterhouse</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Misterhouse&amp;diff=3562"/>
		<updated>2007-03-19T09:16:26Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.misterhouse.com Misterhouse] is a great integrated Home automation program and much more.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a dirty code snippet for LinuxMCE&#039;s listener script under Misterhouse. Be careful since it intercepts all messages and that could become quite greedy... &lt;br /&gt;
&lt;br /&gt;
Before using this script you have to add listener as device under LinuxMCE as explained in LinuxMCE&#039;s docs...&lt;br /&gt;
You have to follow first few steps from LinuxMCE&#039;s text message intercepting tutorial (create logic handler device) and then add this script to your Misterhouse setup :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Category=LinuxMCE&lt;br /&gt;
#&lt;br /&gt;
#@ Connection with LinuxMCE DCE Router via TCP port localhost:3450 (mh.ini -&amp;gt; pluto_DCE_router). &lt;br /&gt;
#&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
############################################################################## &lt;br /&gt;
$pluto_event_receiver = new  Socket_Item(undef, undef, &#039;193.77.90.224:3450&#039;,&#039;event_receiver&#039;,&#039;tcp&#039;,&#039;record&#039;);&lt;br /&gt;
&lt;br /&gt;
$pluto_command_sender = new  Socket_Item(undef, undef, &#039;193.77.90.224:3450&#039;,&#039;command_sender&#039;,&#039;tcp&#039;,&#039;record&#039;);&lt;br /&gt;
&lt;br /&gt;
if ($Startup) {&lt;br /&gt;
	start $pluto_event_receiver;&lt;br /&gt;
        set $pluto_event_receiver &amp;quot;COMMAND 6778&amp;quot;;&lt;br /&gt;
        	&lt;br /&gt;
	start $pluto_command_sender;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;EVENT 6778&amp;quot;;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;PLAIN_TEXT&amp;quot;;&lt;br /&gt;
# purge other interceptors on same device ID&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;MESSAGET 13&amp;quot;;&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;6778 -1000 13&amp;quot;;&lt;br /&gt;
	send_command_to_pluto(&amp;quot;6778 -1000 13&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
# intercepts all messages, I guess it&#039;s better to be selective here !!!!	&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;MESSAGET 22&amp;quot;;&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;6778 -1000 8 0 0 0 0 0&amp;quot;;&lt;br /&gt;
	send_command_to_pluto(&amp;quot;6778 -1000 8 0 0 0 0 0&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
     &lt;br /&gt;
sub send_command_to_pluto {&lt;br /&gt;
 my ($message) = @_;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;MESSAGET &amp;quot; . length ($message);&lt;br /&gt;
	set $pluto_command_sender $message;&lt;br /&gt;
        print_log &amp;quot;Sending Command to Pluto DCE : $message\n&amp;quot;;&lt;br /&gt;
        print     &amp;quot;Sending Command to Pluto DCE : $message\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (my $msg = said $pluto_event_receiver) {&lt;br /&gt;
        print_log &amp;quot;Pluto Event received: $msg\n&amp;quot;;&lt;br /&gt;
        print      &amp;quot;Pluto Event received: $msg\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Misterhouse&amp;diff=3561</id>
		<title>Misterhouse</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Misterhouse&amp;diff=3561"/>
		<updated>2007-03-19T09:16:06Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.misterhouse.com Misterhouse] is a great integrated Home automation program and much more.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a dirty code snippet for LinuxMCE&#039;s listener script under Misterhouse. Be careful since it intercepts all messages and that could become quite greedy... &lt;br /&gt;
&lt;br /&gt;
Before using this script you have to add listener as device under LinuxMCE as explained in LinuxMCE&#039;s docs...&lt;br /&gt;
You have to follow first few steps from LinuxMCE&#039;s text message intercepting tutorial (create logic handler device) and then add this script to your Misterhouse setup :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Category=Pluto&lt;br /&gt;
#&lt;br /&gt;
#@ Connection with LinuxMCE DCE Router via TCP port localhost:3450 (mh.ini -&amp;gt; pluto_DCE_router). &lt;br /&gt;
#&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
############################################################################## &lt;br /&gt;
$pluto_event_receiver = new  Socket_Item(undef, undef, &#039;193.77.90.224:3450&#039;,&#039;event_receiver&#039;,&#039;tcp&#039;,&#039;record&#039;);&lt;br /&gt;
&lt;br /&gt;
$pluto_command_sender = new  Socket_Item(undef, undef, &#039;193.77.90.224:3450&#039;,&#039;command_sender&#039;,&#039;tcp&#039;,&#039;record&#039;);&lt;br /&gt;
&lt;br /&gt;
if ($Startup) {&lt;br /&gt;
	start $pluto_event_receiver;&lt;br /&gt;
        set $pluto_event_receiver &amp;quot;COMMAND 6778&amp;quot;;&lt;br /&gt;
        	&lt;br /&gt;
	start $pluto_command_sender;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;EVENT 6778&amp;quot;;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;PLAIN_TEXT&amp;quot;;&lt;br /&gt;
# purge other interceptors on same device ID&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;MESSAGET 13&amp;quot;;&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;6778 -1000 13&amp;quot;;&lt;br /&gt;
	send_command_to_pluto(&amp;quot;6778 -1000 13&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
# intercepts all messages, I guess it&#039;s better to be selective here !!!!	&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;MESSAGET 22&amp;quot;;&lt;br /&gt;
#	set $pluto_command_sender &amp;quot;6778 -1000 8 0 0 0 0 0&amp;quot;;&lt;br /&gt;
	send_command_to_pluto(&amp;quot;6778 -1000 8 0 0 0 0 0&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
     &lt;br /&gt;
sub send_command_to_pluto {&lt;br /&gt;
 my ($message) = @_;&lt;br /&gt;
	set $pluto_command_sender &amp;quot;MESSAGET &amp;quot; . length ($message);&lt;br /&gt;
	set $pluto_command_sender $message;&lt;br /&gt;
        print_log &amp;quot;Sending Command to Pluto DCE : $message\n&amp;quot;;&lt;br /&gt;
        print     &amp;quot;Sending Command to Pluto DCE : $message\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (my $msg = said $pluto_event_receiver) {&lt;br /&gt;
        print_log &amp;quot;Pluto Event received: $msg\n&amp;quot;;&lt;br /&gt;
        print      &amp;quot;Pluto Event received: $msg\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Media_Scenarios&amp;diff=3559</id>
		<title>Media Scenarios</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Media_Scenarios&amp;diff=3559"/>
		<updated>2007-03-19T09:14:17Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;All the other scenarios are grouped by room.  Media Scenarios, however, are grouped by the entertainment areas.  Normally they are the same thing unless you chose to manually configure entertainment areas on the rooms page.  [[Rooms]] for an explanation of Rooms and Entertainment areas.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For each entertainment area you can check off one of the quick shortcuts: TV, play lists, music, movies, videos, pictures, documents.  That will create a button on the orbiter for that entertainment area.  The TV button will turn on the TV in that entertainment area, and automatically tune to the current user&#039;s most favorite show.  The other shortcuts will take you to a &amp;quot;browse&amp;quot; screen that shows you all the media of the given type (play lists, music, etc.), and let you pick the one you want.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To create a media scenario (or button) to do something else, like listen to the Radio, or maybe control a DVD player, go to the bottom of the page and type in the description you want to appear on the button, and choose the entertainment area it should appear in.  The page will refresh, and then you will have a pull-down that lists all the media devices in that entertainment area.  If you have already added the device, but it&#039;s not showing up in the list, return to the page where you added the device, and be sure you specified that the device can be used in this entertainment area.&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you choose the device, you will see a list of all the types of media that device can play.  Choose the type of media you want to come on when you touch the button (DVD, Radio, etc.).  If you don&#039;t see the specific type, just choose &#039;Other&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly choose the Remote Control you want to use to control the device.  There are several standard remote controls LinuxMCE provides, plus others contributed by third parties.  You can also use a Pronto file, which is a very widely supported universal remote control.  There are several tools available to create remote screens in Pronto format, and web sites devoted to them, like www.remotecentral.com.  You can also mix.  For example, LinuxMCE&#039;s remotes tend to be very simple and easy because they are generic for many devices.  You can use the LinuxMCE remote for the basics, and also a Pronto remote that has all the less commonly used, advanced features.  If you choose both a LinuxMCE remote and a Pronto, then when you touch the media, it will first show you the LinuxMCE remote, and there will be a &#039;Pronto&#039; button to take you to the Pronto remote.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pronto is a trademark of Phillips.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Maps&amp;diff=3558</id>
		<title>Maps</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Maps&amp;diff=3558"/>
		<updated>2007-03-19T09:13:54Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The map lets you view and control all those devices in the whole house at once.  The maps are useful on larger orbiters with touch screens, like the 8.4&#039; standard orbiter.  On small screens like mobile phones and PDA&#039;s, the maps are not very usable because the screen is not big enough.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The lighting map shows all your lights, blinds, drapes, and similar devices.  The media map shows all your media devices: media directors, TV&#039;s, DVD players, etc.  It also shows whole-house audio zones, and tells you what media is playing on each device.  The climate map has devices like thermostats, thermometers, weather stations, pool &amp;amp; jacuzzi controls, sprinklers, and so on.  The security map lists all the security related devices: motion detectors, door &amp;amp; window sensors, smoke detectors, air quality alarms, surveillance cameras and so on.  Lastly the telecommunications map lists all the telephones and video phones and shows you what phone calls are happening in the house.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To control a device on the lighting and climate maps, just touch the device.  You will see buttons for all the commands you can send to that device.  You can select multiple devices and then touch the command to send that command to all the devices you selected.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you select a device, and then select it again, the orbiter will select any other devices within that device&#039;s groups.  You create device groups using the **LinuxMCE Admin** web site.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Let&#039;s assume that you have a lot of outdoor lights that you regularly want to control from the map.  Selecting all the lights one at a time on the map would be rather cumbersome.  So you can create a device group called &#039;Outdoor lighting&#039;.  Then the first time you touch a light within the outdoor lighting group just that 1 light will be selected.  But if you touch that light again, all the other lights in the &#039;Outdoor lighting&#039; group will also be selected and you can send them all a command at once.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The media map works a little differently.  On the right of the screen you will see all the media streams, or currently playing media in the whole house.  Each stream is color coded, and the various media devices in the house will be colored to indicate what media they are playing.  If the media device is black, that means it is not playing any media.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you want to change what devices are playing a particular media stream, just select all the devices on the map and then select the stream.  The media will then &#039;move&#039; to those devices.  If you want it to continue playing on the devices it is currently playing on, in other words if you want to add more devices, be sure to select the devices the media is currently playing on, as well as the new devices, before selecting the media stream.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The telecommunications map is similar to the media map.  On the right side are all the current phone calls, and the telephone devices in the map are color-coded to indicate what phone calls are active on what devices.  To move or conference, use the map just like you did for media devices.  Chose all the devices you want to be a part of a phone call, then touch the phone call.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_things_happen_at_sunrise/sunset&amp;diff=3557</id>
		<title>Make things happen at sunrise/sunset</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_things_happen_at_sunrise/sunset&amp;diff=3557"/>
		<updated>2007-03-19T09:13:32Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to set it up&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Needs to know your longitude and latitude in order to fire the sunrise and sunset events.  In LinuxMCE admin, choose a wizard, basic info, installation.  Our database has the longitude and latitude information for approximately 30,000 cities worldwide.  Just choose your city from the list.  In the unlikely event that you are not near any of those cities in the list, then you&#039;ll need to provide your longitude and latitude yourself.  Note that any changes you make on that page will take effect after the next reboot or quick reload router.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; At each sunrise and sunset LinuxMCE will fire a sunrise/sunset event.  In LinuxMCE admin, choose a wizard, events, respond to events.  Type or logical description for your event, such as &amp;quot;turn on lights at sunrise&amp;quot;.  Then choose sunrise or sunset from the list, click add, and then specify the command you want to be executed.  Note that you can create as many event handlers for each type of event is you want.  So you can have &amp;quot;turn on lights at sunrise&amp;quot; and &amp;quot;start watering lawn at sunrise&amp;quot; which both respond to the same event.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to use it&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;Programmer&#039;s guide&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The logic is in Event_Plugin.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_things_happen_at_set_times_or_intervals&amp;diff=3555</id>
		<title>Make things happen at set times or intervals</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_things_happen_at_set_times_or_intervals&amp;diff=3555"/>
		<updated>2007-03-19T09:13:01Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to set it up&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; In LinuxMCE admin, choose wizard, events, timed events.  Give your event handler a description, like &amp;quot;7 a.m. wake-up call&amp;quot;, and then choose the type of timed event that most closely matches what you want, and click add.  Then add all the commands that you want to occur at that time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;  The event Wizard gives you very basic event control, but without requiring any programming or technical skills.  Click the advanced link if you want to program a sophisticated event handler using the embedded ruby language interpreter.  The snippet of code will be executed whenever the event is triggered.  This way you can create a very sophisticated event,such as &amp;quot;start watering the lawn at 7 a.m. only if there has been no rain in the last 24 hours and the weather report indicates a clear day&amp;quot;.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;How to use it&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;N/A&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;h1&amp;gt;Programmer&#039;s guide&amp;lt;/h1&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3554</id>
		<title>Make a DCE Device in 5 minutes</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Make_a_DCE_Device_in_5_minutes&amp;diff=3554"/>
		<updated>2007-03-19T09:11:38Z</updated>

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

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In addition to LinuxMCE&#039;s own software, it uses lots of other software, like Xine, Asterisk, MythTV, etc. Each has its own set of requirements, like Apache, PHP, MySql. In the end, there are actually hundreds of packages or software programs LinuxMCE needs to run. Because it would be too cumbersome to install all of them by hand, LinuxMCE developed a database-driven, platform-independent installation system. The database back-end tracks all of the software and what other software it needs to work. For example, the database knows that if you want to run our Bluetooth Dongle on Linux, you need Bluez, which requires x and y, which requires z, etc., and on Windows it requires other libraries.&lt;br /&gt;
&lt;br /&gt;
The process is fully automated under Linux (Ubuntu), which is LinuxMCE&#039;s native environment. We will also have a fully automated version for Windows soon. If you want to add support for another platform, particularly another Linux distro, this should be a fairly easy task because 90% of the work is handled by the platform-independent back-end hosted on LinuxMCE.com. In fact, the Ubuntu-specific installation script is only about 100 lines in a bash file. If you know some scripting, it will probably be easier to write a new bash file for your distro than to install all the packages by hand. &lt;br /&gt;
&lt;br /&gt;
If you want to write an installation script, an easy way to start is by checking out the source code from our svn or cvs server. http://index.php?section=document&amp;amp;amp;docID=101.  Look in the directory ConfirmDependencies_Script. The Ubuntu script is ConfirmDependencies_Ubuntu.sh.&lt;br /&gt;
&lt;br /&gt;
Then there is the issue of the package names. Most distros use package names similar to Ubuntu, but there are not always the same. You can look at this file: http://LinuxMCE.com/download/stdpackages.txt to see all the package names in Ubuntu. It&#039;s just a tab delimited file, you can use it in a spreadsheet or editor. If you add a column next to the Debian name with the names of the corresponding packages in your distro, we&#039;ll have someone here put those names in the database. If there are more packages, or less, just make a note, and we&#039;ll adjust the master database accordingly. Once we upload it, then the installation script for your distro will be available in the New Installation Wizard.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll see from our ConfirmDependencies_Script that the wrapper passes in the package name, the source, the repository name, the version, etc. It also passes in the type: get from package, download as a tar, get from svn, etc. Only the &#039;get from package&#039; (which is ConfirmDependencies_Ubuntu.sh) will be specific to Ubuntu. Other Linux distros should be able to use the same &amp;quot;get from tar&amp;quot;, &amp;quot;get from svn&amp;quot;, etc. scripts that we wrote for Debian. We provided separate scripts to download from http/ftp, etc. to make this easier. If you send us your revised package list, and a &amp;quot;get from package&amp;quot; version of your script, we will put on our site.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Infrared_Codes&amp;diff=3550</id>
		<title>Infrared Codes</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Infrared_Codes&amp;diff=3550"/>
		<updated>2007-03-19T09:08:00Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;LinuxMCE is building a very organized database of infrared codes.  &amp;lt;b&amp;gt;Please follow our structure&amp;lt;/b&amp;gt; since it means that all the existing menus and remotes will work with your equipment and will prevent everyone from needing to create their own screens and learn the same codes repeatedly.  A/V devices and infrared codes you add are automatically merged into a master database unless you check the box on the A/V page &#039;Don&#039;t share my infrared codes with other users&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;First, add the commands that your device will support.  Add the most common sets of commands for this type of device by checking the appropriate &amp;quot;Command Groups&amp;quot;.  Then choose &amp;quot;Add/Remove Commands&amp;quot; to add the less common commands.  Please &amp;lt;b&amp;gt;do not add new commands&amp;lt;/b&amp;gt; unless you are sure the command does not already exist.  Our stock remote controls layouts send the standard commands.  For example, when you hit the volume &amp;quot;UP&amp;quot; button on a phone or an Orbiter your device will receive the &amp;quot;Vol Up&amp;quot; command (or infrared code).  If instead of using the stock &amp;quot;Vol Up&amp;quot; command you add your own command, like &amp;quot;Louder&amp;quot; or &amp;quot;Volume +&amp;quot;, then your device will not work with any of the &amp;quot;stock&amp;quot; remotes and you will need to designer your own remote controls.  Plus other users won&#039;t be able to use the codes you learn.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If a commands intended use is not clear, there with be a [?] tip that will explain it.  For example, the single command &amp;quot;Skip Fwd - Channel/Track Greater&amp;quot; is used for changing channels on a TV/VCR/Cable Box, and tracks on a CD, chapters on a DVD, and station skip on a radio.  This way a simple, generic remote with nothing but skip fwd/back and play/pause will still work logically with virtually any type of a/v device.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Also if you know the infrared group, which is based on the device codes used in all One-For-All, Radio Shack and other UEI remotes as explained at http://www.hifi-remote.com/ofa/codes.shtml, please choose it from the list.  Although manufacturers build hundreds of different models, they generally all use the same codes.  If you select this group, then only 1 user needs to learn the codes for a Sony TV, for example, and all other users with Sony TV&#039;s will be able to use the same codes without re-learning them.  If you don&#039;t know the group, it&#039;s ok, but that means the codes will be filed/stored with your specific model--rather than the group--and then only other users with that exact same model will be able to use the codes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For each command, the &amp;quot;Master Code&amp;quot; in LinuxMCE&#039;s database is highlighted blue.  If there is a &amp;quot;Master Code&amp;quot; this is your best bet.  If not, or if it doesn&#039;t work, try testing the codes other users have provided--they are in white.  If they don&#039;t work, click &amp;quot;New Code&amp;quot; to learn or type in your own code, which will be in yellow.  Please delete your code if it doesn&#039;t work so other users don&#039;t see it.  Select the code that works best for your device.  Once many users are successfully using a code it is automatically moved into the &amp;quot;Master Code&amp;quot; in blue.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[[Learning/typing my own code]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Refer to the LinuxMCE [[AV Properties]] and [[IR/GSD codes syncronization]].&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=I_can%27t_access_my_media_files_over_the_network&amp;diff=3549</id>
		<title>I can&#039;t access my media files over the network</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=I_can%27t_access_my_media_files_over_the_network&amp;diff=3549"/>
		<updated>2007-03-19T09:07:12Z</updated>

		<summary type="html">&lt;p&gt;Jerry finn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By default the Core only listens for network connections on the internal network.  We recommend using dual network cards in the Core so it can act as a firewall and separate the internal network from the outside one.  However if you have only 1 network card, or if you want to access the network from the external network, then in LinuxMCEAdmin, choose Advanced, Firewalls, and there you can open ports.&lt;/div&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
</feed>