http://wiki.linuxmce.org/api.php?action=feedcontributions&user=Juliet&feedformat=atomLinuxMCE - User contributions [en]2024-03-29T09:34:49ZUser contributionsMediaWiki 1.24.1http://wiki.linuxmce.org/index.php?title=Known_Issues&diff=3897Known Issues2007-05-17T07:52:05Z<p>Juliet: /* Known issues with LinuxMCE 1.1 Beta */</p>
<hr />
<div>== Known issues with LinuxMCE 1.0 ==<br />
<br />
It is best to install version 1.0 on a separate box, rather than your main Ubuntu system because of the following issues:<br />
<br />
* The installer is messing up Ubuntu's xorg.conf file by removing the nvidia driver and replacing it with vesa. This was actually a necessary hack that got forgotten about. There is a bug in the nVidia drivers (it has been reported) that causes them to crash when two X sessions are running and try to open the same card. Using the 'nv' driver on one and the 'nvidia' on the other still doesn't work, but using vesa on one and nvidia on the other does. So the hack changes Ubuntu's xorg.conf from nVidia to Vesa. If you install a dedicated LinuxMCE box this isn't an issue, but it can be a problem when you are a Ubuntu user and want better performance on your Ubuntu desktop than the vesa driver allows.<br />
<br />
* The installer will revert the Ubuntu sources.list back to the default, removing any non-standard repositories, when it does the upgrade before installing itself.<br />
<br />
* As mentioned in other places, the scripts carried from Pluto were written to be run on a dedicated system and 'take over' completely. It was a huge task just getting LinuxMCE 1.0 out the door, and the Ubuntu integration is still a work in progress and the scripts are still too invasive. If this is a dedicated system, or if you're not a Linux user, this is perhaps still a good thing because you'll never need to touch your configuration files: LinuxMCE will setup the dhcp server, samba network shares, network settings, and so on. But, if you are a Ubuntu user, be warned that it will override some of your settings until we get the Ubuntu integration improved.<br />
<br />
Additional issues:<br />
<br />
* Most of the problems reported so far are caused by using UI2, which requires OpenGL, on video cards without good Linux OpenGL support. The solution is to use UI1 instead. nVidia 6xxx and higher are preferred and will run UI2 with the 3d effects and alpha blending.<br />
<br />
* A bug in the media browser was identified that is causing it to run very slow and consume a lot of memory. A 1.01 patch will be out soon.<br />
<br />
* In the haste to release the updated LinuxMCE 1.0 that didn't use the website for downloading the software after the Digg story brought the server down, there was a sloppy error building the package for the Windows binaries. Most of them are empty. This means the Windows orbiter that runs on web pads, pda's and ms smart phones, as well as some other windows applets which are also on the download page in your Core's admin web site, are missing.<br />
<br />
* Some of the users reported having broken packages during the installation of LinuxMCE, usually 'pluto-orbiter' package. This could happen from a number of reasons. We have identified a few of them, such as: <br />
- the vim package cannot be installed because of a conflict at 'vim-common'. For details on how to fix that, please follow: [http://wiki.linuxmce.com/index.php/Installer_Problems]<br />
- The Ubuntu repositories are sometimes unavailable. You should try reinstalling, or installing the packages by hand<br />
<br />
== Known issues with LinuxMCE 1.1 Beta ==<br />
<br />
* if you get the following error:<br />
<br />
pluto-dcerouter: Depends: pluto-confirm-dependencies (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-confirm-dependencies (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-createdevice (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-createdevice (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-install-scripts (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-install-scripts (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-local-database (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-local-database (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-std-plugins (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-std-plugins (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-system-database (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-system-database (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-website-admin (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-website-admin (< 2.0.0.45) but it is not going to be installed<br />
Depends: pluto-boot-scripts (>= 2.0.0.44) but it is not going to be installed<br />
Depends: pluto-boot-scripts (< 2.0.0.45) but it is not going to be installed<br />
PreDepends: samba but it is not going to be installed<br />
E: Broken packages<br />
<br />
Solution: the quickest solution is to skip the use of the cache cd or to have latest samba package installed before starting the installation.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Known_Issues&diff=3817Known Issues2007-04-04T13:48:52Z<p>Juliet: </p>
<hr />
<div>== Known issues with LinuxMCE 1.0 ==<br />
<br />
It is best to install version 1.0 on a separate box, rather than your main Ubuntu system because of the following issues:<br />
<br />
* The installer is messing up Ubuntu's xorg.conf file by removing the nvidia driver and replacing it with vesa. This was actually a necessary hack that got forgotten about. There is a bug in the nVidia drivers (it has been reported) that causes them to crash when two X sessions are running and try to open the same card. Using the 'nv' driver on one and the 'nvidia' on the other still doesn't work, but using vesa on one and nvidia on the other does. So the hack changes Ubuntu's xorg.conf from nVidia to Vesa. If you install a dedicated LinuxMCE box this isn't an issue, but it can be a problem when you are a Ubuntu user and want better performance on your Ubuntu desktop than the vesa driver allows.<br />
<br />
* The installer will revert the Ubuntu sources.list back to the default, removing any non-standard repositories, when it does the upgrade before installing itself.<br />
<br />
* As mentioned in other places, the scripts carried from Pluto were written to be run on a dedicated system and 'take over' completely. It was a huge task just getting LinuxMCE 1.0 out the door, and the Ubuntu integration is still a work in progress and the scripts are still too invasive. If this is a dedicated system, or if you're not a Linux user, this is perhaps still a good thing because you'll never need to touch your configuration files: LinuxMCE will setup the dhcp server, samba network shares, network settings, and so on. But, if you are a Ubuntu user, be warned that it will override some of your settings until we get the Ubuntu integration improved.<br />
<br />
Additional issues:<br />
<br />
* Most of the problems reported so far are caused by using UI2, which requires OpenGL, on video cards without good Linux OpenGL support. The solution is to use UI1 instead. nVidia 6xxx and higher are preferred and will run UI2 with the 3d effects and alpha blending.<br />
<br />
* A bug in the media browser was identified that is causing it to run very slow and consume a lot of memory. A 1.01 patch will be out soon.<br />
<br />
* In the haste to release the updated LinuxMCE 1.0 that didn't use the website for downloading the software after the Digg story brought the server down, there was a sloppy error building the package for the Windows binaries. Most of them are empty. This means the Windows orbiter that runs on web pads, pda's and ms smart phones, as well as some other windows applets which are also on the download page in your Core's admin web site, are missing.<br />
<br />
* Some of the users reported having broken packages during the installation of LinuxMCE, usually 'pluto-orbiter' package. This could happen from a number of reasons. We have identified a few of them, such as: <br />
- the vim package cannot be installed because of a conflict at 'vim-common'. For details on how to fix that, please follow: [http://wiki.linuxmce.com/index.php/Installer_Problems]<br />
- The Ubuntu repositories are sometimes unavailable. You should try reinstalling, or installing the packages by hand</div>Juliethttp://wiki.linuxmce.org/index.php?title=Main_Page&diff=3628Main Page2007-03-20T07:37:55Z<p>Juliet: /* Software Used by LinuxMCE */</p>
<hr />
<div>==What is LinuxMCE?==<br />
[http://LinuxMCE.com LinuxMCE] is the only solution seamlessly combining:<br />
# media & entertainment with a server for music, movies and tv shows, plus a PVR and DVD Player,<br />
# a home automation system to control everything in the home with touch-screen tablet and Bluetooth mobile phone controllers,<br />
# a phone system with video conferencing,<br />
# a security system that feeds you live video on your mobile phone when something happens, and lets you speak to visitors through your stereos, and<br />
# a home PC solution.<br />
<br />
A typical LinuxMCE system consists of a '''Core''': one PC acting as a dedicated server and interface with all the sub-components. The Core includes our own plug-and-play back-end so it listens for and auto configures all sorts of devices like network audio players (such as Squeeze Box), IP phones and cameras. The Core automatically exposes a network boot for any other PC's or thin clients you want to use as '''Media Directors''', which you hook up to your TV/Stereo's to use as set top boxes, complete with a media player, PVR, video conferencing, intercom, and a GUI to control everything in the home. All Media Directors work together seamlessly as a total whole-house solution. <br />
<br />
In addition to the usual infrared remote controls, LinuxMCE includes remote control software that runs on Symbian Bluetooth mobile phones as well as Linux, Windows and Windows CE devices like webpads and pda's. They all feature cover art, interactive maps and floorplans, and let you control any device in the house. The UI is skinnable and multi-language. The mobile phone has a "follow-me" feature so your media and other settings follow you from room to room. It switches from Bluetooth to cellular gprs/wap when you leave the house you're always in control.<br />
<br />
__TOC__<br />
<br />
==News==<br />
==Features==<br />
<br />
LinuxMCE is an all-in-one solution for your home that seamlessly combines media & entertainment, home automation, security, telecommunications and computing. Browse the [[Features|features page]], along with [[What can I do with LinuxMCE?]] to see the possibilities available from LinuxMCE.<br />
<br />
==Screenshots==<br />
[[Image:MainMenu2.jpg|left|thumb|UI2 Main Menu]]<br />
[[Image:FileBrowserUI1.jpg|left|thumb|UI1 Media Files Browser]]<br />
[[Image:DialNumberUI1.jpg|none|thumb|UI1 Phone Dial Pad]]<br />
-<br />
<br />
==Download==<br />
<br />
To get Linux MCE, please download and install Linux MCE installer from the main page of website. After this, please start the "Linux MCE Installer" application - it will download and install required packages.<br />
<br />
==Getting Started==<br />
<br />
This section has moved to [[Getting Started]].<br />
<br />
==Support==<br />
<br />
===User's Manual===<br />
<br />
This section has moved to [[User's Manual]].<br />
<br />
===Mailing List===<br />
<br />
Support beyond that contained in this wiki can be found via the official LinuxMCE [http://LinuxMCE.com/support/index.php?section=forum forums] and through the available [http://LinuxMCE.com/support/index.php?section=mail mailing lists].<br />
<br />
===Configuring LinuxMCE===<br />
<br />
[[LinuxMCE Admin Website|Configuring LinuxMCE]]<br />
<br />
[[Users_Page | Users' Documentation]]<br />
<br />
===FAQ===<br />
*[[Development status for all modules]]<br />
*[[What does an appliance solution like LinuxMCE cost?]]<br />
*[[Is LinuxMCE an appliance or software solution?]]<br />
*[[Why buy a licensed LinuxMCE product? What's the difference?]]<br />
*[[Do I need LinuxMCE? Can I use the projects by themselves?]]<br />
*[[How do I login to a Linux console?]]<br />
*[[How are media files organized?]]<br />
*[[I can't access my media files over the network]]<br />
*[[Reset the password for the LinuxMCE Admin site]]<br />
*[[What if you don't have a driver for my home automation devic]]<br />
*[[What scenarios are created automatically?]]<br />
*[[I'm a Linux user already. Should I use LinuxMCE's distribution]]<br />
*[[Encrypted DVD's|Why doesn't LinuxMCE support encrypted DVD's?]]<br />
<br />
===Troubleshooting===<br />
* [[svn default properties]]<br />
* [[Adding new computing apps]]<br />
* [[Installing on a new platform]]<br />
* [[Windows|Installer for Windows]]<br />
<br />
==Development==<br />
<br />
===Author's Information===<br />
<br />
Information regarding author information can be found on the [http://LinuxMCE.com/support/index.php?section=authors author's] portion of the commercial website.<br />
<br />
===Programmer's Guide===<br />
<br />
There is a great deal of documentation on the LinuxMCE platform available in the [[Programmer's Guide]]. This guide provides an overview of the LinuxMCE architecture, <br />
<br />
===Software Used by LinuxMCE===<br />
<br />
LinuxMCE is often called a platform for developing smart home modules constructed by a variety of open source projects. The integration of these open source projects, such as [http://xinehq.de Xine], [http://www.mythtv.org Mythtv], and [http://www.asterisk.org Asterisk], can be found in the LinuxMCE Software Documentation.<br />
<br />
[[Documentation by Device Templates]]<br />
<br />
[http://LinuxMCE.com/support/doxygen/ doxygen diagrams]<br />
<br />
LinuxMCE is an open source project and uses open source software. More information regarding LinuxMCE's relationship to open source can be found on the [[Open Source Info|open source information]] page, the [http://LinuxMCE.com/support/index.php?section=license&package=0 license information] page, what to do if you're an [http://LinuxMCE.com/index.php?section=developer open source develper], and LinuxMCE's [http://LinuxMCE.com/index.php?section=letter open source strategy].<br />
<br />
===Report Bugs===<br />
<br />
Bugs may be [http://www.linuxmce.com/mantis/ reported] via the bug tracking system, [http://www.mantisbugtracker.com/ Mantis].<br />
<br />
===Source===<br />
<br />
LinuxMCE is a pretty big project. Not counting GSD devices, LinuxMCE's own code is already well over a million lines in hundreds of modules, with over 1,000 pages of online documentation, and in addition LinuxMCE also incorporates lots of other big open source projects like Asterisk, Xine, MythTV, Firefox, VideoLan, SlimServer, etc., all of which have special LinuxMCE 'wrappers' to allow them to work together seamlessly as a total home solution. For the brave of heart, you can also download [http://LinuxMCE.com/support/index.php?section=mainDownload&package=0 modules by hand], and see all the dependencies and compatibility for each module.<br />
<br />
You can browse the [http://svn.plutohome.com/pluto/trunk/ web based repository viewer]. Or you can you do an anonymous svn checkout as follows:<br />
<br />
svn co <nowiki>http://</nowiki>svn.plutohome.com/pluto/trunk/''modulename''<br />
<br />
You can checkout all the software with if you use http://svn.plutohome.com/pluto/trunk/ as the repository location for the module name, or go to the [http://svn.plutohome.com/pluto/trunk/ repository viewer] to find the name of the SVN directory for the module you are interested in.<br />
<br />
Here are short instructions if you want compile your module with svn sources : [[Building_from_source]].<br />
<br />
=== Versions ===<br />
<br />
The current version of Linux MCE is 1.2, as of March 07, 2007.<br />
<br />
== Short Howto on Wiki ==<br />
<br />
This section has been moved to [[Short Howto on Wiki]].</div>Juliethttp://wiki.linuxmce.org/index.php?title=How_to_add_a_new_software_package_to_LinuxMCE&diff=3625How to add a new software package to LinuxMCE2007-03-19T11:37:13Z<p>Juliet: </p>
<hr />
<div>1. In LinuxMCE admin go to advanced->software->packages.<br />
<br />
2. Look at the package 'LinuxMCE Create Device' and 'LinuxMCE Create Device Source'. That's a sample of a utility that we include.Also you can see 'LinuxMCE UpdateEntArea'. It is another example.<br />
<br />
3. Create 2 new packages for your utility: a source package, and a binary package.<br />
<br />
Copy the example from create device or updateEntArea EXACTLY, just replacing the directory and names with your own.<br />
<br />
4. Then go to the LinuxMCE orbiter package and add that new package of yours as a dependency.<br />
<br />
5. Do a sqlcvs checkin on your box of the dce repository (always do a diff first before a checkin to confirm it's safe). And do a svn commit your new code.<br />
<br />
6. Then on the build server in iasi (.150) run <br />
<br />
/home/database-dumps/sync-sqlcvs.sh<br />
<br />
''the syntax of the sqlcvs update on teh build server is slightly different than on your box because the build server has more "restricted" records''<br />
<br />
7. Then check if it have no compile errors: <br />
<br />
su - builder<br />
[[Category: LinuxMCEMaintenance]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=How_to_add_a_new_software_package_to_LinuxMCE&diff=3624How to add a new software package to LinuxMCE2007-03-19T11:36:29Z<p>Juliet: </p>
<hr />
<div>1. In LinuxMCE admin go to advanced->software->packages.<br />
<br />
2. Look at the package 'LinuxMCE Create Device' and 'LinuxMCE Create Device Source'. That's a sample of a utility that we include.Also you can see 'LinuxMCE UpdateEntArea'. It is another example.<br />
<br />
3. Create 2 new packages for your utility: a source package, and a binary package.<br />
<br />
Copy the example from create device or updateEntArea EXACTLY, just replacing the directory and names with your own.<br />
<br />
4. Then go to the LinuxMCE orbiter package and add that new package of yours as a dependency.<br />
<br />
5. Do a sqlcvs checkin on your box of the dce repository (always do a diff first before a checkin to confirm it's safe). And do a svn commit your new code.<br />
<br />
6. Then on the build server in iasi (.150) run <br />
<br />
/home/database-dumps/sync-sqlcvs.sh<br />
<br />
''the syntax of the sqlcvs update on teh build server is slightly different than on your box because the build server has more "restricted" records''<br />
<br />
7. Then check if it have no compile errors: <br />
<br />
su - builder<br />
[[Category: LinuxMCE Maintenance]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=Telecom_Plugin&diff=3623Telecom Plugin2007-03-19T11:31:46Z<p>Juliet: </p>
<hr />
<div>[[Category:Telecom]]<br />
[[Category:LinuxMCE_Devices]]<br />
== Description ==<br />
This one provides standard command interface for the PBX, theoretically it can be plugged with any PBX, not sure if it can be done.<br />
<br />
It has a virtual device id = -107, this way all telecom commands from orbiter are sent to Telecom_Plugin, and then it routes commands to specific devices (like from Orbiter to child Embedded Phone) or to Asterisk.<br />
<br />
It depends on command the sender and such parameters as device or channel_ids.<br />
<br />
For example PL_Originatecalled with PK_Device==EmbeddedPhone will send CMD_Phone_Initiate to the device or CMD_PBX_Originate to asterisk. The transfer when the call is already a conference call will be simple joining into the conference room instead of a blind transfer and so on.<br />
<br />
It also provides several DataGrids getting information from internal datastructures in case of ActiveCalls, pluto_main for SpeedDial and asteriskcdr for RecentCalls.<br />
<br />
== Communication with Asterisk ==<br />
In most cases the Telecom_Plugin keeps almost the same list of channels as [[LinuxMCE-asterisk|Asterisk]]. The Asterisk is notifying Telecom_Plugin on all changes and they keep the list in sync.<br />
<br />
In most of the commands(and events) exchanged between Asterisk and Telecom_Plugin one of the parameters is CallID or ChannelID string representing channels connected into a call (something like ''SIP/202-9577 IAX2/teliax-out/6'')<br />
<br />
Only Asterisk is sending that channels were changed, Telecom_Plugin just acknowledges it and changes his state accordingly.</div>Juliethttp://wiki.linuxmce.org/index.php?title=SimplePhone&diff=3622SimplePhone2007-03-19T11:31:05Z<p>Juliet: </p>
<hr />
<div>[[Category:Telecom]]<br />
[[Category:LinuxMCE_Devices]]<br />
Also known as '''Orbiter's Embedded Phone''' (device template 1759).<br />
== Description ==<br />
Is a softphone based on [http://iaxclient.sourceforge.net/ libiaxclient]. It uses about 10-15 library calls and if there weren't DCE part it could be written in 100 lines of code. Theoretically the library is highly portable so it can be used also in Windows (maybe even in MS tablets) and Mac OS.<br />
<br />
It can handle one call at a time, all user interaction is actually performed by Orbiter which sends DCE commands via [[Telecom_Plugin]] to the SimplePhone (like CMD_Phone_Initiate, CMD_Phone_Answer, CMD_Phone_Drop).<br />
<br />
It also is the one responsible for a important security feature '''Speak in the house'''. It can autoanswer on a specific caller id.<br />
You will be added in conference room with all SimplePhone in the house and everything you say will be repeated on each and every one of them.<br />
<br />
== Known issues ==<br />
In linux it's an OSS application (because of [http://www.portaudio.com/ portaudio] v18), when v19 will be available it will support ALSA. Because LinuxMCE don't use any sound server (like '''esd''' or something similar) there can be following problems:<br />
* On startup if sound device is used by some other application it mai fail to start<br />
* When trying to actually do a call it sends CMD_MH_Stop_Media to free the sound device for the call, however I saw that Xine is not always do so (mantis #1586)</div>Juliethttp://wiki.linuxmce.org/index.php?title=Generic_Serial_Device&diff=3621Generic Serial Device2007-03-19T11:30:23Z<p>Juliet: </p>
<hr />
<div>[[Category:GSD]]<br />
[[Category:LinuxMCE_Devices]]<br />
Generic_Serial_Device (also knowk as '''GSD''') is a LinuxMCE device that allows end-user to do simple programming for RS232, serial USB or network connected devices.<br />
:Note : The information is not quite complete because I'm not the original author.<br />
<br />
== Short description ==<br />
It's a standard DCE device, it only can execute commands and send events .<br />
The main idea is instead of programming a device in C++, compile, link with proper libraries you can edit (in a webpage) few lines of code in ruby which will be executed when device receives that command. It exports several objects into ruby so you'll have access to devicedata, device hierarchy, established connection and so on.<br />
<br />
The ruby code for each device template is stored somewhere in ''InfraredGroup_Command'' table. To edit the code go to Wizard> Devices > Generic_Serial_Devices on [[LinuxMCE-admin]] website. You have to add a device from a device template in order to see anything in that page.<br />
<br />
Select the device, and click "RubyCodes" button to be able to edit code that will be executed. <br />
You should be able to see commands that are specified in device template (like ON/OFF/WhateverElse) and a group of ''Internal Commands'' which are used to perform certain actions are to add helper functions.<br />
<br />
If the command you are trying to add doesn't show on first page, go to ''Add/Remove commands'' and add more commands for your device.<br />
<br />
=== Ruby source code ===<br />
<br />
There are 2 forms of ruby code you can write :<br />
* standard ruby code (check [http://www.ruby-lang.org/en/] and [http://poignantguide.net/ruby/] for syntax, references and programming guides)<br />
* short form for '''conn_.Send'''<br />
<$"PWON\r"$><br />
:which simply will send the string ''"PWON\r"'' to device.<br />
<br />
You'll have to quick reload router to get new code. Restarting GSD only will keep old code because the code is supplied by [[Infrared_Plugin]] which caches pluto_main and won't update it's cache without full restart of [[DCERouter]]. With this code it creates a ruby source which will be interpreted by embedded ruby.<br />
<br />
It will create methods called "cmd_CmdIDx" for each command(x) defined in web interface except ''Private_Method_Listing'' which will be inserted in the body of the class directly without wrapping.<br />
<br />
The source usually looks like (''DevID'' is iPK_Device of specific device, ''CmdIDx'' is iPK_Command ) :<br />
<br />
require 'Ruby_Generic_Serial_Device'<br />
class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper<br />
end<br />
class Device_DevID < Ruby_Generic_Serial_Device::RubySerialWrapper<br />
def cmd_CmdID1(paramlist)<br />
@returnParamArray.clear<br />
### WEB CODE for CmdID1 GOES HERE ###<br />
return @returnParamArray<br />
end<br />
def cmd_CmdID2(paramlist)<br />
@returnParamArray.clear<br />
### WEB CODE for CmdID2 GOES HERE ###<br />
return @returnParamArray<br />
end<br />
...<br />
def cmd_ReceiveCommandForChild(cmd)<br />
### Process_Receive Command_For_Child GOES HERE ###<br />
end<br />
...<br />
### Private_Method_Listing GOES HERE ###<br />
...<br />
def initialize()<br />
super<br />
@returnParamArray=Array.new<br />
end<br />
### Generated Setters/Getters goes here (may be empty, but usually looks like below) ###<br />
def data_set(value)<br />
@returnParamArray[19]=value<br />
end<br />
<br />
end<br />
<br />
There might be more then one class definition in that source. This may happen when child device is itself a GSD device.<br />
<br />
=== Command details ===<br />
When the command from DCE arrives it is routed to specific device and ''cmd_XXX'' is run. The commands are run one by one, meaning that you cannot run 2 commands simultaneously. This limitation is implied by embedded ruby interpretor which fails if run from multiple threads.<br />
DCE commands may have return parameters (well known GetVideoFrame), as ruby can return only 1 parameter the ''@returnParamArray'' was added. You can see that in each method we insert '''@returnParamArray.clear''' then the real code and then '''return @returnParamArray'''. Also some setters are generated (like the one from above) for code readability.<br />
<br />
Beside usual DCE command you'll see some ''Internal Commands''. Here goes a small list and what they do:<br />
* '''Private Method Listing''' - used to insert all kind of helpers<br />
* '''Process IDLE''' - method executed once in a while (may be used to keep connection alive, scan for new devices on serial bus)<br />
* '''Process Incoming Data''' - called when some data is available <br />
* '''Process Receive Command For Child''' - called if the device has children and those are pretty dummy (like Lights under CM11), so practically the parent will do the job. As a parameter you have ''cmd'' which is a wrapper for DCEMessage, so you'll have access to deviceId, senderId, commandID and so on.<br />
* '''Process Initialize''' - called when device is starting (to perform handshake with device or some other initialisation required by protocol)<br />
* '''Process Release''' - to close gracefully connection with device (say "good bye" or something)<br />
<br />
== Implementation notes ==<br />
There are several classes that actually need to be touched. Most of the other classes are just for wrapping DCE objects (like Device, Message, Connection and so on) and exporting them into ruby.<br />
<br />
Most important classes :<br />
* '''RubyDCEDeviceNode''' is actually the Device, responsable with initialisation and partially a message handler.<br />
* '''RubyDCEEmbededClass''' is bridge between DeviceNode and ruby, it has ''CallCmdHandler'' which does the real call to ruby and sends back result.<br />
* '''RubyIOManager''' is the one responsible for instantiating RubyDCEDeviceNodes, code retrieval, command handler and serializing ruby calls.<br />
* '''RubyDCECodeSupplier''' gives you the ruby code<br />
* '''RubyCommandWrapper''' a wrapper for Message<br />
* '''GSDMessageProcessing''' is [[Message_Translation|message translator]] which will try to run command if it's implemented without translation.<br />
* '''RubySerialIOConnectionWrapper''' helps to wrap Serial and TCP/IP based connection under same interface, see down the hierarchy the connection you need.<br />
<br />
There are also some files needed for building a library for ruby with SWIG, let them alone, it should work.<br />
<br />
The compilation will give you '''Generic_Serial_Device''' and '''Ruby_Generic_Serial_Device.so''', first file is the binary itself, second file is the bridge library and it will be included by ruby (the request for it is in the first line of the generated source)<br />
<br />
== Known issues ==<br />
<br />
* Only '''ONE''' command can be executed at a time. This is a limitation of embedded ruby, which should be run from one thread only.<br />
* If command expected an answer, it would wait about 20 seconds for the ruby command to complete, and if the command haven't completed yet, it would send an empty response.<br />
* Most of the data are pretty cryptic (like ''device_.devdata_[114]''), you have to look that that number represents (device data id, command id, command parameter id, event id, event parameter id, some other id)<br />
<br />
== Short example ==<br />
For more details about exported classes and available methods check [[GSD_Ruby_Interface]]<br />
<br />
Here is a short example from ''Panasonic IP Camera'':<br />
0:require 'Ruby_Generic_Serial_Device'<br />
1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper<br />
2:end<br />
3:class Device_47 < Ruby_Generic_Serial_Device::RubySerialWrapper<br />
4:#### 84 ####################################################################<br />
5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height)<br />
6:@returnParamArray.clear<br />
7:conn_.Reconnect()<br />
8:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]<br />
9:auth_a=Array.new;<br />
10:auth_s.each{|c| auth_a.push(c)}<br />
11:<br />
12:fix_path=device_.devdata_[2];<br />
13:fix_path='/'+fix_path if(fix_path[0]!='/'[0]);<br />
14:<br />
15:s = "GET "+fix_path+" HTTP/1.0\r\n"<br />
16:s+= "Accept: */*\r\n"<br />
17:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"<br />
18:s+= "\r\n"<br />
19:<br />
20:conn_.Send(s)<br />
21:recv=""<br />
22:while(true)<br />
23: buff=conn_.Recv(16384, 5000)<br />
24: if(buff.length() == 0)<br />
25: break<br />
26: end<br />
27: recv = recv + buff<br />
28:end<br />
29:if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)<br />
30: data_set($1)<br />
31: format_set('jpg')<br />
32:end<br />
33:return @returnParamArray<br />
34:end<br />
...<br />
194:#### START SETTERS ####################################################################<br />
195:def initialize()<br />
196:super<br />
197:@returnParamArray=Array.new<br />
198:end<br />
199:def data_set(value)<br />
200:@returnParamArray[19]=value<br />
201:end<br />
202:def format_set(value)<br />
203:@returnParamArray[20]=value<br />
204:end<br />
205:#### END SETTERS ####################################################################<br />
206:end<br />
You can see how command 84 (GetVideoFrame) is implemented:<br />
* it has 6 parameters ''cmd_84(data, format, disable_aspect_lock, streamid, width, height)'', parameters ''data'' and ''format'' are also output parameters<br />
* to set output parameters methods like ''data_set'' and ''format_set'' are automatically generated<br />
* ''device_.devdata_[114]'', ''device_.devdata_[115]'' are the username and password to login into camera <br />
* then it creates HTTP header with basic authorization<br />
* ''device_.devdata_[2]'' is the path to the snapshot (it is configurable because it can change between models)<br />
* it sends the request and waits for the answer<br />
* reads the answer, regexp parse it and gets JPEG content<br />
* sets output parameters<br />
* returns @returnParamArray (the return statement is added automatically)</div>Juliethttp://wiki.linuxmce.org/index.php?title=GlobalCache_GC-100&diff=3618GlobalCache GC-1002007-03-19T11:29:06Z<p>Juliet: </p>
<hr />
<div>[[Category:LinuxMCE_Devices]]<br />
[[Category:InfraRed]]<br />
gc100 is a device which allows you to have remote connection almost anywhere. It's a network device which will forward all your data to :<br />
* couple of serial ports<br />
* IR senders and/or sensors<br />
* several relays<br />
For more details about the product check [http://www.globalcache.com/products/gc-index.html manufacturer web site].<br />
<br />
== Send IR codes ==<br />
LinuxMCE implementation of GC100 assumes that in device tree we'll have children and the messages are actually addressed to them instead of gc100 itself. <br />
<br />
So when you are sending "ON" to TV controlled by gc100, the message is routed to gc100, it fings infrared code for "ON" for that specific TV, sends a command to gc100 to send a specific infrared sequence, which will blink IR sender connected to specific port, and the TV will turn on.<br />
<br />
The only two commands that GC100 implements itself are : '''CMD_Send_Code''' used to test which IR is suitable for your equipment and '''CMD_Learn_IR''' used to learn new IR codes.<br />
<br />
== Learn IR codes ==<br />
The learning device is actually unrelated to gc100. It may be plugged into one of gc100's serial ports (don't forget to set them to 9600 bps), or in regular serial port, just be sure you specified right port in gc100 device data.<br />
<br />
There are several other devices that support learning of infrared codes : [[IRTrans]], [[Tira]], [[USB_UIRT]].<br />
<br />
Learning is done from [[LinuxMCE-admin|web page]]. When clicking "Learn" gc100 will start a thread that will try to get data from the port. If nothing is received in 30 seconds the thread will die. The page will continue to refresh trying to see if anything was added, but after 30 seconds it's useless.<br />
<br />
== How to ==<br />
=== Install ===<br />
The device is not quite [[plug&play]]. You have to perform a factory reset and to add it from orbiter ("Add GC100" button).<br />
<br />
A script will do some tricks with ip, will submit some pages on gc100's interface and so on. It will install needed software and after that it should say that device is ready to use (don't forget to quickreload)<br />
<br />
=== Before the first use ===<br />
* Insert proper wires in relays, devices in serial ports, IR LEDs and/or sensors.<br />
* Go to device's webpage and set proper inputs/outputs, baud rates and so on.<br />
* Add child devices in [[LinuxMCE-admin]] webpage and set proper device data to match the wiring.<br />
<br />
This should do it.<br />
<br />
== Implementation details ==<br />
In ''gc100.cpp'' there is a lot of code for format conversion and other stuff. Practically it's not a big deal it receives a command, find a proper IR sequence and sends it to gc100.</div>Juliethttp://wiki.linuxmce.org/index.php?title=CM11A&diff=3617CM11A2007-03-19T11:28:22Z<p>Juliet: </p>
<hr />
<div>[[Category:LinuxMCE_Devices]]<br />
<br />
== Description ==<br />
CM11A is a device that uses [http://hypermetrics.com/rubyhacker/x10proto.html X10] protocol to control lights (and may be other stuff) around the house by injecting data into powerline.<br />
<br />
Each X10 device has an address formed as ''housecode''[A..P]+''unitcode''[1..16]. As powerlines are usually shared between near houses/apartments it's a good idea to choose other housecode than your neighbor, or purchase and properly install a filter.<br />
<br />
To control those devices you need a small box which is connected to computer (this one is CM11A), with it you can send commands to the devices.<br />
<br />
The command usually consist of few bytes (command itself and unit to control) and an exchange of checksums needed because the line may be noisy and commands weren't received correctly. In this case the retransmission is required by protocol.<br />
<br />
There are several commands the LinuxMCE's CM11A implements:<br />
* '''CMD_Generic_On''' will send x10 ON<br />
* '''CMD_Generic_Off''' will send x10 OFF<br />
* '''CMD_Set_Level''' depending on the existing level versus requested level will send DIM or BRIGHT<br />
<br />
Some devices may send commands to CM11A device (mostly motion detectors or some other bidirectional devices). We don't have any in the office so even if the code exists, it wasn't tested properly, but it should send SensorTripped event.<br />
<br />
== Implementation notes ==<br />
* ''CM11A'' is responsible for getting commands from LinuxMCE and transform them in X10 commands<br />
* ''DevicePoll'' will do all the communication with device (sending commands, checking checksum, etc) and also will treat any ''InterfacePool'' requests coming from bidirectional devices.<br />
* ''Message'' will transform unit code from for example 'A9' into internal X10 code '67'. Don't ask why, that translation is required by protocol.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Category:LinuxMCEMaintenance&diff=3615Category:LinuxMCEMaintenance2007-03-19T11:25:53Z<p>Juliet: </p>
<hr />
<div>[[ Category : LinuxAdmin ]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=Category:LinuxMCEBashScripts&diff=3614Category:LinuxMCEBashScripts2007-03-19T11:24:37Z<p>Juliet: </p>
<hr />
<div>[[ Category : LinuxAdmin ]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=X_Configuration_Scripts&diff=3612X Configuration Scripts2007-03-19T11:22:53Z<p>Juliet: </p>
<hr />
<div>== General info ==<br />
<br />
'''Package:''' pluto-x-scripts<br />
<br />
'''Directory:''' src/X-Resolution<br />
<br />
These scripts are used to configure X and change resolutions.<br />
<br />
== File details ==<br />
<br />
;resolutions.png: Reference picture for resolution change screen<br />
;Xconfigure.sh: Generates a XF86Config-4 file (defaults to /etc/X11/XF86Config-4). It can use a set of defaults on request. Autodetects the video card driver as part of the defaults. Updates configuration sections according to requested screen resolution, refresh rate. Updates just the video driver when requested.<br />
<br />
Xconfigure.sh [--defaults] [--resolution <ResX>x<ResY>[@<Refresh>]] [--scantype {progressive|interlace|doublescan}] [--force] [--update-video-driver] [--conffile <config_file>] [--force-vesa]<br />
--defaults - use the defaults as a starting point<br />
--resolution <ResX>x<ResY>[@<Refresh>] - set the screen mode and corresponding modeline in the config file; Refresh defaults to 60<br />
--scantype {progressive|interlace|doublescan} - select a scan type; has effect only when used with the --resolution parameter; when not specified, defaults to progressive<br />
--force - The default horizontal sync range is 28-90; with this option, it is set to 28-500<br />
--update-video-driver - redetects the video driver and updates the config file; does nothing when the --defaults parameter is specified as --defaults implies this parameter<br />
--conffile - specify which config file to use instead of the default /etc/X11/XF86Config-4<br />
--force-vesa - use vesa, skip driver autodetection; useful only with --defaults and --update-video-driver; used by the fallback mechanism in case the detected driver fails X probeonly test.<br />
<br />
;Xres_config.sh and Xres_config_end.sh: These scripts are used by the LinuxMCE Admin "Set resolution and refresh" pages.<br />
<br />
Xres_config.sh: <ResX> <ResY> <Refresh> [<Scan Type>] - generates a X config file for this resolution and starts a X server on display :1, sets the background to the resolutions.png file and displays the current settings on screen and at the console.<br />
X_res_config_end.sh {y/n} - confirms or infirms if the settings specified to the previous script should be kept and transfered to the running system (y parameter) or should be discarded (n parameter).<br />
<br />
<br />
;xtiming.pl:xtiming.pl <ResX> <ResY> <Refresh> [<Scan Type>] - generates a X Modeline for the specified resolution<br />
<br />
;XF86Config-4.in: Defaults used when the --defaults parameter is used with the Xconfigure.sh script<br />
<br />
;X-ChangeDisplayDriver.awk: Used for updating the display driver in a X config file<br />
<br />
;X-ChangeResolution.awk: Used for updating the screen mode, vertical refresh rate, horizontal sync frequency, and resolution modeline in a X config file.<br />
<br />
[[Category: LinuxMCEBashScripts]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=Installing_on_a_new_platform&diff=3606Installing on a new platform2007-03-19T09:55:17Z<p>Juliet: </p>
<hr />
<div>In addition to LinuxMCE'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.<br />
<br />
The process is fully automated under Linux (Ubuntu), which is LinuxMCE'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. <br />
<br />
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;docID=101. Look in the directory ConfirmDependencies_Script. The Ubuntu script is ConfirmDependencies_Ubuntu.sh.<br />
<br />
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's just a tab delimited file, you can use it in a spreadsheet or editor. If you add a column next to the Ubuntu name with the names of the corresponding packages in your distro, we'll have someone here put those names in the database. If there are more packages, or less, just make a note, and we'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.<br />
<br />
You'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 'get from package' (which is ConfirmDependencies_Ubuntu.sh) will be specific to Ubuntu. Other Linux distros should be able to use the same "get from tar", "get from svn", 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 "get from package" version of your script, we will put on our site.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Why_DCE_complements_UPNP,_XAP,_XPL_and_other_standards%3F&diff=3600Why DCE complements UPNP, XAP, XPL and other standards?2007-03-19T09:42:11Z<p>Juliet: </p>
<hr />
<div><p>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.</p><br />
<br />
<p>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'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.</p><br />
<br />
<p>Of course, the protocols are necessary and can make or break the user's experience. But, at LinuxMCE, that'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.</p><br />
<br />
<p>As a protocol, LinuxMCE'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's a rundown:</p><br />
<br />
<p><b>Everything is defined in a SQL database managed by sqlCVS</b></p><br />
<br />
<p>Like UPNP, XAP, etc., LinuxMCE'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.</p><br />
<br />
<p>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 "Light switch" works, you should be able to do so with consulting a committee, but also without breaking the existing Light Switches, and without altering the "Light Switch" standard unless the original "Light Switch" author approves. Basically, we wanted the data definition to be as dynamic as the software is.</p><br />
<br />
<p>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.</p><br />
<br />
<p>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's installer does this. So, if you're a developer, you can browse through all the commands in DCE's database. Find one, say "GetVideoFrame", and see who wrote it, what parameters it takes, what devices use it, how it'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.</p><br />
<br />
<p>The "GetVideoFrame" 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 "PIP" 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 "GetVideoFrame", 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 "TIFF" as an option to the "Format" 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'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 Pluto asking him to review and approve your batch. Once he does, your changes become committed to the "Development" 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 "Testing" repository. When it's been thoroughly tested, they merge the changes into the "Release" repository, and the end-users systems automatically update themselves.</p><br />
<br />
<p>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.</p><br />
<br />
<p>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's work. The goal is a dynamic and flexible platform.</p><br />
<br />
<p>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 "UPNP thermostat", 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.</p><br />
<br />
<p><b>Easy to create DCE devices with DCEGen</b></p><br />
<br />
<p>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'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 "Pause" command to all media players within a room, it'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.</p><br />
<br />
<p><b>Very simple plug-and-play protocol</b></p><br />
<br />
<p>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's PNP back-end will see the Mac Address, automatically add the device and call the configure script.</p><br />
<br />
<p>Granted this is a very simple approach, and doesn'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 'playlist' 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 "Enjoy your Squeeze Box". They can hit "Playlist", choose some music, and it starts playing.</p><br />
<br />
<p>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.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Watch/Listen_to_media_stored_on_the_Core&diff=3595Watch/Listen to media stored on the Core2007-03-19T09:38:57Z<p>Juliet: </p>
<hr />
<div><p><h1>How to set it up</h1></p><br />
<p>There is nothing special to setup normally. In the LinuxMCE Admin website, under Wizard, Scenarios, Media Scenarios are check boxes for each Entertainment Area (aka Room) which create a media scenario to play media in that room, such as "music", "movies", etc. These boxes are checked by default for all Entertainment Areas that have a media director, so you should not have to do anything.</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>From any orbiter select the room where you want to start the media, and choose the media button corresponding to the type of media you want to start, such as "music" which includes all the CD's you rip, and "movies" which includes ripped DVD's. Next you will see the file list showing you the directories and files. Touch a directory to view the contents in it, or touch a file to play the file. For media that is normally queued, like music, the media will start automatically but the Orbiter will not switch to the remote control until you hit the "remote" button; this is to allow you to select more media to place in the queue. When you are done, you can go to the remote control and save that queue as a playlist. With media that is not normally queued, like movies, the orbiter will immediately switch to the remote control.***</p><br />
<br />
<p>The file list is similar in concept to Windows Explorer. You see what's on the Core's hard drive. However you can hit the 'search' button to find media by name or attribute. When you hit 'search' a keyboard appears. Just start typing anything you're looking for. It can be anything--the name of a file, an actor in a movie, a composer, a genre, etc. As you type, you will see all the matching attributes, with the most significant matches near the top. So, for example, typing in 'sp' and you will likely see a list like "Spielberg, Steven (Director)", "Speed (Movie)", "Springstein, Bruce (Singer)", "Sports movies (Genre)", "Spellbound (Song)". Everything is combined together so that it's easier for you. You just start typing and don't need to tell LinuxMCE what you're looking for. When you see what you're looking for, select it from the list. If you select some media, like in this example: "Movie: Speed" or "Song: Spellbound", the media will start playing. If you select something that is an attribute, like in this example: "Spielberg, Steven (Director)", "Springstein, Bruce (Singer)", "Sports movies (Genre)", then you'll see all the results for that attribute, such as movies by Steven Spielberg, songs and albums by Bruce Springstein, and a list of Sports movies.***</p><br />
<br />
<p>On the search results screen you can select some media, like a movie or music, or select another attribute and hit 'view' to see the results for that attribute. In LinuxMCE Admin choose Files & Media, and Media Files Browser to set attributes and cover art for your media files.</p><br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>See [[Rip a CD/DVD to the Core]] to learn about the directory structure, attributes and use of the XFS extended attributes files system. The files and attributes are stored in the pluto_media database. Choosing media causes the Orbiter to send a MH Play Media command to the Media_Plugin which will then find a media player that can handle that type of media in that entertainment area, and call its media handler's StartMedia function.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=User%27s_Manual&diff=3592User's Manual2007-03-19T09:37:04Z<p>Juliet: </p>
<hr />
<div><p>LinuxMCE is a single solution that consists of several pieces, and each has its own User's Manual.</p><br />
<p>To get started you will want to read the documentation on [[Getting Started]]</p><br />
<p>You then control and use your LinuxMCE system with Orbiters. Orbiters is just our way of saying "remote control". Every media director has an on-screen Orbiter that you can use to control the system with your TV. But you can also run the same Orbiters on touch-screen panels. See the [[Orbiter]]</p><br />
<p>LinuxMCE is a modular system and you can add all sorts of plug-ins to do various tasks. You will set these up using the LinuxMCE Admin web site, and on each page there is a help button that will take you directly to the documentation for that plug-in. You can also browse the online [[LinuxMCE Home Software]] to see the User's Manuals for all the plugins.</p><br />
<p>If you have any questions you can visit our forums by clicking on Support / Forums, or request live assistance by choosing Live Support.</p><br />
<br />
==User's Manual Sections==<br />
*[[Security & Privacy Issues]]<br />
*[[What can I do with LinuxMCE?]]<br />
**[[Control LinuxMCE using a Windows device as an Orbiter]]<br />
**[[Control LinuxMCE using a Symbian Series 60 mobile phone with Bl]]<br />
**[[Control LinuxMCE using other types of mobile phones]]<br />
**[[Control LinuxMCE using an Infrared remote]]<br />
**[[Add support for new remote controls]]<br />
**[[Automatic diskless boot of media directors]]<br />
**[[Change the look and feel of the Orbiter]]<br />
**[[Create my own skins or GUI for LinuxMCE]]<br />
**[[Translate the GUI into another language]]<br />
**[[Use network audio players for a whole-house music solution]]<br />
**[[Control a TV or cable/satellite box]]<br />
**[[Watch a DVD/Listen to a CD]]<br />
**[[Have LinuxMCE automatically control the TV and Stereo]]<br />
**[[Rip a CD/DVD to the Core]]<br />
**[[Watch/Listen to media stored on the Core]]<br />
**[[Play the same media in multiple rooms simultaneously]]<br />
**[[Search for media by attributes using the Orbiters]]<br />
**[[Flag media stored on the core as private]]<br />
**[[Flag whatever media I am watching now as private]]<br />
**[[Catalog media with attributes]]<br />
**[[Control regular A/V equipment]]<br />
**[[Control A/V equipment with RS232/USB/Ethernet]]<br />
**[[Make LinuxMCE do something when I start media]]<br />
**[[Have my media follow me]]<br />
**[[Make announcements]]<br />
**[[Control the media director's volume using either a receiver]]<br />
**[[Use a satellite/cable box with the PVR]]<br />
*[[What modules are in development?]]<br />
**[[Control lights/climate using scenarios]]<br />
**[[Control lights or climate with a floorplan]]<br />
**[[Make things happen at set times or intervals]]<br />
**[[Make things happen when I enter a room]]<br />
**[[Have my lighting or climate settings follow me]]<br />
**[[Make things happen at sunrise/sunset]]<br />
**[[Have external devices control LinuxMCE]]<br />
**[[Monitor surveillance cameras]]<br />
**[[Arm or disarm the alarm using the Orbiters]]<br />
**[[Automatically take pictures when sensors are disturbed]]<br />
**[[Have LinuxMCE notify me of security alerts]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=Understanding_Controlled_Via_(aka_Parent)&diff=3590Understanding Controlled Via (aka Parent)2007-03-19T09:34:30Z<p>Juliet: </p>
<hr />
<div><p>Every device must be controlled by (also known as a child of) another except for computers and devices that are stand-alone. A device's parent, or controlled via device, is the device that will be responsible for creating it. You specify what a device template can be controlled via (ie what are the eligible parents) on the Device Template edit page in the LinuxMCE Admin web site.</p><br />
<br />
<p>Example: If you create a Media Player device, the controlled via device will likely be a PC. Then, whatever PC the media player is running on will be responsible for starting the media player. If the device does not implement DCE, then the Controlled Via / parent device will likely be a device that does implement DCE and will be responsible for controlling this device. For example, say you create a device that is an interface for a lighting control system that has various lights wired to it. There are actually 2 devices: the lighting control system, or panel, and the individual lights themselves. Likely the panel will be a device that implements DCE, either because the manufacturer specifically built the panel with an Ethernet port and the panel speaks DCE, or because someone wrote a DCE Device driver that runs on a computer and communicates with the panel some other way, like RS232. But the lights themselves probably do not implement DCE. They are just controlled by the panel, which is what should receive all the commands for the light (like on/off). In this example, where you have a panel that will be controlled by a DCE Device, and then some lights that will be wired to the panel, you would create a Device Template for the panel that Implements DCE. It's controlled via device would be anything in the category "Computers", since the software could run on any computer. You would also create a Device Template for the light itself, and it's controlled via would be the panel. You do not need to specify a controlled via. But if you don't, then that means the user will be able to add the light switch and specify a controlled via device of anything he wants--even, say a DVD player. Of course, the DVD player would not know what to do with this child device and would ignore it. To prevent such errors, you can specify that the light switch is controlled via the panel. Then the user can add the light switch only as a child of the panel, which will know what to do with it. When possible, we try to re-use such devices and make them general purpose. So, unless there is something peculiar about the commands your light switch will implement, rather than giving it a controlled via device of your panel, you can just give it a controlled via of the category "Interfaces/Lighting". Then anyone writing an interface for a lighting panel can use that device. You can also re-use one of LinuxMCE's generic light switch devices. You will see they have a "controlled via" of any lighting interface. This is an 'or' type of operation. If you add a controlled via device of Device Template #281, Device Template #292, and Category #9, then the user will be able to create this device as a child of either Device 281, 292 or any device in category #9.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=RCS_TXB16&diff=3588RCS TXB162007-03-19T09:33:51Z<p>Juliet: </p>
<hr />
<div>==Introduction==<br />
LinuxMCE can control thermostats that are X10 compatible.<br />
<br />
==RCS TXB16==<br />
Manufacturer:<br />
[[http://www.resconsys.com RCS]]<br />
This thermostat provides bi-directional X10 communication. Unfortunately, it uses up all 16 addresses of a house code. It consists of 2 parts, a wall display unit and a control unit. The wall display unit contains the temperature sensor, a LCD screen for temperature and setting outputs, buttons for raising or lowering the temperature, and should be installed where the old thermostat is attached. <br />
<br />
The control unit is a bit ugly so it should be hidden in the boiler room or a closet. This unit contains the X10 control interface and has an X10 wall plug that needs to be plugged into an outlet. It also has another wall plug for power. Yes, that's 2 wall plugs - one for X10 communication, and one for power.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Testing_and_troubleshooting_devices&diff=3586Testing and troubleshooting devices2007-03-19T09:33:16Z<p>Juliet: </p>
<hr />
<div><p>Next to each device is an "Advanced", or "Adv" button. This takes you to the advanced properties for that device, also accessible from the "Advanced", "Devices". Normally you don't need to go there, and if you do, be careful about making changes. Whereas the Wizard pages try to prevent you from making mistakes, the Advanced page gives you total control and you can change settings that cause devices not to work. However, there a couple useful links on the advanced page, primarely: Send Command To Device, and Follow Log. <b>IMPORTANT NOTE:</b> Don't forget concept #5. If you just added a new device or changed the settings for a device be sure to choose Wizard, Restart and "Quick Reload Router" before you try to send it commands or follow its log.</p><br />
<br />
<p>For simple devices you turn on and off, like lights, the "Send Command" link can be a quick way to confirm the device is working without using the Orbiter. Note that in such cases you send the commands to the child device, not the interface device. For example, if you have a lamp controlled by a Lutron master controller, and want to see if the light is working, go to the Advanced page for the lamp (the lighting device)--not the Lutron controller (the interface device). If you send it a command and it doesn't work, go back to the Wizard page and double-check the controlled via device and the parameters. If you make a change do a Quick Reload Router before testing it again.</p><br />
<br />
<p>If the device still isn't working the "Follow log" link can help troubleshoot. The log is usually fairly technical. Note that the log you want to follow is normally the interface device--not the child device. It's the reverse of the Send Command. Send the command to the lamp, not the Lutron controller, but follow the log of the Lutron controller. Technical Explanation: If you click "View" next to the Device Template on the device's advanced page, you will see which devices "Implement DCE". Devices with that box check, and with "Is Embedded" and "Is Plugin" not checked, are separate software modules. For example, the interface devices are normally always separate software modules. However, the child devices, like lamps, sensors, a/v equipment, etc., are not software modules--they don't implement DCE. Their commands are handled by the parent, the interface device. However you still have to send the command to the child device so the interface device knows which of it's children you want to control. The programmer's guide explains DCE in detail. But for now, the rule of thumb when troubleshooting is to send commands to the lowest device in the chain, and if it's log is empty, try the log for its "Controlled Via" device.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Surveillance_Cameras&diff=3584Surveillance Cameras2007-03-19T09:32:06Z<p>Juliet: </p>
<hr />
<div><p>The best surveillance cameras are the IP based models, such as those by Panasonic. These cameras are plug and play--just them into any network jack. They do not require configuring. Plus, many of these cameras support pan/tilt and zoom so you can control them through the Orbiter.</p><br />
<p>If you have the regular analog cameras you will need to add a video capture board to your Core, and then attach the cameras to it. In that case, add the video capture board on the 'interface' page, and then add all the surveillance cmameras on this page, specifying that they are 'controlled by' the video capture board.</p><br />
<p>There are also several settings for each camera. For save video, you can choose "All the time", meaning LinuxMCE will constantly record the video from the camera and save it on the Core. This can take up quite a bit of hard disk space, though. Normally you would choose "Only when motion is detected". This way LinuxMCE will only save the video when it detects there is movement, or something is changing. If you choose "Don't capture", then you will still be able to view the cameras live, but LinuxMCE will not keep an archive.</p><br />
<p>If you do want an archive, be sure to indicate how many days you want LinuxMCE to keep the archive. The default is 10, meaning LinuxMCE will erase any video archive that is more than 10 days old to free up space on the Core. If you are running out of disk space on the Core you can reduce this number so there is not so much space taken up with video archives.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=SW_Interfaces&diff=3582SW Interfaces2007-03-19T09:29:56Z<p>Juliet: </p>
<hr />
<div>'''''Perl''''' <br />
<br />
Test. Sorry I'm wiki newbie and will have to learn a lot of things.... :)<br />
<br />
[[Test Link]]<br />
<br />
----<br />
This section is meant to add all knowledge concerning LinuxMCE & Perl. <br />
<br />
{| class="wikitable" width="300" style="text-align:center; background:#efefef; width:75%; border:1px solid black"<br />
|+'''Sections'''<br />
|-<br />
! [[Perl]]<br />
| [[Misterhouse]]<br />
| [[External listener]]<br />
|-<br />
! [[Ruby]]<br />
| [[Dummy]]<br />
|}</div>Juliethttp://wiki.linuxmce.org/index.php?title=Play_the_same_media_in_multiple_rooms_simultaneously&diff=3577Play the same media in multiple rooms simultaneously2007-03-19T09:26:38Z<p>Juliet: </p>
<hr />
<div><p><h1>How to set it up</h1></p><br />
<p>You need to upload a floorplan of the house in LinuxMCE Admin on the Wizard, Devices, Floorplans page. Use drag and drop to position all the entertainment areas (ie rooms with media) on the map.</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>Start playing the media in one room as explained in [[Watch/Listen to media stored on the Core]]. Then from any Orbiter choose the media map. In the default UI it's the leftmost media button with the picture on it. On the map, or floorplan, you'll see all the media playing in the house and all the entertainment areas color coded with the media playing in there. Touch all the entertainment areas to indicate which ones you want to play the same thing. They should all have a square around them as shown below. *** Then touch the media you want them all the play.</p><br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>The Orbiter will send the Media_Plugin a MH Move Media command telling it what stream to move and into which entertainment areas. Media Plugin has to then figure out how to get it to all those rooms based on the information that the media handlers (like Xine_Plugin) provided when they registered with Media_Plugin. Media_Plugin will first try to find one media handler that has m_bMultipleDestinations true (ie can play the same thing in multiple places synchronized). If there is no appropriate media handler, it tries to find one that is at least able to support devices in all the entertainment areas. If there is none, then Media_Plugin will split the stream into multiple streams and pass it off to different media handlers. For example, the user started the media in one room on a media director with Xine, and is moving it to three rooms. In one room there is a Squeeze Box, and in another a Linux media director with Xine and VLC, and in the last room a media director with some other media player that cannot play streaming audio. In this case Media_Plugin may switch from using the Xine_Plugin media handler to the VideoLan_Plugin since that can handle playing the media in the first two rooms. Then for the third room it will make a copy of the stream and send that off to another media handler for playback. Once the stream is split like that the user will see two streams on the media map, and the two streams will no longer stay in sync.</p><br />
<br />
<p>LinuxMCE uses a text string to define media position, such as "TITLE:2 CHAPTER:4 POS:19282" to indicate the 2nd title, 4th chapter, 19,282 seconds into the block. We encourage developers of media players to translate internal position information to/from this simple text string using LinuxMCE's format so that the user can move media between media players and each will resume where the other left off.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Phone_Lines&diff=3576Phone Lines2007-03-19T09:25:22Z<p>Juliet: </p>
<hr />
<div><p>Here is where you add all the phone lines you have in your house. LinuxMCE supports the regular, old fashioned type of phone line (aka POTS), as well as ISDN, T1 and VOIP. VOIP, for Voice Over IP, is the most flexible and usually the lowest cost. It uses the Internet to place and receive calls, however you can still call regular phone numbers like you always did, and most VOIP providers will still give you a regular incoming number like you have now.</p><br />
<p>If you have VOIP lines, your LinuxMCE Core will automatically manage your internet connection for you, giving priority to the phone calls so that they have a clear connection.</p><br />
<p>Even if you have no phone lines at all, you can always call other LinuxMCE users for free. On your Orbiter just choose "Call LinuxMCE User" and dial their LinuxMCE username.</p><br />
<p>To add a phone line, choose the type of line and then supply the parameters. There are more documents under this one which explain how to configure the various types of phone lines.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Packages&diff=3572Packages2007-03-19T09:22:42Z<p>Juliet: </p>
<hr />
<div><p>The purpose of this page is to list all the software and other files that are needed so that they can be downloaded automatically using the ***ConfirmDependencies*** program. This also lists all the places where the software can be downloaded from. ***Make Release*** is another program that will use the information on this page to automatically compile the software, and build archives, packages or other sources for download.</p><br />
<p>A "package" is a software program, or some other collection of files. The first check box indicates if this package contains source code, or other files. If you specify that it contains source code, then that means the package must first be compiled to produce another package that has the files for the end-user. .cpp, .h files and related, Makefile, .vcproj, etc., are examples of source code. Other types of files are more ambiguous, such as .php. While they are considered source code, they do not normally require compiling to be used and are generally not considered 'source code' for these purposes. If you use MakeRelease to do all the building, MakeRelease will first go through all the packages that are source code and attempt to build them all. If the package you are editing is not source code, and source code is available, you should indicate on the next line what package contains the source code. MakeRelease will attempt to compile the source code for a given package before outputting it, unless you specify the no build (-b) option.</p><br />
<p>The Package type is just for organizing packages.</p><br />
<p>Next you indicate what platforms this package is compatible with. Whenever you see a compatibility pair listing an operating system and distro it always works like this: If you select an operating system only, it will match every distribution platform for that platform. If you select a distribution, regardless of the operating system you chose, only that particular distribution is a match. If you leave both of them at 'any', then it will match every platform.</p><br />
<p>Next, indicate what packages this one depends on--its dependencies. The dependencies will always be installed first. If a package is only required to build from source code, then that package should be a dependent of the source code only. For example, our DCE Library requires MySql. So the DCE library depends on MySql. The MySql development libraries are required to build DCE from source code, so the DCE Library Source Code package depends on MySql development libraries. They will only be installed then if the user wants to build from source. If you add a dependent package and that dependent package is not compatible with the given platform, it will be ignored. For example, the LinuxMCE Orbiter requires ALSA libraries when running on Linux. So, the Orbiter package is marked as compatible with all operating systems. It depends on ALSA, which is only compatible with Linux. When the Orbiter is installed on Windows, it will ignore the ALSA dependency.</p><br />
<p>Next specify the source of the package--where to get it from. The Repository Sources are maintained in a separate table. The values in for Name, Repository, Version and Parms are specific to the type of repository, and how the installer will use them. For archives, like .tar files, the installer will look up the URL from the Repository source, and assume the "Repository" field is a directory on that source, and the name of the file is "Name"[_"Version"]"Parms". If Name is "myfile", Version is "2.0" and Parms is ".zip", it will try to download a file myfile_2.0.zip. For Ubuntu archives, Name is the package name, Version is the Version number, and Parms is not used. If you will be creating your own installer to handle a given repository type you have some flexibility in defining how these fields are used so that it is appropriate for the given type. Add compatibility for the repository sources so the system knows what platforms this source can be used on.</p><br />
<p>Lastly you must specify the directories and files that will go into the package. For each type of directory/file add a new directory. You can add multiple directories of the same type, and make multiple directory types point to the same place. The path is assumed to be the destination on the user's machine. There are build modules that are specific to each repository source and will interpret the path. Generally, on the Linux systems the path is considered relative to /usr while on Windows machines it is relative to \Program Files. If you want different behavior for different operating systems or distros, just create more directories and specify that the files are only compatible with the given distro/os. If the path starts with a /, it is considered absolute, otherwise relative.</p><br />
<p>When MakeRelease runs, it takes as a parameter 2 prefixes to find the files: source prefix, and non-source prefix. When searching for the input files it will prepend the path with the source prefix if the type of directory is "Source Implementation", or with the non-source path for all other types. If you check 'Flip Source' then this behavior is reversed. If you type in a command in the text box, then that command will be executed from the input path before attempting to copy the file. This allows for commands such as make, copy, etc.</p><br />
<p>If the type of directory is Source Implementation, it will first do a search and replace on all the .cpp, .c and .h files replacing any occurancies of <=version=> with the actual version it is compiling.</p><br />
<p>The compiled output directory contains files that need to be compiled, but should not be output in the package. This directory is used only compiling. For example, the source code package may contain entries in Compiled Directory for all the files it should build, which the non-source code package will later use. Those files in the Compiled Directory will have the make command. You could alternatively put the make command in the non-source package. But in that case the command would get executed every time the package was built, whether build/compile was enabled or disabled. So, in summary, if a non-source package needs a command to be run to create a file every time the package is built, put that command in the file's make command. If the command should only be run when doing a clean build from source, put it in the Compiled Directory of the source package.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Orbiter_Doc&diff=3570Orbiter Doc2007-03-19T09:20:37Z<p>Juliet: </p>
<hr />
<div><p><b>http://linuxmce.com/index.php?section=learn_how_to_use_it</b></p><br />
<br />
<p><h1>What do I need?</h1></p><br />
<p>Orbiter is compatible with Linux, Windows, Windows CE and, with Bluetooth Dongle, Symbian Mobile Devices. It is most commonly run on touch-screen web pads, PDA's, and Mobile Phones. Every Media Director includes an Orbiter that runs on your TV.</p><br />
<br />
<p><h1>How does it work?</h1></p><br />
<p>The look, feel and functionality of the Orbiter can be changed completely using the [[Designer]] here explains how to use the Orbiter assuming that you use one of LinuxMCE's default skins and user interfaces. If other people wish to create their own skins and share them with other users, LinuxMCE will be happy to host any User's manuals for those skins as well.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Monitor_surveillance_cameras&diff=3566Monitor surveillance cameras2007-03-19T09:18:22Z<p>Juliet: </p>
<hr />
<div>[[Monitor surveillance cameras]]<br><br />
<br />
<p><h1>How to set it up--part 1, adding the device</h1></p><br />
<p>There are three types of cameras you can use:</p><br />
<p>1. Cameras you connect directly to a PC, such as webcam's, analog cameras connected to a video capture card, and USB cameras<br><br />
2. IP Based cameras you connect to the home network<br><br />
3. Proprietary, stand alone camera systems which have their own master controller or interface which the cameras are connected to.</p><br />
<p>#3 requires a custom LinuxMCE device. In LinuxMCEAdmin choose Wizard, Devices, Interfaces and add the interface device, then add the cameras in Wizard, Devices, Surveillance cameras.</p><br />
<p>#1 also requires an interface device. LinuxMCE includes the device "Motion Wrapper", which is a wrapper for the open source project 'motion', and will be the interface device. In LinuxMCEAdmin choose Wizard, Devices, Interfaces and add the device "Motion Wrapper" which is in the category "Surveillance Video Interfaces". Then in LinuxMCE Admin go to Wizard, Devices, Surveillance Cameras and for each camera, both analog cameras you connect to a capture board, as well as USB cams and web cams, add a device "Generic Camera" which you will find in the category "Peripherals", "Surveillance Cameras", and choose the motion wrapper as the "Controlled Via" device. For each camera you will need to specify a number in the parameter "Port/Channel Number". If you have only 1 camera, it's easy; put a 1. If you have several cameras connected to a single multi-port capture card, the number for each camera should correspond to the port number on the card. However, if you have a mixture it may require some experimenting to see which camera gets mapped to which port. For example, if you have two 4-port capture cards, and you call the 8 cameras "Cams 1-8", and 1 USB camera, which you call "Living Room cam" cam, there will be a total of 9 cameras. The order is determined by the drivers. Normally USB cameras come first. So try giving the USB camera "Living Room cam" a port 1, and then the 4 cameras on the first capture card port #2-5, and the 4 cameras on the second capture card #6-9. Later when you are viewing the cameras if you find the port numbers are incorrect you may need to re-arrange them. If, for example, you go to view the camera you called "Living Room Cam" and see that it is really showing you another camera, go back and change the port parameter until each camera is correct.</p><br />
<p>#2, IP cameras, are the best. They are the simplest and often have the most features, such as pan, tilt and zoom. They do not require an interface device. Most are also plug and play. Try just plugging the camera. If you see a message on all the Orbiters that your camera was detected, that's all there was to it. If not, then in LinuxMCE Admin go to "Wizard", "Devices", "Surveillance Cameras" and add the camera from the category "Peripherals", "Surveillance Cameras" and make the Controlled Via device be the Core. If your model is not shown, you will have 2 choices. One is to create a GSD device for it. This will give you full control over all the cameras features, but requires some technical skills. The second possibility is to add the "Motion Wrapper" interface, and add the camera as a "Generic Camera" as described in the prior paragraph. The only difference is that you will put the IP address of the camera in the IP box. Then the Motion Wrapper knows it's an IP camera. Note that even if your model is specifically listed and you don't use the Generic Camera device, you can still choose Motion Wrapper as the "Controlled Via" if you want Motion Wrapper to monitor the camera.</p><br />
<p><h1>How to set it up--part 2, adding the security device mapping</h1></p><br />
<p>In LinuxMCE Admin choose Wizard, Security, Security-Video Links. Here is a matrix of all your security sensors and intercoms on the left, and all the cameras across the top. Check the boxes to indicate which cameras can view which security devices. If, for example, someone rings the "Front Door intercom", or the "Kitchen smoke detector" is triggered, then when LinuxMCE tries to contact you it will automatically send you video from all the cameras you checked off as corresponding to that sensor. The rules for who to notify are specified in Wizard, Security, Cell Phone Notifications.</p><br />
<p><h1>How to set it up--part 3, adding the scenario</h1></p><br />
<p>You probably will want to add some buttons on the Orbiters to quickly view certain cameras. In LinuxMCE Admin choose Wizard, Security, Scenarios. For each room you can add a shortcut to view a particular camera by checking the camera, or a shortcut to view 4 cameras at once by click 'Add new quad view scenario'.</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>From any Orbiter touch the button for the scenario you created. Notifications of alerts is automatic.</p><br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>The Motion Wrapper device is very simple. It simply scans all the child devices, which are assumed to be cameras, and puts them all in the motion config. If the camera has an ip address, it's assumed to be an IP camera. If not, then it is /dev/video[port] where port is the parameter specified for the camera. The Orbiters and the Security Plugin send a "Get Video Frame" command when they need to view the camera. If the camera uses the device template "Generic Camera", then when an Orbiter or the Security Plugin sends the command it will go to Motion Wrapper, since Generic Camera does not implement DCE. Motion Wrapper just sends a signal to motion and returns the frame. If the camera does not use the template Generic Camera, but rather uses a device template that does Implement DCE, such as "Panasonic IP Camera", then this means a separate device will be spawned for this camera, and that device will handle the "Get Video Frame" itself since it implements DCE. It won't use motion. If the "Controlled Via" is the Motion Wrapper then motion will still monitor it, since when motion starts it writes all child devices into motion's configuration file.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Getting_Started&diff=3556Getting Started2007-03-19T09:13:12Z<p>Juliet: </p>
<hr />
<div>==Equipment: Picking The Right Components==<br />
<br />
[http://linuxmce.com/index.php?section=LinuxMCE_system_overview Equipment overview]<br />
<br />
===The Core===<br />
<br />
Most important, is the "core". This is the main LinuxMCE server that runs all the applications. The commercial version uses a high-end server with RAID-5 storage. You'll probably get by with a good Pentium 4, least 80 GB of storage, two network cards (Gigabit ideally).<br />
<br />
It would be best to use a dedicated core, which means you'll end up putting this computer somewhere out of the way and not connecting a monitor to it. If you are using only one computer for your system, then you've chosen the "hybrid" system, which means that your core will also be your media player. You'll definitely need a monitor or TV for this system!<br />
<br />
===Media Directors===<br />
<br />
Note that each media director will need a Bluetooth dongle if you want to use a Bluetooth mobile phone as the remote in that area. To control your a/v equipment using infrared, you will need an interface module (global cache gc100). This interface module also gives you extra serial ports. So, in this example, the TV is controlled by infrared, and the receiver by RS232.<br />
<br />
[[Sound Cards]]<br />
<br />
[[Network_Boot_for_Media_Directors]]<br />
<br />
===Orbiters===<br />
<br />
===Network Attached Storage===<br />
<br />
An alternative to having a lot of memory in the core is to have a small hard drive for the core and store all your files on a [[Network Attached Storage|network attached storage]] (or NAS) server. The [http://www.buffalotech.com/products/product-detail.php?productid=97 Buffalo TeraStation] is 1.0 TeraByte RAID-5 and under $1K(US). Having a NAS will allow you to not lose your precious media files. You'll likely want the larger storage for your collection of music and videos. Keep in mind that your LinuxMCE system can also record TV shows (using MythTV) and video from your security cameras (using Motion).<br />
<br />
===Additional Devices===<br />
<br />
[[Recommended_Accessories]]<br />
<br />
Optionally, you may want the aforementioned home automation devices for controlling your lights. Also, optionally, you may want security cameras, plasma screen TV, a streaming media music player such as the [http://www.slimdevices.com Squeezebox], an alarm system with a serial interface, etc. Some of these devices need ''another'' device called a [http://www.globalcache.com/products/gc-index.html gc100]. This allows devices that communicate using a serial port (good alarm panels) or infrared (like your TV) to connect to the network and talk with your LinuxMCE core.<br />
<br />
===Location Considerations===<br />
<br />
This section has been moved to [[Choosing_Locations]].<br />
<br />
===Wiring Considerations===<br />
<br />
[[Wiring Considerations]]<br />
<br />
Once LinuxMCE is installed, just treat it like an appliance--plug it in, turn it on, and leave it alone. The great news is that don't need to install any software on the media PC's that will be used as media directors.<br />
You can leave whatever operating system is on there, such as Windows, untouched-they will do a [[Network Boot for Media Directors]] when you want to use them as a Media Director.<br />
<br />
The only special requirement is that the LinuxMCE Core needs to be your DHCP server so that it can offer the plug-and-play and network boot services. You cannot have 2 DHCP servers on the same network (not easily at least). In our Core, we provide [[Why dual network cards?|dual network cards]] one for the "external" network, where your internet is connected, and one for the "internal" network within the house, and into which all your devices are connected. This makes LinuxMCE act as a firewall, and allows it to co-exist with another DHCP server. If you have a DSL or cable modem that needs to be the DHCP server it won't be a problem--just plug it into the "external" port. LinuxMCE's DHCP server only operates on the "internal" one. However, if you have only 1 network card in the Core, you will need to be able to give it a static IP and disable the DHCP server in your DSL/Cable modem. Otherwise you will have to disable LinuxMCE's DHCP server and lose a lot of functionality.<br />
<br />
==Setting Up The Hardware==<br />
<br />
There are many ways to install LinuxMCE, and lots of options for equipment. However, the key components in a LinuxMCE system are the Core (the PC acting as the master server), Media Directors (media PC's connected to your TV's), and Orbiters (remote controls-web pads, pda's, mobile phones, etc.).<br />
<br />
===A Dealer Core===<br />
<br />
<p>If you buy from a Pro dealer, they will come to your home, analyze your situation, and make the decision with you. They will offer a complete, custom-installed solution.</p><br />
<p>If you buy from regular dealer, the first thing you will need to get is 1 Core. This is the brains behind the whole system, and it must run 24/7 since it will be providing all the services in your home, like the security system, media server, phones, etc. Also, all the media in the home (movies, music, etc.) will be stored on the Core. Most dealers sell Cores that are commercial servers with massive storage and full redundancy so they will run non-stop without incident. Since these Cores are often bulky, they are normally tucked away in a wiring closet or equipment rack. However, you can also hook the Core up to your TV and use it as your first media director--we call this a hybrid. Prices for Cores vary from under $1,000 for a basic Pentium PC, up to $7,000+ for a dual Xeon model with 4TB of storage. See our ***Core comparison*** guide for help deciding.</p><br />
<p>Then for each TV area where you want media you will need a media director. It's easy to add or remove media directors at any time. See our ***media director comparison guide***.</p><br />
<p>For Orbiters you can either buy touch-screen tablets from a LinuxMCE dealer ***comparison guide***. Be sure to get a Bluetooth-enabled Symbian http://www.series60.com phone from your local mobile phone carrier--they make great remote controls.</p><br />
<br />
<p>Also view our http://www.linuxmce.com/wiki/index.php/LinuxMCE:Compability to see what 3rd party devices will work with LinuxMCE, like lighting control systems, cameras, alarm panels, etc.</p><br />
<br />
=== I will use my own PC's ===<br />
<br />
<p><b>First a warning</b> LinuxMCE is Linux-based, but don't worry. Sometimes drivers are not available for Linux as soon as they are for Windows. Particularly, if you bought some new, exotic hardware there may not be drivers. If you're looking to get some new hardware to run LinuxMCE you may want to check sites like http://www.linuxcompatible.org to be sure it's supported under Linux before you buy. Or maybe post a "will this work?" message in our forum. If you already have the hardware it can't hurt to try.</p><br />
<br />
<p>You will need one PC to run the <b>Core</b> software. Although you could install the Core on top of your existing Windows/Linux o/s, or build from source, it will be tricky and you will miss out on a lot of features. You really needs to use our own distribution because, in addition to our own software, LinuxMCE also includes lots of other open source projects, like Asterisk, Firefox, Xine, VideoLan, etc. We built "wrappers" for all of them which is how we get them all to work together seamlessly. For example, if you start watching a movie in 1 room, LinuxMCE will use Xine on that local media director. Use the orbiter to move that movie to 2 rooms, and LinuxMCE seamlessly detects the network capabilities (multi-cast switch, etc.), moves the video source to the Core using VideoLan, broadcasts to both rooms, uses VLC to do the rendering and changes the UI on the remote controls. If you use the vanilla packages from, say Fedora, none of that will work. Plus, a lot of LinuxMCE's more advanced, kernel-level modules, like plug-and-play, bandwidth shaping to ensure your phone calls are clear, network boot, and so on may not work on other Linux distributions and definitely cannot be done under Windows.</p><br />
<br />
<p>Note this PC should always be left on since it becomes the 'brains' for the whole house and all the other pieces won't function unless they can find the <b>Core</b>. In our commercial product, the Core is a fail-safe, redundant server.</p><br />
<br />
<p>There is only <b>one special requirement</b>. The Core needs to be your DHCP server so that it can offer the plug-and-play and network boot services. You cannot have 2 DHCP servers on the same network (not easily at least). If you have another DHCP server (like a cable/dsl modem), we recommend your Core have dual network cards: one for the "external" network, where your internet is connected, and one for the "internal" network within the house, and into which all your devices are connected. This makes LinuxMCE act as a firewall, and allows it to co-exist with another DHCP server. If you have a DSL or cable modem that needs to be the DHCP server it won't be a problem--just plug it into the "external" port. LinuxMCE's DHCP server only operates on the "internal" one. However, if you have only 1 network card in the Core, you will need to be able to give it a static IP and disable the DHCP server in your DSL/Cable modem. Otherwise you will have to disable LinuxMCE's DHCP server and lose a lot of functionality.</p><br />
<br />
<p>You can also put other cards in the Core, such as analog phone line interfaces from www.digium.com for the phone system or analog video capture cards for surveillance cameras. You can put the PVR/satellite capture cards in the individual media PC's, or you can put several in the Core, which will share the video throughout the house.</p><br />
<br />
<p>Wherever you have a TV/Stereo you can use a PC or thin-client as the Media Director--it doesn't need to be on all the time and there's no software to install since they will network boot off the Core. Just be sure it supports has a good sound card, a Linux-compatible video card, supports PXE network boot (nearly all recent motherboards do), and optionally a PVR card. To use the Bluetooth mobile phones as remote controls, add a USB Bluetooth Dongle for each media director (around $25). All the media directors will report the signal strengths of all the mobile phones--this is how the Core figures out what room you're in. Since all resources in the whole house are shared, you will be able to control any device in any room from anywhere--as long as you're within Bluetooth range of any media director (about 10m or 30feet), you will have control over everything in the house. You can also use low-cost network audio players, like the Squeeze Box, wherever you want to add music.</p><br />
<br />
<p>To control the system, you can use the PC's mouse and keyboard, or an infrared remote, or run the Orbiter software on your mobile phones, webpads and PDA's.</p><br />
<br />
Also view our http://www.linuxmce.com/wiki/index.php/LinuxMCE:Compability to see what 3rd party devices will work with LinuxMCE, like lighting control systems, cameras, alarm panels, etc.<br />
<br />
===A Dedicated Core===<br />
<br />
<p>The Core is the central point of the Linux MCE system and runs applications and daemons needed for the other devices to exchange messages. A dedicated core will run only the backed applications and will not provide any fronted except the web interface, this means you won't act as a media center. You'll need to use Media Directors to be able to play movies, listen to music and watch TV. This kind of setup is recommended when you have lot of extra devices, this way the back end applications will have full access to Core's resources.</p><br><br />
<br />
[[Image:Diagram1.jpg|200px]]<br />
<br />
===A Dedicated Hybrid===<br />
<br />
A "hybrid" just means the computer that is running is the "Core" software is also running the "Media Director" software-you use the Core as a Media Director. The only reason we don't recommend this in our high-end installations is because a computer suitable for a Core is usually a pretty massive box with major hard drive capacity and rather noisy, so it's shoved away in the wiring closet, rather than sitting next to a TV like a Media Director would. However, you can use a regular PC as the Core + Media Director (Hybrid) also. Just remember that it will need to always be on since the Core software is what controls everything in the house.<br />
<br />
[[Image:Diagram2.jpg|200px]]<br />
<br />
Be sure you complete the installation of your Core/Hybrid before trying to boot the media directors.<br />
<br />
==Installation==<br />
<br />
===Pre-installation Setup===<br />
<br />
'''Note:''' During the installation, you may have some difficulties that can be avoided by following the advise below:<br />
<br />
# Make sure you have an Internet connection prior to starting! After LinuxMCE installs, it will need to access the Internet and download the latest patches. (More often than not, you want this!)<br />
# Confused about which internet adapter should be your "main" when that option is given to you during the install? Just click on one. You have a 50/50 chance of getting it right. You can easily change it later in the LinuxMCE-admin pages by selecting "Advanced -> Network -> Network Settings" from the drop-down and clicking "Swap Interfaces".<br />
# Use the core's DHCP server to give machines on your network a dynamic IP address. Turn off the DHCP server on any other devices you may have on your network! This is very important! You probably already have your home router giving out addresses. Check the configuration and turn that feature off. LinuxMCE uses the DHCP requests from machines that come online to figure out what they are and what to do with them.<br />
# A map of your home. This is actually a very important step because LinuxMCE seems to need the map to properly finish the installation of some devices. It is easy to create a map using any drawing software or just draw one by hand and scan it. You don't need anything fancy, just some squares representing your different rooms. If the file is too big, LinuxMCE will scale it to fit. You can always upload a new map later on when you feel like being more creative. You can also make multiple maps, say, one for each floor or section of your house. This will all make more sense later when you get into configuring the devices.<br />
<br />
===Download===<br />
Download the Ubuntu installer and optional packages ISO from [http://www.linuxmce.com/http://linuxmce.com/wiki/index.php/Download_Instructions here].<br />
<br />
===Software Installation===<br />
<br />
You can find Steps for installing Linux MCE on an Ubuntu 6.10 system [http://www.linuxmce.com/wiki/index.php here].<br />
<br />
===Finalize The Install===<br />
<br />
<p>After you have set everything up, you should do a full reboot of the "LinuxMCE universe", meaning rebooting the Core/Hybrid plus any media directors.<br />
You can do this by choosing "Restart" from the LinuxMCE Admin site wizard (the last option), or from any orbiter or media director by clicking the LinuxMCE logo on the main menu and choosing "Reboot Core".</p><br />
<p>If your media directors support both software power off and wake on lan, the core will turn them off before it reboots itself, and will turn them back on when it has finished booting up. If not, you may need to reboot the media directors manually by cycling power on them. Note that you should not turn the media directors on until the Core/Hybrid has finished booting up.</p><br />
<br />
==Configuration==<br />
<br />
===Tell LinuxMCE About Your Home===<br />
<br />
[[Tell LinuxMCE about your home]] shows you how to use our LinuxMCE Admin wizard. In about 2 hours you can have everything setup--the whole-house media server, full control all your lights, climate, and tv/hi-fi gear, the phone system, follow-me, everything. It's quick, painless, and non-technical.<br />
<br />
===Adding Other Devices===<br />
<br />
If you chose a "Core", not being used as a Media Director, then it will boot up and you will see a simple menu like this:<br><br />
[[Image:Console.jpg|200px]]<br />
<em>LinuxMCE Core; After boot-up menu</em><br><br><br />
<p>You don't need to do anything. Your Core is up and running. Just make note of the IP address - you will need it to configure the system. </p><br />
<p>If you chose a "Hybrid", that is you are using your Core as a Media Director, it will boot up to the same welcome menu as any media director. Note that the welcome menu will appear on the first boot. After that, it will boot to the normal main menu, however, you can click the LinuxMCE logo in the lower left corner of the main menu to see the advanced options, including all the buttons on the welcome menu.</p><br><br />
[[Image:Welcome.jpg|200px]]<br />
<br />
<p>You need a web browser to configure your LinuxMCE system using the built-in [[LinuxMCE Admin Website]]<br />
Since the Hybrid + Media Directors have one built in, you can just click the "LinuxMCE Admin" website to bring it up directly on the Hybrid. Or, from any web browser in your home, go to the URL: http://myip/linuxmce_admin where myip is the IP address of the<br />
Core/Hybrid. <br />
Login then click [[Wizard Pages|Wizard]]. You will see the following screen.</p><br />
[[Image:Wizard.jpg|200px]]<br />
<br />
<p>Follow each of the links in the left panel to choose your basic settings, add the devices, scenarios, and event handlers. <br />
Here's an example for setting up an ultra low-cost smart home setup based on X10. The equipment we mention will cost under $1,000, although the procedure is exactly the same with a $100,000 high-end based on Lutron, Vantage, EIB, etc. So, please read the example regardless of your system type, so you understand the techniques.</p><br />
<p><b>EXAMPLE: Adding other devices</b></p><p>Example:<br />
You have 2 gc100's which give you Infrared control of you're a/v equipment, extra serial ports to plug other stuff into, ttl inputs and relays. You have some tv's and stereo's to control, and also a CM11A module to control X10 devices, plus some X10 lights and thermostats.<br />
You will plug the CM11A into one of the rs232 serial ports on the gc100. You also have an alarm panel with a serial interface, some squeeze box audio players, and some network cameras.</p><br />
<br />
<p>After specifying [[Basic Info]] on the first couple wizard pages, like family members and rooms, you get to [[Interfaces]].<br />
Here you add all the devices that are used to interface with, or control other devices. So, the gc100 is an interface device, but the tv's and stereo's it controls are on the a/v page. The CM11A, Vantage, Lutron, etc. are also interfaces, the lights, blinds, drapes, etc. they control are on the [[Lights|lighting page]]. The alarm panel is an interface, the motion, glass break, smoke alarms, etc., are on the [[Security]].<br />
Some home automation devices do not require an interface, some do. An IP-based camera does not require an interface device-add it directly to [[Surveillance Cameras]].<br />
Analog cameras do need some sort of interface device, like a camera capture board, which you must first add to the interfaces page. Add the interface devices first on the interface page, and then the devices they control on the respective page. If you want to add EIB lights (on the lights page), you won't be allowed to do that until you first add the EIB interface on the interfaces page, because an EIB light cannot be used with an interface. If you add interfaces for both an EIB Lighting system, and an X10 lighting system, then on the lighting page you will be able to add both types of lights, and the 'Controlled Via' field will show you what interface is being used.</p><br />
<p>Back to our example: Plug one of your gc100's into the network, and click the 'add gc100' button on the interface page. gc100's are treated special because they are IP-based, but their network configuration is a bit different and does not allow them to be plug-and-play. Once you got the message that it was found and configured, click on the Interfaces page again--now you'll see it there. Maybe give it a descriptive name so you can remember which is which. Now plug in the 2nd gc100, and repeat.<br />
Next choose 'Add Devices' and add the CM11A. Like all RS232 devices, it is not plug and play, you must add it manually. Repeat for the alarm panel. In both cases, the Controlled Via devices is the Core, since that's where the software drivers will be run. But, when you go to choose the port, it only shows the Core's internal serial ports, and you want to plug it into one of the ports on the gc100. So, click 'Wizard', 'Restart' and 'quick reload router'. That causes the DCE Router to reload the list of devices in the house so it sees the new gc100's you added, and adds the ports. Refresh the Interfaces page, and now you can choose the gc100 ports for the CM11A and alarm panel.</p><p>Next, add your tv's and stereo's on the [[AV Devices]] and indicate how they are connected (which AV inputs). If your model is not in the database you will need to add it. If the I/R codes for your device aren't listed or don't work, you will click the A/V properties button and either [[Learning/typing my own code|learn them]] using the gc100's learner (plug it into serial port 1 and click 'learn'), or [[Learning/typing my own code|copy+paste the I/R codes in pronto format]] from a source like www.remotecentral.com. Your devices and I/R codes will automatically be sent to LinuxMCE and added to the master database for other users unless you uncheck the box. In the 'controlled via' chose whichever one of the gc100's has the infrared emitter attached for that device. Turn your Squeeze Boxes on, set the network to DHCP, and plug them in. LinuxMCE will automatically recognize them and configure them. You will see a confirmation message and be asked to pick the room they're in. Refresh the A/V page to see the Squeeze Boxes and indicate how you connect them to your stereo system.</p><br />
<br />
<p>On the [[Media Directors]] and [[Orbiters]] page, be sure your settings are correct. Then on the [[Lights]] and [[Climate]] pages, add all your X10 lights/thermostats. The 'Controlled Via' is the cm11A device. On the security page, add all your motion detectors, smoke alarms, etc. The 'Controlled Via' is the alarm panel. <br />
On the [[Floorplans]], drag and drop your devices on the maps you upload. You'll need to do a 'regen orbiter' followed by a 'quick reload router' before you can use the floorplans.</p><br />
<br />
<p>Now let's test the devices. Do another 'quick reload router' so DCERouter sees these new devices. Go back to a device, like a light, click 'ADV' to go to the advanced page, or go there manually by choosing [[Devices]] from the menu. Click 'Send command to device', and choose a command. If it doesn't respond, go to 'Advanced', 'Logs' and check the logs for the interface, the CM11A in this case.</p><br />
<br />
===Scenarios, Events & Security===<br />
<br />
<p>In the [[Scenarios]] page, add the scenarios, or buttons, you want for each room. Like a Lighting scenario in the Bedroom called 'Go to sleep' which dims the lights, or a security scenario in the living to view a camera. When you do a 'quick reload router', DCERouter will automatically add Media Scenarios for each room for whatever media devices are in there. But your new scenarios are not visible on the Orbiter until you regenerate--see the note below in 'Using LinuxMCE with an Orbiter'. Next add [[Events]], in other words, when something happens (a motion detector is tripped, the sun sets, etc.) you want LinuxMCE to do this (turn on a light). Also set security options, like how you want to be notified when something happens in the house. Each page has context sensitive help to explain everything. They will take effect next time you reboot or 'quick reload router'.</p><br />
<br />
===Configuring Myth TV===<br />
<br />
This section has been moved to [[Setting up MythTV]].<br />
<br />
===Upload Your Media===<br />
<br />
<p>There will also be Microsoft Windows compatible network shares on the Core or Hybrid (uses Samba) . There is a "public" share for putting all files that the whole family can share--movies, music, etc. And there is a private share for each family member. To access these network shares in Windows, choose Start, Run, and type \\ plus the IP address of the Core or hybrid. <br />
<br />
For example: \\192.168.80.1 Note that if you add new family members, their network share will not be available until after you reboot the Core/Hybrid. Once you copy your media into the appropriate folder, you can go into the LinuxMCE Admin site, choose "Files &amp; Media" and "Media Files Sync" to be sure your media is in the database, add attributes (artist, actor, etc.), and choose cover art.</p><br />
<br />
==Using LinuxMCE==<br />
<br />
This section has been moved to [[Using LinuxMCE]]. In 10 minutes you'll be up to speed and using all of LinuxMCE's features.<br />
<br />
<p><b>Using LinuxMCE with an Orbiter</b></p><br />
<p>Orbiter is just our way of saying remote control. All the Media Directors run an on-screen Orbiter, like the one below. Choose options on the on-screen orbiter with a keyboard/mouse attached to the media director, or with an infrared remote control. The Orbiter software runs on Linux, Windows and Windows CE, and can also be run on webpads and PDA's.<br />
Either way, it works exactly the same.</p><p>Below is the main menu. In the lower right are the [[Who Am I, Where Am I|'who' and 'where']] buttons. This indicates what room you are in, or want to control, and which family member is using the Orbiter. <br />
<br />
Touch either button if this isn't correct. Even if you are using an on-screen orbiter on the media director in the Living Room, for example, you can still change the location to the Bedroom. That means you would be using the Media Director in the Living Room as a remote control for the devices in the bedroom. Normally you don't change the location for an on-screen orbiter, since that device stays in a fixed place, but you do when you have a wireless web pad or pda you carry around.</p><br />
<br />
<p>The icons on the left all lead to a [[maps]], or floorplan, of your house showing your lighting, media, climate, telecom and security devices. Next to each of the floorplan icons are the scenarios for that category and the given room. In the scenarios section of the LinuxMCE Admin web site you create the scenarios for each room. You can have a lighting scenario called 'entertaining guests' that sets some lights, plays some background music, unlocks the door, and so on.<br />
<br><br />
[[Image:Main-menu.jpg|200px]]<br />
<br />
[[Image:Litscen.jpg|200px]]<br><br />
<br />
<p><b>NOTE:</b><br />
Many orbiters have relatively slow processors (like PDA's and phones) and may be running on slow wi-fi connections. So, the orbiters do not retrieve the large, full-size graphics, scaling them, drawing the text, and rendering everything on the fly. <br />
<br />
Rather all the graphics on your Orbiter are pre-scaled and pre-rendered by OrbiterGen. This means that if you add new scenarios or devices, or change floorplans or skins, you won't see them immediately on the Orbiter. You must go to the 'Advanced<br />
Options' page by clicking the LinuxMCE logo on the main menu, and choose 'Regenerate this Orbiter'. You'll be asked to wait about 60 seconds or so while the renderer creates new graphics, and then the Orbiter will reload.</p><br />
<br />
<p><b>Using your system with a Mobile Orbiter</b></p><br />
<p>Unless you turned off the "Auto Detect new Bluetooth Phones" option for the Media Director, compatible Bluetooth Mobile phones will automatically be detected when they are within range of any Media Director if they have Bluetooth turned on. A message will appear on all the Orbiters asking if it's a phone, and if so, to whom it belongs. Be sure you add your family members to the LinuxMCE Admin web site before doing this. Also, you may need to turn on the TV to see the message on the on-screen orbiter.</p><br />
<br />
<p>If you choose to install the software, the phone will beep. Just hit 'yes' to accept the software, and accept the default prompts.</p><p>The mobile orbiter works pretty much like a regular orbiter. The difference is that you don't usually need to worry about the "who" and "where" button. The "who" is determined when you chose to install the software. That family member is assumed to always be the user. And the "where" is automatic-whenever you come within range of a media director it will automatically switch to the correct location. You can press the button under the location if you want to control a location other than the one you are in.</p><br />
<br />
<p>Since the display is smaller, rather than showing all the scenarios on the main menu, you must first choose the category, like lighting, and then choose the scenario from the sub menu that appears. You can also hold the category to toggle 'follow-me' mode, indicated with a red F. So, if you hold down the 2 button, a red F appears for media. Now as you move around the house your media will follow you. All 5 categories have follow-me. <a<br />
href="http://linuxmce.com/index.php?section=how_LinuxMCE_works">Screen shots of the Mobile Orbiter</a> / [[User's manual]]</p><br />
<br />
==Troubleshooting==<br />
<br />
[[Testing_and_troubleshooting_devices]]<br />
<br />
<p>[[Development status for all modules|What works and what doesn't?]]</p><br />
<br />
<p>If you don't know Linux at all, you can go into the LinuxMCE Admin website and choose [[Outside Access]], and check the box to get outside assistance from LinuxMCE. You will pick a password you will give one of our tech support staff. When you do, your system will make a secure, encrypted connection back to our support staff giving us temporary access to your system. The connection is closed as soon as you uncheck the box. Without checking that box, nobody at LinuxMCE will have any access to your system.</p><br />
<br />
<p>This troubleshooting guide assumes some basic knowledge of Linux. In LinuxMCE, everything is a device. In the LinuxMCE Admin web site, you can choose [[Devices]], to see a list of all the devices in your installation. We recommend you don't make changes here - you can break things! The top level device is usually a computer, either the core or a hybrid or an orbiter. All the logs for the devices on that computer are stored in /var/log/pluto. You can ssh in to the core using the root password you chose, and from there, you can ssh to all the media directors-shared keys were automatically setup.</p><br />
<p>All current activity is logged in the file that ends in ".newlog". After a device crashes, its logs are moved into<br />
the ".log" directory. At bootup, all logs are archived into /var/log/pluto/archives.</p><br />
<br />
<p>All DCE devices are running in separate screen sessions. Type "screen -ls" to see all active screen sessions,<br />
and "screen -r PID" where PID is the id you saw in the -ls list to attach to the screen session. There is not much for you to do or see though since all the output on stderr and stdout is going into the logs. DCERouter is running the same way on your core or hybrid.</p><br />
<br />
<p>At bootup, all the scripts listed in the LinuxMCE Admin website under [[Boot Sequence]] are run. If any programs crash, a core dump file is put in /usr/pluto/coredump. At each reboot, any core dumps are archived with the log files in /var/log/pluto/archives. A database dump/configuration snapshot are also put in each archive. Archives are deleted after 5 days.</p><br />
<br />
<p>If you're a programmer, you can also check out our [[Programmer's Guide]]. If you want to learn about writing DCE Devices, see the [[DCE]].<br />
</p><br />
<br />
<br />
''Note:''<br />
<p>We had to leave some basic features out of the free version due to licensing issues. See [http://www.yttron.as.ro http://www.yttron.as.ro] for a list. If you purchase a pre-built LinuxMCE system, some or all of these technologies may be licensed and the license fee built into the purchase price. Before contacting LinuxMCE support to ask why something doesn't work, please refer to that site so you know what features were left out intentionally. Note that LinuxMCE does not encourage, endorse or support users adding 3rd party modules, nor did LinuxMCE develop those modules. If you choose to add 3rd party modules we suggest you first confirm they are legal in your area.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Getting_Started&diff=3553Getting Started2007-03-19T09:10:07Z<p>Juliet: </p>
<hr />
<div>==Equipment: Picking The Right Components==<br />
<br />
[http://linuxmce.com/index.php?section=LinuxMCE_system_overview Equipment overview]<br />
<br />
===The Core===<br />
<br />
Most important, is the "core". This is the main LinuxMCE server that runs all the applications. The commercial version uses a high-end server with RAID-5 storage. You'll probably get by with a good Pentium 4, least 80 GB of storage, two network cards (Gigabit ideally).<br />
<br />
It would be best to use a dedicated core, which means you'll end up putting this computer somewhere out of the way and not connecting a monitor to it. If you are using only one computer for your system, then you've chosen the "hybrid" system, which means that your core will also be your media player. You'll definitely need a monitor or TV for this system!<br />
<br />
===Media Directors===<br />
<br />
Note that each media director will need a Bluetooth dongle if you want to use a Bluetooth mobile phone as the remote in that area. To control your a/v equipment using infrared, you will need an interface module (global cache gc100). This interface module also gives you extra serial ports. So, in this example, the TV is controlled by infrared, and the receiver by RS232.<br />
<br />
[[Sound Cards]]<br />
<br />
[[Network_Boot_for_Media_Directors]]<br />
<br />
===Orbiters===<br />
<br />
===Network Attached Storage===<br />
<br />
An alternative to having a lot of memory in the core is to have a small hard drive for the core and store all your files on a [[Network Attached Storage|network attached storage]] (or NAS) server. The [http://www.buffalotech.com/products/product-detail.php?productid=97 Buffalo TeraStation] is 1.0 TeraByte RAID-5 and under $1K(US). Having a NAS will allow you to not lose your precious media files. You'll likely want the larger storage for your collection of music and videos. Keep in mind that your LinuxMCE system can also record TV shows (using MythTV) and video from your security cameras (using Motion).<br />
<br />
===Additional Devices===<br />
<br />
[[Recommended_Accessories]]<br />
<br />
Optionally, you may want the aforementioned home automation devices for controlling your lights. Also, optionally, you may want security cameras, plasma screen TV, a streaming media music player such as the [http://www.slimdevices.com Squeezebox], an alarm system with a serial interface, etc. Some of these devices need ''another'' device called a [http://www.globalcache.com/products/gc-index.html gc100]. This allows devices that communicate using a serial port (good alarm panels) or infrared (like your TV) to connect to the network and talk with your LinuxMCE core.<br />
<br />
===Location Considerations===<br />
<br />
This section has been moved to [[Choosing_Locations]].<br />
<br />
===Wiring Considerations===<br />
<br />
[[Wiring Considerations]]<br />
<br />
Once LinuxMCE is installed, just treat it like an appliance--plug it in, turn it on, and leave it alone. The great news is that don't need to install any software on the media PC's that will be used as media directors.<br />
You can leave whatever operating system is on there, such as Windows, untouched-they will do a [[Network Boot for Media Directors]] when you want to use them as a Media Director.<br />
<br />
The only special requirement is that the LinuxMCE Core needs to be your DHCP server so that it can offer the plug-and-play and network boot services. You cannot have 2 DHCP servers on the same network (not easily at least). In our Core, we provide [[Why dual network cards?|dual network cards]] one for the "external" network, where your internet is connected, and one for the "internal" network within the house, and into which all your devices are connected. This makes LinuxMCE act as a firewall, and allows it to co-exist with another DHCP server. If you have a DSL or cable modem that needs to be the DHCP server it won't be a problem--just plug it into the "external" port. LinuxMCE's DHCP server only operates on the "internal" one. However, if you have only 1 network card in the Core, you will need to be able to give it a static IP and disable the DHCP server in your DSL/Cable modem. Otherwise you will have to disable LinuxMCE's DHCP server and lose a lot of functionality.<br />
<br />
==Setting Up The Hardware==<br />
<br />
There are many ways to install LinuxMCE, and lots of options for equipment. However, the key components in a LinuxMCE system are the Core (the PC acting as the master server), Media Directors (media PC's connected to your TV's), and Orbiters (remote controls-web pads, pda's, mobile phones, etc.).<br />
<br />
===A Dealer Core===<br />
<br />
<p>If you buy from a Pro dealer, they will come to your home, analyze your situation, and make the decision with you. They will offer a complete, custom-installed solution.</p><br />
<p>If you buy from regular dealer, the first thing you will need to get is 1 Core. This is the brains behind the whole system, and it must run 24/7 since it will be providing all the services in your home, like the security system, media server, phones, etc. Also, all the media in the home (movies, music, etc.) will be stored on the Core. Most dealers sell Cores that are commercial servers with massive storage and full redundancy so they will run non-stop without incident. Since these Cores are often bulky, they are normally tucked away in a wiring closet or equipment rack. However, you can also hook the Core up to your TV and use it as your first media director--we call this a hybrid. Prices for Cores vary from under $1,000 for a basic Pentium PC, up to $7,000+ for a dual Xeon model with 4TB of storage. See our ***Core comparison*** guide for help deciding.</p><br />
<p>Then for each TV area where you want media you will need a media director. It's easy to add or remove media directors at any time. See our ***media director comparison guide***.</p><br />
<p>For Orbiters you can either buy touch-screen tablets from a LinuxMCE dealer ***comparison guide***. Be sure to get a Bluetooth-enabled Symbian http://www.series60.com phone from your local mobile phone carrier--they make great remote controls.</p><br />
<br />
<p>Also view our http://www.linuxmce.com/wiki/index.php/LinuxMCE:Compability to see what 3rd party devices will work with LinuxMCE, like lighting control systems, cameras, alarm panels, etc.</p><br />
<br />
=== I will use my own PC's ===<br />
<br />
<p><b>First a warning</b> LinuxMCE is Linux-based, but don't worry. Sometimes drivers are not available for Linux as soon as they are for Windows. Particularly, if you bought some new, exotic hardware there may not be drivers. If you're looking to get some new hardware to run LinuxMCE you may want to check sites like http://www.linuxcompatible.org to be sure it's supported under Linux before you buy. Or maybe post a "will this work?" message in our forum. If you already have the hardware it can't hurt to try.</p><br />
<br />
<p>You will need one PC to run the <b>Core</b> software. Although you could install the Core on top of your existing Windows/Linux o/s, or build from source, it will be tricky and you will miss out on a lot of features. You really needs to use our own distribution because, in addition to our own software, LinuxMCE also includes lots of other open source projects, like Asterisk, Firefox, Xine, VideoLan, etc. We built "wrappers" for all of them which is how we get them all to work together seamlessly. For example, if you start watching a movie in 1 room, LinuxMCE will use Xine on that local media director. Use the orbiter to move that movie to 2 rooms, and LinuxMCE seamlessly detects the network capabilities (multi-cast switch, etc.), moves the video source to the Core using VideoLan, broadcasts to both rooms, uses VLC to do the rendering and changes the UI on the remote controls. If you use the vanilla packages from, say Fedora, none of that will work. Plus, a lot of LinuxMCE's more advanced, kernel-level modules, like plug-and-play, bandwidth shaping to ensure your phone calls are clear, network boot, and so on may not work on other Linux distributions and definitely cannot be done under Windows.</p><br />
<br />
<p>Note this PC should always be left on since it becomes the 'brains' for the whole house and all the other pieces won't function unless they can find the <b>Core</b>. In our commercial product, the Core is a fail-safe, redundant server.</p><br />
<br />
<p>There is only <b>one special requirement</b>. The Core needs to be your DHCP server so that it can offer the plug-and-play and network boot services. You cannot have 2 DHCP servers on the same network (not easily at least). If you have another DHCP server (like a cable/dsl modem), we recommend your Core have dual network cards: one for the "external" network, where your internet is connected, and one for the "internal" network within the house, and into which all your devices are connected. This makes LinuxMCE act as a firewall, and allows it to co-exist with another DHCP server. If you have a DSL or cable modem that needs to be the DHCP server it won't be a problem--just plug it into the "external" port. LinuxMCE's DHCP server only operates on the "internal" one. However, if you have only 1 network card in the Core, you will need to be able to give it a static IP and disable the DHCP server in your DSL/Cable modem. Otherwise you will have to disable LinuxMCE's DHCP server and lose a lot of functionality.</p><br />
<br />
<p>You can also put other cards in the Core, such as analog phone line interfaces from www.digium.com for the phone system or analog video capture cards for surveillance cameras. You can put the PVR/satellite capture cards in the individual media PC's, or you can put several in the Core, which will share the video throughout the house.</p><br />
<br />
<p>Wherever you have a TV/Stereo you can use a PC or thin-client as the Media Director--it doesn't need to be on all the time and there's no software to install since they will network boot off the Core. Just be sure it supports has a good sound card, a Linux-compatible video card, supports PXE network boot (nearly all recent motherboards do), and optionally a PVR card. To use the Bluetooth mobile phones as remote controls, add a USB Bluetooth Dongle for each media director (around $25). All the media directors will report the signal strengths of all the mobile phones--this is how the Core figures out what room you're in. Since all resources in the whole house are shared, you will be able to control any device in any room from anywhere--as long as you're within Bluetooth range of any media director (about 10m or 30feet), you will have control over everything in the house. You can also use low-cost network audio players, like the Squeeze Box, wherever you want to add music.</p><br />
<br />
<p>To control the system, you can use the PC's mouse and keyboard, or an infrared remote, or run the Orbiter software on your mobile phones, webpads and PDA's.</p><br />
<br />
Also view our http://www.linuxmce.com/wiki/index.php/LinuxMCE:Compability to see what 3rd party devices will work with LinuxMCE, like lighting control systems, cameras, alarm panels, etc.<br />
<br />
===A Dedicated Core===<br />
<br />
<p>The Core is the central point of the Linux MCE system and runs applications and daemons needed for the other devices to exchange messages. A dedicated core will run only the backed applications and will not provide any fronted except the web interface, this means you won't act as a media center. You'll need to use Media Directors to be able to play movies, listen to music and watch TV. This kind of setup is recommended when you have lot of extra devices, this way the back end applications will have full access to Core's resources.</p><br><br />
<br />
[[Image:Diagram1.jpg|200px]]<br />
<br />
===A Dedicated Hybrid===<br />
<br />
A "hybrid" just means the computer that is running is the "Core" software is also running the "Media Director" software-you use the Core as a Media Director. The only reason we don't recommend this in our high-end installations is because a computer suitable for a Core is usually a pretty massive box with major hard drive capacity and rather noisy, so it's shoved away in the wiring closet, rather than sitting next to a TV like a Media Director would. However, you can use a regular PC as the Core + Media Director (Hybrid) also. Just remember that it will need to always be on since the Core software is what controls everything in the house.<br />
<br />
[[Image:Diagram2.jpg|200px]]<br />
<br />
Be sure you complete the installation of your Core/Hybrid before trying to boot the media directors.<br />
<br />
==Installation==<br />
<br />
===Pre-installation Setup===<br />
<br />
'''Note:''' During the installation, you may have some difficulties that can be avoided by following the advise below:<br />
<br />
# Make sure you have an Internet connection prior to starting! After LinuxMCE installs, it will need to access the Internet and download the latest patches. (More often than not, you want this!)<br />
# Confused about which internet adapter should be your "main" when that option is given to you during the install? Just click on one. You have a 50/50 chance of getting it right. You can easily change it later in the LinuxMCE-admin pages by selecting "Advanced -> Network -> Network Settings" from the drop-down and clicking "Swap Interfaces".<br />
# Use the core's DHCP server to give machines on your network a dynamic IP address. Turn off the DHCP server on any other devices you may have on your network! This is very important! You probably already have your home router giving out addresses. Check the configuration and turn that feature off. LinuxMCE uses the DHCP requests from machines that come online to figure out what they are and what to do with them.<br />
# A map of your home. This is actually a very important step because LinuxMCE seems to need the map to properly finish the installation of some devices. It is easy to create a map using any drawing software or just draw one by hand and scan it. You don't need anything fancy, just some squares representing your different rooms. If the file is too big, LinuxMCE will scale it to fit. You can always upload a new map later on when you feel like being more creative. You can also make multiple maps, say, one for each floor or section of your house. This will all make more sense later when you get into configuring the devices.<br />
<br />
===Download===<br />
Download the Ubuntu installer and optional packages ISO from [http://www.linuxmce.com/http://linuxmce.com/wiki/index.php/Download_Instructions here].<br />
<br />
===Software Installation===<br />
<br />
You can find Steps for installing Linux MCE on an Ubuntu 6.10 system [http://www.linuxmce.com/wiki/index.php here].<br />
<br />
===Finalize The Install===<br />
<br />
<p>After you have set everything up, you should do a full reboot of the "LinuxMCE universe", meaning rebooting the Core/Hybrid plus any media directors.<br />
You can do this by choosing "Restart" from the LinuxMCE Admin site wizard (the last option), or from any orbiter or media director by clicking the LinuxMCE logo on the main menu and choosing "Reboot Core".</p><br />
<p>If your media directors support both software power off and wake on lan, the core will turn them off before it reboots itself, and will turn them back on when it has finished booting up. If not, you may need to reboot the media directors manually by cycling power on them. Note that you should not turn the media directors on until the Core/Hybrid has finished booting up.</p><br />
<br />
==Configuration==<br />
<br />
===Tell LinuxMCE About Your Home===<br />
<br />
[[Tell LinuxMCE about your home]] shows you how to use our LinuxMCE Admin wizard. In about 2 hours you can have everything setup--the whole-house media server, full control all your lights, climate, and tv/hi-fi gear, the phone system, follow-me, everything. It's quick, painless, and non-technical.<br />
<br />
===Adding Other Devices===<br />
<br />
If you chose a "Core", not being used as a Media Director, then it will boot up and you will see a simple menu like this:<br><br />
[[Image:Console.jpg|200px]]<br />
<em>LinuxMCE Core; After boot-up menu</em><br><br><br />
<p>You don't need to do anything. Your Core is up and running. Just make note of the IP address - you will need it to configure the system. </p><br />
<p>If you chose a "Hybrid", that is you are using your Core as a Media Director, it will boot up to the same welcome menu as any media director. Note that the welcome menu will appear on the first boot. After that, it will boot to the normal main menu, however, you can click the LinuxMCE logo in the lower left corner of the main menu to see the advanced options, including all the buttons on the welcome menu.</p><br><br />
[[Image:Welcome.jpg|200px]]<br />
<br />
<p>You need a web browser to configure your LinuxMCE system using the built-in [[Pluto Admin Website]]<br />
Since the Hybrid + Media Directors have one built in, you can just click the "LinuxMCE Admin" website to bring it up directly on the Hybrid. Or, from any web browser in your home, go to the URL: http://myip/linuxmce_admin where myip is the IP address of the<br />
Core/Hybrid. <br />
Login then click [[Wizard Pages|Wizard]]. You will see the following screen.</p><br />
[[Image:Wizard.jpg|200px]]<br />
<br />
<p>Follow each of the links in the left panel to choose your basic settings, add the devices, scenarios, and event handlers. <br />
Here's an example for setting up an ultra low-cost smart home setup based on X10. The equipment we mention will cost under $1,000, although the procedure is exactly the same with a $100,000 high-end based on Lutron, Vantage, EIB, etc. So, please read the example regardless of your system type, so you understand the techniques.</p><br />
<p><b>EXAMPLE: Adding other devices</b></p><p>Example:<br />
You have 2 gc100's which give you Infrared control of you're a/v equipment, extra serial ports to plug other stuff into, ttl inputs and relays. You have some tv's and stereo's to control, and also a CM11A module to control X10 devices, plus some X10 lights and thermostats.<br />
You will plug the CM11A into one of the rs232 serial ports on the gc100. You also have an alarm panel with a serial interface, some squeeze box audio players, and some network cameras.</p><br />
<br />
<p>After specifying [[Basic Info]] on the first couple wizard pages, like family members and rooms, you get to [[Interfaces]].<br />
Here you add all the devices that are used to interface with, or control other devices. So, the gc100 is an interface device, but the tv's and stereo's it controls are on the a/v page. The CM11A, Vantage, Lutron, etc. are also interfaces, the lights, blinds, drapes, etc. they control are on the [[Lights|lighting page]]. The alarm panel is an interface, the motion, glass break, smoke alarms, etc., are on the [[Security]].<br />
Some home automation devices do not require an interface, some do. An IP-based camera does not require an interface device-add it directly to [[Surveillance Cameras]].<br />
Analog cameras do need some sort of interface device, like a camera capture board, which you must first add to the interfaces page. Add the interface devices first on the interface page, and then the devices they control on the respective page. If you want to add EIB lights (on the lights page), you won't be allowed to do that until you first add the EIB interface on the interfaces page, because an EIB light cannot be used with an interface. If you add interfaces for both an EIB Lighting system, and an X10 lighting system, then on the lighting page you will be able to add both types of lights, and the 'Controlled Via' field will show you what interface is being used.</p><br />
<p>Back to our example: Plug one of your gc100's into the network, and click the 'add gc100' button on the interface page. gc100's are treated special because they are IP-based, but their network configuration is a bit different and does not allow them to be plug-and-play. Once you got the message that it was found and configured, click on the Interfaces page again--now you'll see it there. Maybe give it a descriptive name so you can remember which is which. Now plug in the 2nd gc100, and repeat.<br />
Next choose 'Add Devices' and add the CM11A. Like all RS232 devices, it is not plug and play, you must add it manually. Repeat for the alarm panel. In both cases, the Controlled Via devices is the Core, since that's where the software drivers will be run. But, when you go to choose the port, it only shows the Core's internal serial ports, and you want to plug it into one of the ports on the gc100. So, click 'Wizard', 'Restart' and 'quick reload router'. That causes the DCE Router to reload the list of devices in the house so it sees the new gc100's you added, and adds the ports. Refresh the Interfaces page, and now you can choose the gc100 ports for the CM11A and alarm panel.</p><p>Next, add your tv's and stereo's on the [[AV Devices]] and indicate how they are connected (which AV inputs). If your model is not in the database you will need to add it. If the I/R codes for your device aren't listed or don't work, you will click the A/V properties button and either [[Learning/typing my own code|learn them]] using the gc100's learner (plug it into serial port 1 and click 'learn'), or [[Learning/typing my own code|copy+paste the I/R codes in pronto format]] from a source like www.remotecentral.com. Your devices and I/R codes will automatically be sent to LinuxMCE and added to the master database for other users unless you uncheck the box. In the 'controlled via' chose whichever one of the gc100's has the infrared emitter attached for that device. Turn your Squeeze Boxes on, set the network to DHCP, and plug them in. LinuxMCE will automatically recognize them and configure them. You will see a confirmation message and be asked to pick the room they're in. Refresh the A/V page to see the Squeeze Boxes and indicate how you connect them to your stereo system.</p><br />
<br />
<p>On the [[Media Directors]] and [[Orbiters]] page, be sure your settings are correct. Then on the [[Lights]] and [[Climate]] pages, add all your X10 lights/thermostats. The 'Controlled Via' is the cm11A device. On the security page, add all your motion detectors, smoke alarms, etc. The 'Controlled Via' is the alarm panel. <br />
On the [[Floorplans]], drag and drop your devices on the maps you upload. You'll need to do a 'regen orbiter' followed by a 'quick reload router' before you can use the floorplans.</p><br />
<br />
<p>Now let's test the devices. Do another 'quick reload router' so DCERouter sees these new devices. Go back to a device, like a light, click 'ADV' to go to the advanced page, or go there manually by choosing [[Devices]] from the menu. Click 'Send command to device', and choose a command. If it doesn't respond, go to 'Advanced', 'Logs' and check the logs for the interface, the CM11A in this case.</p><br />
<br />
===Scenarios, Events & Security===<br />
<br />
<p>In the [[Scenarios]] page, add the scenarios, or buttons, you want for each room. Like a Lighting scenario in the Bedroom called 'Go to sleep' which dims the lights, or a security scenario in the living to view a camera. When you do a 'quick reload router', DCERouter will automatically add Media Scenarios for each room for whatever media devices are in there. But your new scenarios are not visible on the Orbiter until you regenerate--see the note below in 'Using LinuxMCE with an Orbiter'. Next add [[Events]], in other words, when something happens (a motion detector is tripped, the sun sets, etc.) you want LinuxMCE to do this (turn on a light). Also set security options, like how you want to be notified when something happens in the house. Each page has context sensitive help to explain everything. They will take effect next time you reboot or 'quick reload router'.</p><br />
<br />
===Configuring Myth TV===<br />
<br />
This section has been moved to [[Setting up MythTV]].<br />
<br />
===Upload Your Media===<br />
<br />
<p>There will also be Microsoft Windows compatible network shares on the Core or Hybrid (uses Samba) . There is a "public" share for putting all files that the whole family can share--movies, music, etc. And there is a private share for each family member. To access these network shares in Windows, choose Start, Run, and type \\ plus the IP address of the Core or hybrid. <br />
<br />
For example: \\192.168.80.1 Note that if you add new family members, their network share will not be available until after you reboot the Core/Hybrid. Once you copy your media into the appropriate folder, you can go into the LinuxMCE Admin site, choose "Files &amp; Media" and "Media Files Sync" to be sure your media is in the database, add attributes (artist, actor, etc.), and choose cover art.</p><br />
<br />
==Using LinuxMCE==<br />
<br />
This section has been moved to [[Using Pluto]]. In 10 minutes you'll be up to speed and using all of LinuxMCE's features.<br />
<br />
<p><b>Using LinuxMCE with an Orbiter</b></p><br />
<p>Orbiter is just our way of saying remote control. All the Media Directors run an on-screen Orbiter, like the one below. Choose options on the on-screen orbiter with a keyboard/mouse attached to the media director, or with an infrared remote control. The Orbiter software runs on Linux, Windows and Windows CE, and can also be run on webpads and PDA's.<br />
Either way, it works exactly the same.</p><p>Below is the main menu. In the lower right are the [[Who Am I, Where Am I|'who' and 'where']] buttons. This indicates what room you are in, or want to control, and which family member is using the Orbiter. <br />
<br />
Touch either button if this isn't correct. Even if you are using an on-screen orbiter on the media director in the Living Room, for example, you can still change the location to the Bedroom. That means you would be using the Media Director in the Living Room as a remote control for the devices in the bedroom. Normally you don't change the location for an on-screen orbiter, since that device stays in a fixed place, but you do when you have a wireless web pad or pda you carry around.</p><br />
<br />
<p>The icons on the left all lead to a [[maps]], or floorplan, of your house showing your lighting, media, climate, telecom and security devices. Next to each of the floorplan icons are the scenarios for that category and the given room. In the scenarios section of the LinuxMCE Admin web site you create the scenarios for each room. You can have a lighting scenario called 'entertaining guests' that sets some lights, plays some background music, unlocks the door, and so on.<br />
<br><br />
[[Image:Main-menu.jpg|200px]]<br />
<br />
[[Image:Litscen.jpg|200px]]<br><br />
<br />
<p><b>NOTE:</b><br />
Many orbiters have relatively slow processors (like PDA's and phones) and may be running on slow wi-fi connections. So, the orbiters do not retrieve the large, full-size graphics, scaling them, drawing the text, and rendering everything on the fly. <br />
<br />
Rather all the graphics on your Orbiter are pre-scaled and pre-rendered by OrbiterGen. This means that if you add new scenarios or devices, or change floorplans or skins, you won't see them immediately on the Orbiter. You must go to the 'Advanced<br />
Options' page by clicking the LinuxMCE logo on the main menu, and choose 'Regenerate this Orbiter'. You'll be asked to wait about 60 seconds or so while the renderer creates new graphics, and then the Orbiter will reload.</p><br />
<br />
<p><b>Using your system with a Mobile Orbiter</b></p><br />
<p>Unless you turned off the "Auto Detect new Bluetooth Phones" option for the Media Director, compatible Bluetooth Mobile phones will automatically be detected when they are within range of any Media Director if they have Bluetooth turned on. A message will appear on all the Orbiters asking if it's a phone, and if so, to whom it belongs. Be sure you add your family members to the LinuxMCE Admin web site before doing this. Also, you may need to turn on the TV to see the message on the on-screen orbiter.</p><br />
<br />
<p>If you choose to install the software, the phone will beep. Just hit 'yes' to accept the software, and accept the default prompts.</p><p>The mobile orbiter works pretty much like a regular orbiter. The difference is that you don't usually need to worry about the "who" and "where" button. The "who" is determined when you chose to install the software. That family member is assumed to always be the user. And the "where" is automatic-whenever you come within range of a media director it will automatically switch to the correct location. You can press the button under the location if you want to control a location other than the one you are in.</p><br />
<br />
<p>Since the display is smaller, rather than showing all the scenarios on the main menu, you must first choose the category, like lighting, and then choose the scenario from the sub menu that appears. You can also hold the category to toggle 'follow-me' mode, indicated with a red F. So, if you hold down the 2 button, a red F appears for media. Now as you move around the house your media will follow you. All 5 categories have follow-me. <a<br />
href="http://linuxmce.com/index.php?section=how_LinuxMCE_works">Screen shots of the Mobile Orbiter</a> / [[User's manual]]</p><br />
<br />
==Troubleshooting==<br />
<br />
[[Testing_and_troubleshooting_devices]]<br />
<br />
<p>[[Development status for all modules|What works and what doesn't?]]</p><br />
<br />
<p>If you don't know Linux at all, you can go into the LinuxMCE Admin website and choose [[Outside Access]], and check the box to get outside assistance from LinuxMCE. You will pick a password you will give one of our tech support staff. When you do, your system will make a secure, encrypted connection back to our support staff giving us temporary access to your system. The connection is closed as soon as you uncheck the box. Without checking that box, nobody at LinuxMCE will have any access to your system.</p><br />
<br />
<p>This troubleshooting guide assumes some basic knowledge of Linux. In LinuxMCE, everything is a device. In the LinuxMCE Admin web site, you can choose [[Devices]], to see a list of all the devices in your installation. We recommend you don't make changes here - you can break things! The top level device is usually a computer, either the core or a hybrid or an orbiter. All the logs for the devices on that computer are stored in /var/log/pluto. You can ssh in to the core using the root password you chose, and from there, you can ssh to all the media directors-shared keys were automatically setup.</p><br />
<p>All current activity is logged in the file that ends in ".newlog". After a device crashes, its logs are moved into<br />
the ".log" directory. At bootup, all logs are archived into /var/log/pluto/archives.</p><br />
<br />
<p>All DCE devices are running in separate screen sessions. Type "screen -ls" to see all active screen sessions,<br />
and "screen -r PID" where PID is the id you saw in the -ls list to attach to the screen session. There is not much for you to do or see though since all the output on stderr and stdout is going into the logs. DCERouter is running the same way on your core or hybrid.</p><br />
<br />
<p>At bootup, all the scripts listed in the LinuxMCE Admin website under [[Boot Sequence]] are run. If any programs crash, a core dump file is put in /usr/pluto/coredump. At each reboot, any core dumps are archived with the log files in /var/log/pluto/archives. A database dump/configuration snapshot are also put in each archive. Archives are deleted after 5 days.</p><br />
<br />
<p>If you're a programmer, you can also check out our [[Programmer's Guide]]. If you want to learn about writing DCE Devices, see the [[DCE]].<br />
</p><br />
<br />
<br />
''Note:''<br />
<p>We had to leave some basic features out of the free version due to licensing issues. See [http://www.yttron.as.ro http://www.yttron.as.ro] for a list. If you purchase a pre-built LinuxMCE system, some or all of these technologies may be licensed and the license fee built into the purchase price. Before contacting LinuxMCE support to ask why something doesn't work, please refer to that site so you know what features were left out intentionally. Note that LinuxMCE does not encourage, endorse or support users adding 3rd party modules, nor did LinuxMCE develop those modules. If you choose to add 3rd party modules we suggest you first confirm they are legal in your area.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Features&diff=3544Features2007-03-19T09:03:11Z<p>Juliet: </p>
<hr />
<div>[http://linuxmce.com LinuxMCE] is filled with cool features. Since it has been started by a company and made open source, it is arguably the most advanced and polished home automation system available. From their website, "LinuxMCE is the only all-in-one solution for your home that seamlessly combines media & entertainment, home automation, security, telecom and computing.<br />
You can control your whole house with a mobile phone, a touch-screen tablet or a web-interface. A LinuxMCE system is like an appliance - not a computer. It is self-configuring, maintaining and updating. No technical skills are required to use or install LinuxMCE.<br />
LinuxMCE is above all simple. The devices are all plug and play. LinuxMCE is also an open platform, offering unlimited expansion potential, and requiring no special cabling.<br />
This is LinuxMCE: a complete, comfortable and secure solution for your home. "<br />
<br />
A list of features from the LinuxMCE website and additional ones that we think are important:<br />
<br />
==Orbiters==<br />
<br />
[[Orbiters]] are high-tech remote controls. LinuxMCE provides for multiple orbiter options such as a generic PC, wireless tablet PC, PDAs, mobile phones running Symbian or Microsoft Mobile, or through a web interface that can be accessed by any computer inside your network or through the Internet. (The web interface requires user authentication, but currently not with SSL.)<br />
<br />
Below are some possible Orbiter platforms:<br />
<br />
* [[WebDT 366]]<br />
* [[Samsung Q1]]<br />
* [[Asus R2H]]<br />
* [[TabletKiosk eo]]<br />
* [[Nokia 770]]<br />
* [[Pepperpad 3]]<br />
<br />
==Media Directors==<br />
<br />
[[Media Directors]] (MDs) can also be generic PCs, but are better when they have an output for a television set such as S-video or RCA jacks. Having a good sound card is also a good idea. The MDs play all your streaming music and video from the core, network attached storage (NAS), or any other MD in your home. Output to a TV and speakers for an awesome multimedia experience.<br />
<br />
Below are some possible Media Director platforms:<br />
<br />
* [[Generic PC]]<br />
* [[Mac Mini]]<br />
* [[aOpen MiniPC]]<br />
* [[ASUS DIGIMatrix]]<br />
* [[EPIAs Mini-ITX]]<br />
* [[Shuttle SFF]]<br />
<br />
==Network Attached Storage==<br />
<br />
You can extend your core's storage with a [[Network Attached Storage]] device, or NAS. LinuxMCE can recognize this and use the NAS for saving your files or reading from them (including your music and video collection).<br />
<br />
==[[Security]]==<br />
<br />
* Use Orbiters to arm, disarm, monitor sensors, and view video cameras.<br />
<br />
* Immediate notification of any alerts on your mobile phone with live video.<br />
<br />
* Auto arming/disarming of the alarm based on schedule or triggered events.<br />
<br />
* Mark rooms as off-limits to anyone but authorized persons.<br />
<br />
* The instant anything important happens at your home, such as a security breach, fire or even someone ringing the doorbell, your mobile phone will beep and show you a live video feed.<br />
<br />
* Because LinuxMCE is able to distinctly recognize each family member and determine who is coming and going, LinuxMCE can automatically turn the alarm off and unlock the door when it detects you approaching the house, and automatically lock and arm when everyone has left. You don't have to worry about forgetting to turn the alarm on.<br />
<br />
* Tell LinuxMCE that only certain people are allowed in certain rooms. When LinuxMCE detects the presence of an authorized person it will automatically shut off the alarm sensors in that room. It's fully automatic. If an unauthorized person enters, you will be notified on your mobile phone.<br />
<br />
* Tell LinuxMCE if you leave the children at home with a baby sitter. LinuxMCE will notify you whenever someone comes and goes from the house, and show you a picture so you can be sure there are no unauthorized visitors. You can push a button on your phone to turn on the surveillance cameras and check what's happening at any time.<br />
<br />
==[[Telecom]]==<br />
<br />
* Effortless video conferencing - answer and dial just like normal<br />
<br />
* Tie all your homes together as one phone system<br />
<br />
* Always routes your calls to the extension nearest you <br />
<br />
* LinuxMCE automatically turns all your TVs into video phones. If somebody calls you from a video phone, it rings on the phones in the house just like normal. You can transfer the call to someone else, whether or not they have a video phone. You can still put the call on hold, and pick it up on your mobile phone or cordless.<br />
<br />
* With LinuxMCE, whenever you're on the phone, the nearest Orbiter will automatically show you pictures of each family member. If you want to transfer, or conference, just touch the person's picture.<br />
<br />
* If you have multiple residences, just tell your LinuxMCE rep to join them. LinuxMCE will automatically sense what home you're in. Anytime someone calls any of your homes-anywhere in the world-the call is automatically put through, unless you're sleeping. LinuxMCE uses voice-over-ip, so there are no long distance charges.<br />
<br />
* LinuxMCE's 'follow-me' keep track of what room in the house you're in, and your phone calls automatically ring on the extension nearest you.<br />
<br />
* LinuxMCE remembers who normally calls for whom and route the call automatically, based on the caller ID. When your daughter's school friend calls, it will automatically ring in your daughter's room if that's where she is - without disturbing anyone else in the house. If she's out, it will go automatically to her mobile phone if you wish.<br />
<br />
* As you add names to your personal phone book, be sure to check off which ones are priority people, like friends and family. When you press the button on your mobile phone to go to sleep, LinuxMCE adjusts your phone settings. Somebody who calls will automatically get voicemail, except for your priority callers who will be told that you are sleeping, and given the option of waking you. If they choose to do so, LinuxMCE will put the call through to the phone by the bed so as not to disturb others in the house.<br />
<br />
==[[Automation|Home Automation]]==<br />
<br />
* Your mobile phone turns into a remote control for lights, climate, etc.<br />
<br />
* Effortless, "follow-me automatically" automation<br />
<br />
* Self-configuring and maintaining. NO programming or tech skills needed<br />
<br />
* Home automation systems are usually controlled by a slew of expensive touch-screen tablets needed everywhere you want control. Only LinuxMCE turns your mobile phone into a comfortable remote, making the tablets optional.<br />
<br />
* Your mobile phone not only becomes more comfortable and useable than any type of remote control on the market, it works anywhere in the world you have cellular data coverage. Control everything, monitor your cameras, accept deliveries, etc. It doesn't matter if you're in the living room or in Lithuania. When you're at home, the mobile uses Bluetooth to communicate. When you're away, it automatically switches to the cellular network.<br />
<br />
* LinuxMCE can recognize each family member and automatically set up the room according to his preferences. Just keep your mobile phone in your pocket. It compares the relative strengths throughout the house to calculate exactly where each family member is. It works for your lighting, climate, media, as well as security settings.<br />
<br />
* With LinuxMCE, everything is plug-and-play, self-configuring, and no programmer will ever come to your home. All you do is go to a simple web site, and answer multiple-choice questions about your lifestyle.<br />
<br />
* With LinuxMCE, you get zero-touch automation. If you have a DVD you want to watch, just put the disc in the nearest media director. LinuxMCE will analyze what type of disc it is, and setup all your TVs and stereo equipment automatically. LinuxMCE will even feed the DVD Menu directly to the nearest mobile phone or Orbiter. You don't have to touch a single button.<br />
<br />
==[[Multimedia]]==<br />
<br />
* Your media follows you around the house<br />
<br />
* Each family member can have both public and private media<br />
<br />
* Live video of favorite shows & channel history<br />
<br />
* LinuxMCE always knows what room each family member is in, and learns his favorite media (TV shows, music, etc.). Press the 'TV' button on your mobile phone. The nearest TV - no matter what brand - will automatically come on to your favorite show. 90% of the time you will not need to use the program guide or channel surf.<br />
<br />
* When you move around the house, all you do is hold down the media button on your mobile phone for 1 second, and a red "F" for 'follow me' appears. Now just wander around the house and whatever media you were enjoying - TV, DVD movie, music, radio, etc. - will follow you. It works individually for each family member. This is the ultimate convenience, and only LinuxMCE has it. To date, only a handful of super-rich individuals have spent millions for this luxury.<br />
<br />
* In case there are two people in the same room, LinuxMCE sets up the room for whoever entered first. If that person leaves the room, then LinuxMCE sets it up for the next person who is still in the room.<br />
<br />
* Whenever you choose to record or save any media - TV shows, DVD movies, music, etc. - you are given the option of making it public, so the whole family can enjoy it, or private, so only you can access it. When you first get your LinuxMCE system, just be sure to tell LinuxMCE who are the heads of the house. These people can view everybody's private media.<br />
<br />
* LinuxMCE learns each family member's favorite shows; when anybody presses the 'TV' button, LinuxMCE turns on the nearest TV, scans the current running programs, and automatically tunes to that person's favorite show. There's a full EPG too, but this is far more comfortable and convenient.<br />
<br />
* All media - music, movies, TV shows, home videos, etc. are stored on the LinuxMCE Core - the central server. The Core is powerful enough to handle dozens of simultaneous media streams. You'll never have to worry about a hard drive crash and losing your media. You have virtually unlimited capacity, and everyone in the family can enjoy any media anywhere, anytime.<br />
<br />
* The LinuxMCE Core distributes all the media digitally. This means you do not have to tear open your walls to run extra cables, plus the media can go from anywhere to anywhere with absolutely no loss of quality.<br />
<br />
==Personal Computing==<br />
<br />
* Perform basic computing without a mouse or keyboard<br />
<br />
* Powerful computing platform for advanced users<br />
<br />
* Automatically joins multiple homes together as one network<br />
<br />
* Every LinuxMCE Media Director has a full computer built-in, and comes with a wireless keyboard & mouse so you can run all your favorite software. Today's high-def TVs are actually great for computing because of the fantastic picture quality. So, if you want to check the weather or the latest news, just hit a button on your mobile phone and the page will show up on the TV.<br />
<br />
* If you are a PC power user, imagine having a server running multi Intel Xeon processors and a 10 terabyte (10,000 GB) RAID 5 array. Plus, each Media Director incorporates a high-powered PC inside with the latest hardware, such as a 200GB hard drive, up to an Intel Pentium 4 at 3.06Ghz Processor with 2 GB RAM. And you just press 1 button to switch between Linux and Windows. The Media Director also has video outputs for computer monitors, such as VGA and DVI, and the latest audio/video sub-system for use as a high-end gaming platform.<br />
<br />
* When you have multiple homes with LinuxMCE systems, they can all be joined as one. Every LinuxMCE Core will automatically create a VPN (virtual private network) connection to the others. It's completely safe and fully encrypted. The benefit is that you can go from one house to another and know that you will still have access to all your files no matter where you are without the hassle of copying them.<br />
<br />
* LinuxMCE automatically creates a network share for each family member so you can put all your normal computer files there, too. You can access any of your files anytime, anywhere - LinuxMCE automatically creates a password-protected personal web page for each family member.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Events&diff=3542Events2007-03-19T09:02:20Z<p>Juliet: </p>
<hr />
<div><p>Event handlers are tasks you want LinuxMCE to perform in response to particular events (like a sensor being tripped), or timed event (like do something every 10 minutes).</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Do_I_want_a_dedicated_Core%3F&diff=3541Do I want a dedicated Core?2007-03-19T09:01:21Z<p>Juliet: </p>
<hr />
<div>In LinuxMCE's whole house solution, you designate one computer to be the "Core" or brains for the whole house. You can then have any number of other computers acting as [[Media Directors|media directors]].<br />
<br />
You can install the Core software on your existing PC just like you would any other software, meaning the PC is non-dedicated. However you will lose a lot of the advanced benefits and features that a dedicated Core offers that can't be done with a regular Windows/Linux/Mac installation. For example, whole house plug-and-play lets you plug all sorts of devices anywhere into your home network--telephones, surveillance cameras, interface modules, audio players, etc.--and LinuxMCE will detect them and set them up automatically. It's like plug-and-play in Windows, but it extends throughout the whole house.<br />
<br />
Also, a dedicated Core offers all your Media Directors a [[Network Boot for Media Directors]] service. This means whatever computers you want to use as Media Directors can boot up the media director platform without using their own hard drive. A frequent complaint with media pc's is that when you want to watch tv or a movie you don't want to mess with a pc--you want an appliance that you hit "play" on the remote control and that's it. With network boot you get the best of both worlds. Hit a button on the remote and it boots up like a normal pc, like it does now--LinuxMCE won't change a thing. Hit another button and it turns into a media director appliance--no start menu, no software to install, no viruses to worry about. It maintains itself and will still work without interruption even if you crash your hard drive, get a virus, or mess up your Windows operating system.<br />
<br />
A dedicated Core also does hundreds of other tasks behind the scenes to make your experience better. For example, it automatically throttles the internet bandwidth when someone is using an internet phone or video conferencing so they have a smooth, uninterrupted conversation. And it sets up a web server, email interface and all sorts of stuff for you automatically.<br />
<br />
A dedicated Core or hybrid is also much easier to setup. Just put the Kick-Start CD in the drive and turn it on. It will "take over" the PC install and its own operating system. There's nothing for you to do, no software to install and it's self-configuring and maintaining. You can leave it on and forget about it, or if you're a Linux user, you can still use it as a regular pc. It's an Ubuntu PC and LinuxMCE's Core software runs in the background.<br />
<br />
The drawback with a dedicated Core is that you need to devote 1 computer to LinuxMCE since the Kick-Start CD will erase what's on the hard drive and install it's own operating system. If you don't do this, and choose a non-dedicated Core where you add LinuxMCE's software to your existing Windows or Linux PC installation, you may not get all the advanced features, and the setup may be more difficult since we cannot test all possible software/driver combinations.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Device_Templates&diff=3539Device Templates2007-03-19T09:00:29Z<p>Juliet: </p>
<hr />
<div><p>A "Device Template" is what defines a device, whereas a "Device" is a particular instance of a device installed in the home. So "Device Template" is the <b>master</b> record that everyone shares. For example, there will only be 1 Device Template for the "Sony XYZ-123" Television. You, and several others users may have this TV, and each of you will have your own "Device" that you give your own name, and which may have some settings of it's own. However, there is only 1 "Device Template" for that device.</p><br />
<p>Most users will never need to use the "Device Template" page unless they want to do development and make their own devices. If you do want to poke around in the Device Templates, be careful not to change anything unless you know what you are doing, since changing something here could cause your device to not function properly. All the settings for your device which you can change are set using the Wizard, or in the "My Devices" page.</p><br />
<p>If you make changes to the Device Template, this will affect your local system only. However, if you have fixed some errors, added functionality to an existing Device Template or created your own Device Template, you can use [[sqlCVS]] to merge those changes back into the master database so everyone can benefit from them. The same is true with everything in your local database--the user interface, even the online documentation you are reading now is editable. When you check-in changes using sqlCVS, sqlCVS will isolate those changes and notify the developer who is responsible for quality assurance for that section. Once the developer has confirmed the changes, he can have the changes merged back into LinuxMCE's main development database, which will eventually get propagated to the testing and release databases if the changes pass the tests.</p><br />
<p>We recommend that you do merge any changes you make locally to the Device Templates because if you do not, then sqlCVS will not update that Device Template with any changes that may have been made to the master database. Your local copy will then likely become out of date. Note that sqlCVS will notify you when it does an update if you have changed a Device Template that was also changed in the master database. You will have the option of over-writing your local Device Template with the master one, or keeping your modified local copy.</p><br />
<p>What is on the Device Template <i>list</i> page and how do I use it? What is on the Device Template <i>edit</i> page and how do I use it? How do I create my own Device Template? Tell me about DCE (Data, Commands & Events)</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=DHCP_Plug_and_Play&diff=3537DHCP Plug and Play2007-03-19T08:59:48Z<p>Juliet: </p>
<hr />
<div><p>LinuxMCE allows a user to plug in any type of device and automatically configures it and lets the user start using it right away without doing anything. The way this is accomplished is with an extension to the DHCP server. When a new device is plugged into the network and requests an IP address, this program connects to a central database to do a lookup of the device's unique MAC address to see what type of device it is. The database defines all the configuration data the device needs to run, and references the software drivers needed. This program then downloads and installs any needed software, adds configuration pages for the device to the user's [[LinuxMCE Admin Website]], and adds the device in the user's local database.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=DCE_Generator&diff=3535DCE Generator2007-03-19T08:59:07Z<p>Juliet: </p>
<hr />
<div><p>To create a new [[LinuxMCE DCE Devices]] to start receive commands immediately.</p><br />
<p>DCEGen creates a Command class that has stubs for all the commands you need to implement. The default implementation just echoes to the screen that the command was received and lists the parameters. The Command class will also have member variables for the device's data, and methods to call to fire events.</p><br />
<p>If you later change the device, adding commands, changing event parameters, removing data, etc., just re-run DCEGen. It will fix your project file with these changes. If you already began implementing the commands and changing the class that is not a problem. DCEGen will simply merge the changes in, creating new methods for new commands, and changing the declarations and definitions for commands that have changed. It will also re-write the 'Events' and 'Data' section each time since there is nothing for you to implement there.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Control_a_TV_or_cable/satellite_box&diff=3533Control a TV or cable/satellite box2007-03-19T08:58:01Z<p>Juliet: </p>
<hr />
<div><p><h1>How to set it up</h1></p><br />
<p>In the LinuxMCEAdmin website, go to Wizard, Devices, A/V equipment. If you haven't already added the TV and whatever cable/satellite box you use for the tuning, click 'Add Device'. Choose the manufacturer, category, and then model of the device. Then click 'Add Device'.</p><br />
<br />
<p>If your model is not in the list, then after choosing the manufacturer and category, type the model name in the box under the models column and click 'Add' to create your own Device Template, which means a definition of a device that explains the properties of this model. Be sure popups are not blocked--a popup window will appear asking how many tuners this TV has (see next paragraph for an explanation). After you add the Device Template for this model, then select it from the model list and click 'Add Device' to add it to your installation. Since this is a new Device Template, on the A/V equipment page be sure to click the 'A/V Properties' button for this device to tell LinuxMCE about this Device Template, such as what inputs it has, whether you will control it with infrared, and so on.</p><br />
<br />
<p>Note: You will see that a TV is actually treated as multiple devices: the display device, and also a separate device for the tuner(s) inside the TV. This may seem confusing, but it's necessary. Many TV's have multiple tuners, and different tuners may have different video sources; one may be hooked up to cable, and another one to an antenna. And those tuners use different inputs on the TV. Therefore, LinuxMCE treats the tuners as "embedded devices" within the TV. When you want to watch TV, you will actually be telling LinuxMCE you want to use a tuner within the TV. For example, you will say you want to use Tuner #1 (cable), or Tuner #2 (antenna), etc. Therefore when you add a new Device Template for a TV, LinuxMCE Admin will ask how many tuners it has. Receivers are treated the same way since they can also have multiple tuners inside, like FM, AM, Weather Band, Satellite, etc.</p><br />
<br />
<p>On the A/V equipment page you also need to specify the A/V Connections, also known as "Pipes". You can do it using the "Edit" link in the "Pipes" column, or do it graphically by drawing lines between your devices by clicking the "Connection Wizard" link. If you added a cable or satellite box, the video pipe from the box will be the TV that it's connected to, and you choose the input on the TV you used, such as "Video 2". If you want the sound to come out of the TV too, the audio pipe will also go to the TV on the same input. If you want the sound to come out of your receiver, then the audio pipe goes to the receiver. If you're not using an external satellite/cable box, but rather the TV's internal tuner, you'll see that the internal tuner already has an audio/video pipe to the TV. If you don't want the sound to come out of the TV's internal speakers but rather use a stereo receiver, then change the audio pipe for the tuner to go to the receiver instead.</p><br />
<br />
<p>The "Controlled Via" pull-down should be set to whatever device is going to be responsible for controlling this piece of equipment. If this is controlled via infrared the "Controlled Via" device is the infrared device you are using to control it (added on the Wizard, Devices, Interfaces page). If this a/v equipment is controllable by RS232 or USB, the Controlled Via should be the PC computer it is connected to. If it is controlled via Ethernet, it can be any computer on which you want to run the device driver, usually it's the Core.</p><br />
<br />
<p>If you have multiple TV sources in your home, such as Cable and Satellite, you may want to click the "Media Providers" link to specify the providers. This step isn't necessary. However if you do add Media Providers, then for each piece of a/v equipment that is a source device you can specify what Media Provider it uses (this box provides "Cable TV" and this "Satellite TV"). The advantage of doing this is that then follow-me media, move media and broadcast are more accurate. If LinuxMCE is able to know that you were watching channel 35 on a device that uses Media Provider "satellite tv", then when the user wants to move or broadcast this media to other rooms, LinuxMCE knows to find devices in those rooms that also use provider "satellite tv". Otherwise LinuxMCE may end up picking a cable tv device instead. If you only have one provider for tv then there is no reason to worry about specifying a provider.</p><br />
<br />
<p>Next go to the Wizard, Scenarios, Media Scenarios page. Every media scenario will appear as a button on the Orbiters, so we need to add a media scenario in the room (aka Entertainment Area) where you want to use this TV. Under 'Add Scenario' type the description you want on the button, such as "Live TV", "Cable, etc". Choose the Entertainment Area, or room, then choose the source device. This should be the tuner in the TV, or a satellite or cable box. Also choose the type of media, "Live TV" in this case. If there is more than one remote control interface that will wok with this device you'll have a pull-down for that too. The next time you regen the UI for this Orbiter (see Wizard, Devices, Orbiters), the button will appear.</p><br />
<br />
<p>After you add new devices, you need to go to Wizard, Restart and click "Quick Reload Router" so DCERouter starts using the new devices you just added.</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>Just touch the button you created with the Media Scenarios above. It will appear on all the Orbiters for the room (Entertainment Area) you added it to. LinuxMCE will automatically turn on all the appropriate devices and set their inputs based on the A/V connections you specified in LinuxMCE Admin.</p><br />
<br />
<p>If the A/V equipment is controlled in some way that LinuxMCE can get feedback from it, such as RS232 or Ethernet, then you can also physically turn on or adjust any relevant device and LinuxMCE will figure out automatically what you want to do. For example, if you turn on the satellite box by hand, LinuxMCE knows you want to use it and will automatically turn on the tv and receiver, set the inputs, and put the remote control on the orbiters for you. Or, if you switch the input on the receiver to "DBS", which your satellite box is connected, LinuxMCE also knows that means you want to watch Satellite TV and will set everything up for you. However this functionality is not possible with a/v equipment that is controlled via infrared since i/r is 1-way communication; LinuxMCE can only send it commands, but has no way to know when you are controlling it manually.</p><br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>The Media Scenario will send a "MH Play Media" command to the media plugin. The media plugin will then find a media handler plugin that knows how to handle that type of media. Tightly integrated media devices, like Xine or Myth, have their own media handler plugins that are intelligent and know how to do things like synchronize multiple rooms to the same media, move media between rooms and respect stopping/starting at the same place and so on. Generic A/V devices like TV's and satellite boxes are nearly always by the media handler "Generic NonLinuxMCE Media", which is built into the media plugin itself. This media handler is very simple--it just forwards the command to the device.</p><br />
<br />
<p>When a device gets an "ON" command, DCERouter router calls the function "HandleCommandPipes". This is what knows how to turn on all the devices and set their inputs based on the a/v pipes you specified on the a/v equipment page. This is also why the tuners need to be treated as separate emedded devices within the TV, since each one will use different inputs.</p><br />
<br />
<p>The table MediaType_DesignObj has the standard remote controls for each type of Media, and the table DeviceTemplate_MediaType_DesignObj has custom remote controls more appropriate for a given device. When adding the media scenario if there is more than 1 remote control that can be used to control this type of media on this device, the user can choose from the list.</p><br />
<br />
<p>The message translation class is used within the infrared devices (like gc100), and within GSD (generic serial device) to translate commands and handle things like toggle vs discrete inputs. Devices which are controlled using GSD and a serial/ethernet interface will fire events AV_Input_Changed and Device_OnOff which Media_Plugin has interceptors for and will use the a/v pipes to figure out what device you're trying to use.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Catalog_media_with_attributes&diff=3530Catalog media with attributes2007-03-19T08:55:21Z<p>Juliet: </p>
<hr />
<div><p><h1>How to set it up</h1></p><br />
<p>If you store attributes about your media, such as the actors in a movie, or the singer of a song, then it is easier to search for the media you want. If you have a Media Identification device in your system then new media you add may automatically be identified and have the attributes added automatically. The free version of the LinuxMCE system does not include such a device, read the [[Quick Start Guides]].</p><br />
<p>You can change the attributes yourself in the LinuxMCE Admin website by choosing "Files & Media" and "Media file browser".</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>Refer [[Watch/Listen to media stored on the Core]]</p><br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>Refer [[Watch/Listen to media stored on the Core]]</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Automatically_take_pictures_when_sensors_are_disturbed&diff=3522Automatically take pictures when sensors are disturbed2007-03-19T08:51:01Z<p>Juliet: </p>
<hr />
<div><p>The overall process of setting up a security system is explained [[Arm or disarm the alarm using the Orbiters]]. In LinuxMCE admin, choose wizard, security, security video links. Here is a matrix of all the security sensors and surveillance cameras. Check the boxes to indicate which cameras can view areas monitored by which sensors. Then whenever one of those sensors is triggered, whether or not that actually results in a security breach or notification, LinuxMCE will take a snapshot from those cameras at the moment the sensors are triggered. You can view this in LinuxMCE admin choosing security, alert logs. If the sensor does result in notifying you on your mobile phone, then LinuxMCE will send you a copy of the picture that it took at the time the sensors were triggered.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Advanced_Pages_Devices&diff=3520Advanced Pages Devices2007-03-19T08:49:49Z<p>Juliet: </p>
<hr />
<div><p>This page lets you edit all the settings for a device.</p><br />
<p><b>Description</b>: Is free-form. You can call the device anything you want.</p><br />
<p><b>Controlled via</b>: Choose the device that is responsible for controlling and/or starting this one, also known as the parent device. In the case of something like some infrared a/v equipment, this will be the interface module. For security sensors, motion detectors, etc., this is likely the alarm panel. For most software modules, it is the computer itself. The ***"Device Info"*** section should explain what is the appropriate controlled via device. To learn more about the concept and what this is for, ***click here---link to DCE section***.</p><br />
<p><b>Room</b>: The room where the device is normally located.</p><br />
<p><b>Entertain Areas</b>: If this device is media-related, choose all the entertainment areas in which this device will be used. [[Rooms]]</p><br />
<p><b>IP Address/Mac Address</b>: If the device connects directly to the network, you can supply this information here. If you leave it blank, and the core assigns an IP address automatically, the core will fill this in for you.</p><br />
<p><b>Ignore On/Off</b>: If checked, all 'on' and 'off' commands will be intercepted and not reach the device. You can check this if you want the device to stay on all the time, or turn it on and off manually.</p><br />
<p><b>Reconfigure device</b>: Refer to the *** device info *** to learn what effect this will have on this particular device. Most devices don't do anything with this.</p><br />
<p><b>Device Pipes Used</b>: Here you select what command pipes and connections this device has. The most common use is to show how a/v equipment is hooked up. Example: You have a DVD player. The audio output is connected to a stereo receiver on the input "DVD", and the video output is connected to a tv on the input "VIDEO 3". When you are using the DVD player, you are going to want all audio commands (like volume up/down) to go to the receiver, and all video commands (like brightness up/down) to go to the tv. And when you start using the DVD player, LinuxMCE should turn on the receiver and set it to the "DVD" input, and turn on the TV to the "VIDEO 3" input. So, you will create a pipe for this device to the TV. The Type is "video", the input on the TV is "VIDEO 3". In this case you would probably leave the output blank, since most DVD players do not require a command to set an output. But, if the DVD player would have multiple outputs, like Component, DVI, etc., you could select the appropriate output, say "Component". This means that when you start to use the DVD player, LinuxMCE will turn on the DVD player, the TV and the Receiver. It will set the Receiver to DVD, the TV to Video 3, and the DVD player to Component. Any audio commands will go to the receiver and video commands to the TV.</p><br />
<p><b>Groups</b>: You can create groups for your devices. The purpose is to be able to control all the devices in a group at once. Let's say you want all to be able to turn all your outdoor lights on and off at once. Of course you could create a lighting scenario that did this. But what if you want to do it interactively on the floorplan? The easiest way is to create a device group "Outside lights", and make all your outside lights members of that group. Then, when you go to the lighting floorplan, if you touch one of your outdoor lights you can control it individually, but if you touch it again you will control all the lights in the group. ***details***</p><br />
<p><b>Related Devices</b>: This is not used for more devices. If it is used, the ***device info*** section will explain how to use it.</p><br />
<p><b>Device Data</b>: Here are all the data parameters this device requires. These parameters were chosen by whoever created the Device Template. The manufacturer of the device should have provided a thorough explanation of what each parameter means, and this information will be shown here beside the parameters.****</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Active_sensors&diff=3517Active sensors2007-03-19T08:48:26Z<p>Juliet: </p>
<hr />
<div><p>Each sensor can be in one of 6 modes: disarmed, armed - away, armed - at home, sleeping, entertaining and extended away. When you set the house mode using the security panel, all sensors in the house are by default set to that mode. It is possible to arm zones separately, however, that is an advanced setting.</p><br />
<p>On this page you indicate which sensors are active when in the indicated mode. Note that you are not specifying HOW LinuxMCE will respond to the sensor. That is done elsewhere. On the Wizard/Event Handler/Respond to Events page you tell LinuxMCE how you want to respond to a fire, security breach, etc. You can see that when there is a security breach you want to sound a siren, turn on all the lights, sprinklers and TV's and play a menacing audio file. On the Wizard/Security/Notifications page you indicate how you want LinuxMCE to notify you of any security problems and who should be notified.</p><br />
that sensor is tripped and the sensor is "Armed".</p><br />
<p>LinuxMCE can also be put in "Monitor Mode", aka Baby Sitter mode. This is really a special, hidden mode that has nothing to do with the 6 security modes. You can turn monitor mode on whether the house is armed, disarmed, entertaining, etc. "Monitor Mode" means that everytime a sensor with monitor mode checked is tripped you will be notified on your mobile phone with a picture--whether or not it sounds an alarm. A common use of monitor mode is when you leave the children at home with a baby sitter. The fact that the house is in "Monitor Mode" is not indicated on the Orbiters anywhere. It is like a 'hidden' mode--the baby sitter will only see that the alarm system is disarmed, or armed at home, or whatever security mode you have chosen and will not know that the house is being monitored. The security system will still react like normal. Monitor Mode is just an additional layer. You can check off monitor mode, for example, for the primary door sensors. Then, even if those sensors are not armed and do not sound the alarm, you will still be shown a picture on your mobile phone whenever the sensor is tripped so you can be sure there are no unauthorized visitors. Just check "Monitor Mode" for every sensor you want to monitored when you leave the house in this mode.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Security_breach&diff=3515Security breach2007-03-19T08:47:09Z<p>Juliet: </p>
<hr />
<div>1. Add your ZWave lights<br />
<br />
2. Add the dsc panel.(''what is a dsc panel?'') Then add the alarm sensors.<br />
<br />
3. Turn on the Bluetooth mobile phone and enter the phone number for the phone (use a phone with service). Enter it like you would dial it.<br />
<br />
4. Add your Panasonic ip camera. It will ask which lights it can view and which sensors it’s close to. Associate it with the zwave light and an alarm sensor.<br />
<br />
5. Quick reload router, and arm the alarm (your default pin is 1234)<br />
<br />
6. Trip the sensor. Immediately the light associated with the sensor should come on and it should archive the camera video.<br />
<br />
7. You should hear a 30 second countdown, and then the TV turns on and plays the security breach video<br />
<br />
8. The mobile phone should ring and say ‘Security breach’ plus the name of the sensor, and offer to connect.<br />
<br />
9. When you say ‘yes’, you should see the WAP page with the description of the breach.<br />
<br />
10. If you hit the ‘talk’ button on the phone, the m/d’s should call you so you can speak through the house with the phone.<br />
<br />
11. Pressing the reset alarm button on the phone should reset the alarm<br />
<br />
12. in the LinuxMCE-admin web site should be a log of the breach with an archive of the video from the cameras.</div>Juliethttp://wiki.linuxmce.org/index.php?title=How_to_setup_Samba_with_two_workgroups%3F&diff=3513How to setup Samba with two workgroups?2007-03-19T08:46:02Z<p>Juliet: </p>
<hr />
<div>I have LinuxMCE hybrid in "LinuxMCE" workgroup. I have the rest of my windows computers on another workgroup. They seem not to see each other unless I do this :<br />
# add <br />
wins support = yes<br />
under [global] section in /etc/samba/smb.conf - it's even better if you change this in /usr/pluto/templates/smb.conf.tmpl<br />
<br />
# add Hybrid's IP as Wins server on all windows clients....</div>Juliethttp://wiki.linuxmce.org/index.php?title=Network_Storage&diff=3510Network Storage2007-03-19T08:43:58Z<p>Juliet: </p>
<hr />
<div>Summary: How Network Attached Storage (NAS) and Windows shares are made plug and play<br />
<br />
First, the detected event is fired.<br />
<br />
For a NAS this comes from dhcp monitor and has the ip/mac and plug and play plugin figures out what it is, like this:<br />
<br />
/usr/pluto/bin/MessageSend dcerouter 0 -1001 2 65 52 3 53 2 5 "00:0D:0B:99:10:43" 28 "192.168.80.7"<br />
<br />
For the “scan the network for windows shares” utility that always runs in the background, it explicitly sends a device detected event with the device template Generic File Server 1837, like this:<br />
<br />
/usr/pluto/bin/MessageSend dcerouter 0 -1001 2 65 52 3 53 2 49 1837<br />
<br />
Both the ‘generic file server’ and the nas devices like Maxtor & buffalo have a device data called “Pre Pnp Script”, which is set to: /usr/pluto/bin/CheckNASForPasswords.sh. This means that before actually creating the device, this script will be run and is expected to send a command CMD_Pre_Pnp_Script_Done which includes additional parameters. In the script the key thing is the: "182|1" change that 1 to a 0 if no password is required. Maybe we will need a different script for different NAS devices.<br />
<br />
After that script runs, if 182|1 was specified, the user will be prompted for the usernname and password, as per: Pnp_PreCreateOptions::OkayToCreateDevice with the screen: SCREEN_Get_Username_Password_For_Devices.<br />
<br />
Once the device is created, the configure script will be ran, for example: Configure_1794.sh for the Buffalo. This script should lookup the username and password for the device from the database and fire a 'device detected' for each network share, as follows:<br />
<br />
/usr/pluto/bin/MessageSend dcerouter X -1001 2 65 52 3 53 2 49 1768 55 "182|1"<br />
<br />
That that the X must be the device created above, since the file share will be a child of that. 1768 is the template for a samba share, 1769 for nfs. If the share does not require a password, leave off the 55 "182|1". If the username and password already specified in the database are valid for the share, then instead of 55 "182|1" do 55 "127|username|128|password".<br />
<br />
This will create the child device for each share and prompt the user if the username or password are needed.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Adding_support_for_floorplan_devices&diff=3507Adding support for floorplan devices2007-03-19T08:42:03Z<p>Juliet: </p>
<hr />
<div><br><br />
I needed support for brightness sensors - particularly to display them on floorplan with current values. Since this procedure probably resembles adding support for other devices too, I'm posting my notes...<br />
<br><br><br />
Major steps :<br />
<br />
1. create proper template for device (watch proper category and parent settings) <br><br />
2. create coresponding event, that will be used to report current values for floorplan device' state <br><br />
3. add proper icon and other data in database <br><br />
<br><br />
<br><br />
Since steps 1.-3. were already made for brightness sensors, I did only steps that follow below. I guess Dan can describe steps 1. to 3. much better... <br><br><br />
First I wanted to discover how this feature already works for temperature sensors... <br />
<br><br><br />
It goes like this :<br><br><br />
First there is event called "Temperature changed" that reporting device (home automation controller for instance) creates with parameter of current temperature value. Message gets through DCERouter to Climate Plugin that does this <br />
<br />
else if( pMessage->m_dwMessage_Type==MESSAGETYPE_EVENT && pMessage->m_dwID==EVENT_Temperature_Changed_CONST )<br />
{<br />
// Replace the current temp<br />
string sLevel = pMessage->m_mapParameters[EVENTPARAMETER_Value_CONST];<br />
string sCurrentState = pDevice->m_sState_get();<br />
string::size_type pos = sCurrentState.find('(');<br />
if( pos!=string::npos )<br />
sCurrentState = sCurrentState.substr(0,pos-1); // Get rid of the current temp<br />
pDevice->m_sState_set(sCurrentState + " (" + sLevel + ")");<br />
}<br />
<br />
in <br />
<br />
void Climate_Plugin::PreprocessClimateMessage(DeviceData_Router *pDevice,Message *pMessage)<br />
<br />
and sets state of device to reported value.<br />
<br><br><br />
Then Orbiter plugin at line 1367 and procedure <br />
<br />
void Orbiter_Plugin::CMD_Get_Current_Floorplan(string sID,int iPK_FloorplanType,string *sValue_To_Assign,string &sCMD_Result,Message *pMessage)<br />
<br />
does this (line 1429) :<br />
pFloorplanInfoProvider->GetFloorplanDeviceInfo(pDeviceData_Router,fpObj->m_pEntertainArea,fpObj->Type,iPK_FloorplanObjectType_Color,iColor,sDescription,OSD,PK_DesignObj_Toolbar);<br />
<br />
FloorplanInfoProvider is actually coresponding plugin that provides more info about floorplan object. In Climate plugin there is this procedure :<br />
<br />
void Climate_Plugin::GetFloorplanDeviceInfo(DeviceData_Router *pDeviceData_Router,EntertainArea *pEntertainArea,int iFloorplanObjectType,int &iPK_FloorplanObjectType_Color,int &Color,string &sDescription,string &OSD,int &PK_DesignObj_Toolbar)<br />
{<br />
switch(iFloorplanObjectType)<br />
{<br />
case FLOORPLANOBJECTTYPE_CLIMATE_THERMOSTAT_CONST:<br />
PK_DesignObj_Toolbar=DESIGNOBJ_grpThermostatControls_CONST;<br />
break;<br />
case FLOORPLANOBJECTTYPE_CLIMATE_THERMOMETER_CONST:<br />
PK_DesignObj_Toolbar=0;<br />
break;<br />
case FLOORPLANOBJECTTYPE_CLIMATE_WEATHER_STATION_CONST:<br />
PK_DesignObj_Toolbar=0;<br />
break;<br />
case FLOORPLANOBJECTTYPE_CLIMATE_DAMPER_CONST:<br />
PK_DesignObj_Toolbar=0;<br />
break;<br />
case FLOORPLANOBJECTTYPE_CLIMATE_POOL_CONST:<br />
PK_DesignObj_Toolbar=DESIGNOBJ_grpPoolControls_CONST;<br />
break;<br />
case FLOORPLANOBJECTTYPE_CLIMATE_SPRINKLER_CONST:<br />
PK_DesignObj_Toolbar=DESIGNOBJ_grpSprinklerControls_CONST;<br />
break;<br />
};<br />
if( (OSD=pDeviceData_Router->m_sState_get())=="OFF" )<br />
iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_CLIMATE_THERMOSTAT_OFF_CONST;<br />
else<br />
iPK_FloorplanObjectType_Color = FLOORPLANOBJECTTYPE_COLOR_CLIMATE_THERMOSTAT_COOLING_CONST;<br />
}<br />
<br />
and most important is this line (near bottom) :<br />
OSD=pDeviceData_Router->m_sState_get()<br />
<br />
It basically reads state of device and puts it into OSD. OSD is string that will get displayed beside icon.<br><br />
<br />
Now I'll try to replicate everything similar to Lighting Plugin and brightness sensors :<br />
<br><br><br />
<br />
4. Lighting Plugin<br />
<br><br><br />
<br />
Added this line <br />
<br />
case FLOORPLANOBJECTTYPE_BRIGHTNESS_SENSOR_CONST:<br />
OSD = pDeviceData_Router->m_sState_get();<br />
<br />
to <br />
<br />
void Lighting_Plugin::GetFloorplanDeviceInfo(DeviceData_Router *pDeviceData_Router,EntertainArea *pEntertainArea,int iFloorplanObjectType,int &iPK_FloorplanObjectType_Color,int &Color,string &sDescription,string &OSD,int &PK_DesignObj_Toolbar)<br />
<br />
<br />
and adding those lines <br />
<br />
else if( pMessage->m_dwMessage_Type==MESSAGETYPE_EVENT && pMessage->m_dwID==EVENT_Brightness_Changed_CONST )<br />
{<br />
// Replace the current level<br />
string sLevel = pMessage->m_mapParameters[EVENTPARAMETER_Value_CONST];<br />
string sCurrentState = pDevice->m_sState_get();<br />
string::size_type pos = sCurrentState.find('(');<br />
if( pos!=string::npos )<br />
sCurrentState = sCurrentState.substr(0,pos-1); // Get rid of the current level<br />
pDevice->m_sState_set(sCurrentState + " (" + sLevel + ")");<br />
}<br />
<br />
to the bottom of <br />
void Lighting_Plugin::PreprocessLightingMessage(DeviceData_Router *pDevice,Message *pMessage) <br><br><br />
<br />
<br />
== Compiling Lighting plugin : ==<br />
<br><br />
<br />
SVN checkout of stable release (it's more convenient to work on currently released version of LinuxMCE)...<br />
<br><br />
The minimal routine: <br><br />
1) take the latest stable branch - e.g. 2.0.42 <br />
svn co http://svn.plutohome.com/pluto/branches/2.0.0.42/src <br />
2) build it - actually you don't need to build every package- just cd to the desired folder and try to run make there. if you will get missing libs like libDCECommon.so - then you should go to the corresponding library folder and build it<br />
<br />
cd ../pluto_main/<br />
make <br />
cd ../SerializeClass/<br />
make <br />
cd ../DCE/<br />
make<br />
cd ../PlutoUtils<br />
make<br />
cd ../Lighting_Plugin/<br />
make so<br />
<br />
<br />
== Problems !!!! ==<br />
<br />
It seems I must go through "adding DCE Event story" and I got stucked on this one. I've added simple constant to /pluto_main/Define_Event.h and added line to Event table in pluto_main. Also web-admin doesn't allow adding Events (although it works for Commands). But this seems not proper way of doing this, cause I get errors on compiled Lighting_Plugin</div>Juliethttp://wiki.linuxmce.org/index.php?title=How_to_compile_Asterisk&diff=3505How to compile Asterisk2007-03-19T08:39:42Z<p>Juliet: </p>
<hr />
<div>== Usable docs ==<br />
<br />
[http://www.voip-info.org/tiki-index.php?page=Asterisk+Linux+Debian Asterisk Debian Packages]<br />
<br />
<br />
== Don't read - it's under construction !!! ==<br />
http://plutohome.com/support/mantis/view.php?id=2789<br />
<br />
svn co http://svn.plutohome.com/pluto/trunk/external/asterisk<br />
<br />
$MakeRelease_Flavor is a problem unspecified.<br />
<br />
./make_package.sh 2.6.16.20-pluto-2-686<br />
<br />
(also sources should have been installed)...<br />
<br />
<br />
<br />
Rob: is it hard to do it ? (if you guide me, I'll post to Wiki)...<br />
radu_c_public: there's a make_package.sh script in that directory that does everything<br />
Rob: ok, will try it, thanks...<br />
<br />
<br />
<br />
<br />
<br />
<br />
Here are my notes for compiling Motion Wrapper (after whole procedure I found out that it is already fixed)...<br />
<br />
apt-get install subversion<br />
apt-get install g++<br />
apt-get install libmysqlclient14-dev<br />
apt-get install libhttpfetcher-dev<br />
<br />
svn co http://svn.plutohome.com/pluto/trunk/src/<br />
cd src<br />
cd SerializeClass/<br />
make<br />
cd ../DCE/<br />
make<br />
cd ../PlutoUtils<br />
make<br />
cd ..<br />
cd ../Motion_Wrapper/<br />
make<br />
<br />
after sucessful compilation you can try to run it<br />
<br />
../bin/Motion_Wrapper -d LinuxMCE's ID<br />
<br />
Note :<br />
Put '#' in front of '<-mkr_t_compile_defines-> ' in coresponding Makefile if you get errors for 'mkr_t_compile_defines'</div>Juliethttp://wiki.linuxmce.org/index.php?title=Quick_Start_Guides&diff=3504Quick Start Guides2007-03-19T08:37:34Z<p>Juliet: </p>
<hr />
<div><p>You'll find setting up LinuxMCE is very quick, simple and easy. Just follow the 5 quick start guides, and then see the [[What can I do with LinuxMCE?]] and how to do it guide:</p> <p>1. [[Picking the right components]] explains what kind of PC hardware and accessories we recommend.</p> <p>2. [[Installing the hardware]] shows you how to connect everything.</p> <p>3. [[Installing the software]]. Skip this if you bought a LinuxMCE system from a dealer. If you're installing LinuxMCE on your own PC's, this document explains how to install it. Don't worry, it's really easy. The kick-start CD will take about 45 minutes to install, but you don't have to do anything but relax.</p> <p>4. [[Tell LinuxMCE about your home]] is the best part. Instead of requiring weeks of programming like all the other smart home solutions, this shows you how to use our LinuxMCE Admin wizard. In about 2 hours you can have everything setup--the whole-house media server, full control all your lights, climate, and tv/hi-fi gear, the phone system, follow-me, everything. It's quick, painless, and non-technical.</p> <p>5. [[Using LinuxMCE]]. In 10 minutes you'll be up to speed and using all of LinuxMCE's features.</p> <p>6. LinuxMCE can do all sorts of things that are not immediately apparent. So once you finish 1-5, take a glance at [[What can I do with LinuxMCE?]] It has links to how-to pages, and Programmer's guide for developers wishing to expand on LinuxMCE.</p> <p>To see a list of common problems and their solutions, check [[troubleshooting]]</p> <h1>IMPORTANT NOTE</h1> <p>We had to leave some basic features out of the free version due to licensing issues. You may see the list of available additional software modules in the section "Add Software" of your configuration interface. If you purchase a pre-built LinuxMCE system, some or all of these technologies may be licensed and the license fee built into the purchase price. Before contacting LinuxMCE support to ask why something doesn't work, please refer to that site so you know what features were left out intentionally. Note that LinuxMCE does not encourage, endorse or support users adding 3rd party modules that have legal issues. If you choose to add 3rd party modules we suggest you first confirm they are legal in your area.</p></div>Juliethttp://wiki.linuxmce.org/index.php?title=Orbiter_refactoring_-_the_new_design&diff=3501Orbiter refactoring - the new design2007-03-19T08:34:30Z<p>Juliet: </p>
<hr />
<div>== Orbiter Renderers ==<br />
<br />
=== General information ===<br />
<br />
All the methods from Orbiter which have rendering functionality have been moved in OrbiterRenderer. Same for functions used to display dialogs or a progress.<br />
<br />
<br />
Orbiter creates a custom renderer when it starts, using an OrbiterRendererFactory. Based on the graphic engine used, a specific OrbiterRenderer is created. Orbiter has a method Renderer() which gives access to renderer functionality to other classes.<br />
<br />
<br />
LinuxMCE Graphic class is isolated in a new h/cpp since it’s not directly related to DesignObj_Orbiter class.<br />
<br />
<br />
From Orbiter there are derived classes with specific implementation:<br />
<br />
- Orbiter_Win32 (which overrides SelfUpdate method - uses OrbiterSelfUpdate class to update orbiter's binary)<br />
<br />
- OrbiterLinux (X11 stuff, XRecording, GrabPointer/GrabKeyboard, window manager)<br />
<br />
- OrbiterBluetooth (creates a BDCommandProcessor and uses PhoneDetection to detect/connect to smartphones)<br />
<br />
- Proxy_Orbiter (has a tcp server, communicates with apache, creates xml for cisco phone).<br />
<br />
<br />
These changes didn't affect Orbiter’s behavior.<br />
Here's a simplified partial UML:<br />
<br />
<br />
[[Image:Orbiter_Refactoring_Orbiter_Renderers.png]]<br />
<br />
<br />
=== Orbiter creation and destruction ===<br />
<br />
Here's a sequence diagram. Orbiter's framework thread should be handled by the framework. Additional threads like OpenGL's thread will be handled (created/destroyed) in OrbiterRenderer_OpenGL.<br />
<br />
[[Image:Orbiter_Seq_diagram.png]]<br />
<br />
<br />
<br />
== Object Renderers ==<br />
<br />
=== General information ===<br />
<br />
<br />
Each class derived from DesignObj_Data has an ObjectRenderer associated. The classes derived from ObjectRenderer is created using ObjectRendererFactory and can differ from engine to engine or shared between engines. We can create an AnimatedDatagridRender_OpenGL which will work only with opengl, but we can create a ClassicColoredDatagridRenderer which can be used for all engines.<br />
<br />
<br />
The AnimatedDatagridRenderer is not implemented now, only DatagridRenderer which has the same behavior as the one we are using today. Additionally, we are using now a custom datagrid for Bluetooth_Dongle : DataGridRenderer_Bluetooth (which does extra things on overriden RenderObject method) and one for Proxy_Orbiter : DataGridRenderer_Proxy.cpp (RenderCell is overridden in order to create the xml with touch zones for datagrid's cells).<br />
<br />
<br />
[[Image:Orbiter_refactor_Object_Renderer.png]]<br />
<br />
<br />
=== DataGridRenderer class ===<br />
<br />
DataGridRenderer class is derived from ObjectRenderer. ObjectRenderer has an owner, a DesignObj_Orbiter, which contains to deserialized data with info about that object, type, etc. In DataGridRenderer's case, the owner is a DesignObj_DataGrid. <br />
<br />
ObjectRendererFactory creates the DataGridRenderer instance for a DesignObj_Orbiter when object's type is DESIGNOBJTYPE_Datagrid_CONST:<br />
<br />
<br />
[[Image:Orbiter_Refactor_ObjectRendererFactory.PNG]]<br />
<br />
<br />
<br />
Here's a small UML for DataGridRenderer class:<br />
<br />
<br />
[[Image:Orbiter_Refactor_DataGridRenderer.png]]<br />
<br />
<br />
NOTE: The datagrid renderers are passive objects. They cannot handle users input events by themselves. Another step in refactoring process will be needed in order to accomplish this.</div>Juliethttp://wiki.linuxmce.org/index.php?title=AV_Devices&diff=3498AV Devices2007-03-19T08:32:55Z<p>Juliet: </p>
<hr />
<div>Here you add all your A/V equipment, like DVD players, TV's, VCR's, etc. Most of this equipment is controlled by infrared. You will need an interface module that is able to send infrared codes like your original remote control. The most popular interface module is the gc100. For instructions on adding the gc100, click [[Interfaces]]. Some A/V devices support RS232 control in addition to infrared. If so, RS232 is generally a much better way to control a device. Look for devices with (RS232) in the description. No matter how you control the A/V equipment, it will be added on this page.<br />
<br />
The controlled Via pull-down is how you tell LinuxMCE what device will be responsible for controlling the A/V equipment. Normally this is the interface module and the Port will be the port number that you plugged the I/R emitter into. However if the device is being controlled by RS232, and you plug the device directly into a Core or Media Director, then the Controlled Via will be the Core or Media Director it is plugged into. If you are using the RS232 port on the interface module, then Controlled Via will be the interface module, and Port is the port number of the RS232 port.<br />
<br />
You typically do not need to change the Entertainment Area box. This will only have an effect if you turn on 'Manually Configure Entertainment Area' as explained [[Rooms]].<br />
<br />
The 'Connected to' pull-down lets you specify your A/V connections. Let's assume you have a DVD Player and the video output is connected to the "VIDEO 2" input on your TV, and the audio output is connected to the "DVD" input on your receiver. You would add the DVD player, TV and Receiver on this page. Then for the DVD Player, choose the Receiver in the 'Connected To' column next to the 'A' for audio, and choose the "DVD" input. Choose the TV in the 'Connected To' column next to 'V' for video, and choose the "VIDEO 2" input. LinuxMCE will then know that when you are watching a DVD it needs to also turn on the TV and set it to VIDEO 2, and turn on the Receiver and set it to DVD. LinuxMCE will also know to forward audio commands (like Volume up/down) to the Receiver, and Video commands (like brightness up/down) to the TV. If you are using the TV's speakers for the audio, and not a separate receiver, then both the 'A' and 'V' Connected to would be the TV. If the DVD player required you to send a command to select an output (like DVI, S-Video, etc.), you would choose the audio and video outputs under the 'output' column. Most devices don't use the output column since most devices' outputs are always on.<br />
<br />
There are also buttons to edit the [[Infrared Codes]] where you can specify what inputs, outputs and DSP modes a device supports.<br />
<br />
[[Adding support for Marantz SR 5600 A/V receiver]]</div>Juliethttp://wiki.linuxmce.org/index.php?title=How_to_set_main_office_phoneline&diff=3494How to set main office phoneline2007-03-19T08:28:12Z<p>Juliet: </p>
<hr />
<div>[[Category:Internal_Documents]]<br />
If you need to test something with Cisco7960 or (by accident) modified asterisk configuration on 10.0.0.150, and you still want broadvoice number to ring in the office read this manual.<br />
<br />
== Cisco 7960 changed ==<br />
If you used the phone for tests (and set it to get ip by DHCP) you have to revert those changes :<br />
* set DHCP to NO<br />
* set IP to 10.0.0.203<br />
* set MASK to .255.255.255.0<br />
* set Router to 10.0.0.1<br />
* set NameServer to 10.0.0.1<br />
* set TFTP to 10.0.0.150 (on 10.0.0.150 in /tftpboot you'll find it's configuration files, no need to modify)<br />
* reboot the phone<br />
* if something went wrong (it hasn't registered in 1-2 minutes) recheck all phone settings.<br />
<br />
You have to do so because in 10.0.0.* network we don't have DCHP that will set TFTP, and so on.<br />
<br />
When you plug the phone in one of the testing network and set it to DHCP it will fill those automatically.<br />
<br />
== Configs on .150 changed ==<br />
Remember that 10.0.0.150 has many IP addresses (150, 163, 164, 165, 166, 167, 168, 169, 170, 174, 175), so modifiing something in telecom related pages may screw everything.<br />
<br />
To repair it follow this steps:<br />
* go to ''http://10.0.0.150/pluto-admin/amp/admin/config.php''<br />
* delete all trunks, incoming and outgoing routing<br />
* run ''/usr/pluto/bin/create_amp_broadvoice.pl'' with needed parameters<br />
* go to ''http://10.0.0.150/pluto-admin/amp/admin/config.php?display=7&extdisplay=9543372199/'' and set ''destination'' to ''3314''<br />
<br />
== Test if everything is working fine ==<br />
<br />
Dial 918777588648, it should say something like "Welcome to LinuxMCE....", then press "0", and wait for incoming call.</div>Juliethttp://wiki.linuxmce.org/index.php?title=Generic_Serial_Device&diff=3490Generic Serial Device2007-03-19T08:21:10Z<p>Juliet: </p>
<hr />
<div>[[Category:GSD]]<br />
[[Category:Pluto_Devices]]<br />
Generic_Serial_Device (also knowk as '''GSD''') is a LinuxMCE device that allows end-user to do simple programming for RS232, serial USB or network connected devices.<br />
:Note : The information is not quite complete because I'm not the original author.<br />
<br />
== Short description ==<br />
It's a standard DCE device, it only can execute commands and send events .<br />
The main idea is instead of programming a device in C++, compile, link with proper libraries you can edit (in a webpage) few lines of code in ruby which will be executed when device receives that command. It exports several objects into ruby so you'll have access to devicedata, device hierarchy, established connection and so on.<br />
<br />
The ruby code for each device template is stored somewhere in ''InfraredGroup_Command'' table. To edit the code go to Wizard> Devices > Generic_Serial_Devices on [[LinuxMCE-admin]] website. You have to add a device from a device template in order to see anything in that page.<br />
<br />
Select the device, and click "RubyCodes" button to be able to edit code that will be executed. <br />
You should be able to see commands that are specified in device template (like ON/OFF/WhateverElse) and a group of ''Internal Commands'' which are used to perform certain actions are to add helper functions.<br />
<br />
If the command you are trying to add doesn't show on first page, go to ''Add/Remove commands'' and add more commands for your device.<br />
<br />
=== Ruby source code ===<br />
<br />
There are 2 forms of ruby code you can write :<br />
* standard ruby code (check [http://www.ruby-lang.org/en/] and [http://poignantguide.net/ruby/] for syntax, references and programming guides)<br />
* short form for '''conn_.Send'''<br />
<$"PWON\r"$><br />
:which simply will send the string ''"PWON\r"'' to device.<br />
<br />
You'll have to quick reload router to get new code. Restarting GSD only will keep old code because the code is supplied by [[Infrared_Plugin]] which caches pluto_main and won't update it's cache without full restart of [[DCERouter]]. With this code it creates a ruby source which will be interpreted by embedded ruby.<br />
<br />
It will create methods called "cmd_CmdIDx" for each command(x) defined in web interface except ''Private_Method_Listing'' which will be inserted in the body of the class directly without wrapping.<br />
<br />
The source usually looks like (''DevID'' is iPK_Device of specific device, ''CmdIDx'' is iPK_Command ) :<br />
<br />
require 'Ruby_Generic_Serial_Device'<br />
class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper<br />
end<br />
class Device_DevID < Ruby_Generic_Serial_Device::RubySerialWrapper<br />
def cmd_CmdID1(paramlist)<br />
@returnParamArray.clear<br />
### WEB CODE for CmdID1 GOES HERE ###<br />
return @returnParamArray<br />
end<br />
def cmd_CmdID2(paramlist)<br />
@returnParamArray.clear<br />
### WEB CODE for CmdID2 GOES HERE ###<br />
return @returnParamArray<br />
end<br />
...<br />
def cmd_ReceiveCommandForChild(cmd)<br />
### Process_Receive Command_For_Child GOES HERE ###<br />
end<br />
...<br />
### Private_Method_Listing GOES HERE ###<br />
...<br />
def initialize()<br />
super<br />
@returnParamArray=Array.new<br />
end<br />
### Generated Setters/Getters goes here (may be empty, but usually looks like below) ###<br />
def data_set(value)<br />
@returnParamArray[19]=value<br />
end<br />
<br />
end<br />
<br />
There might be more then one class definition in that source. This may happen when child device is itself a GSD device.<br />
<br />
=== Command details ===<br />
When the command from DCE arrives it is routed to specific device and ''cmd_XXX'' is run. The commands are run one by one, meaning that you cannot run 2 commands simultaneously. This limitation is implied by embedded ruby interpretor which fails if run from multiple threads.<br />
DCE commands may have return parameters (well known GetVideoFrame), as ruby can return only 1 parameter the ''@returnParamArray'' was added. You can see that in each method we insert '''@returnParamArray.clear''' then the real code and then '''return @returnParamArray'''. Also some setters are generated (like the one from above) for code readability.<br />
<br />
Beside usual DCE command you'll see some ''Internal Commands''. Here goes a small list and what they do:<br />
* '''Private Method Listing''' - used to insert all kind of helpers<br />
* '''Process IDLE''' - method executed once in a while (may be used to keep connection alive, scan for new devices on serial bus)<br />
* '''Process Incoming Data''' - called when some data is available <br />
* '''Process Receive Command For Child''' - called if the device has children and those are pretty dummy (like Lights under CM11), so practically the parent will do the job. As a parameter you have ''cmd'' which is a wrapper for DCEMessage, so you'll have access to deviceId, senderId, commandID and so on.<br />
* '''Process Initialize''' - called when device is starting (to perform handshake with device or some other initialisation required by protocol)<br />
* '''Process Release''' - to close gracefully connection with device (say "good bye" or something)<br />
<br />
== Implementation notes ==<br />
There are several classes that actually need to be touched. Most of the other classes are just for wrapping DCE objects (like Device, Message, Connection and so on) and exporting them into ruby.<br />
<br />
Most important classes :<br />
* '''RubyDCEDeviceNode''' is actually the Device, responsable with initialisation and partially a message handler.<br />
* '''RubyDCEEmbededClass''' is bridge between DeviceNode and ruby, it has ''CallCmdHandler'' which does the real call to ruby and sends back result.<br />
* '''RubyIOManager''' is the one responsible for instantiating RubyDCEDeviceNodes, code retrieval, command handler and serializing ruby calls.<br />
* '''RubyDCECodeSupplier''' gives you the ruby code<br />
* '''RubyCommandWrapper''' a wrapper for Message<br />
* '''GSDMessageProcessing''' is [[Message_Translation|message translator]] which will try to run command if it's implemented without translation.<br />
* '''RubySerialIOConnectionWrapper''' helps to wrap Serial and TCP/IP based connection under same interface, see down the hierarchy the connection you need.<br />
<br />
There are also some files needed for building a library for ruby with SWIG, let them alone, it should work.<br />
<br />
The compilation will give you '''Generic_Serial_Device''' and '''Ruby_Generic_Serial_Device.so''', first file is the binary itself, second file is the bridge library and it will be included by ruby (the request for it is in the first line of the generated source)<br />
<br />
== Known issues ==<br />
<br />
* Only '''ONE''' command can be executed at a time. This is a limitation of embedded ruby, which should be run from one thread only.<br />
* If command expected an answer, it would wait about 20 seconds for the ruby command to complete, and if the command haven't completed yet, it would send an empty response.<br />
* Most of the data are pretty cryptic (like ''device_.devdata_[114]''), you have to look that that number represents (device data id, command id, command parameter id, event id, event parameter id, some other id)<br />
<br />
== Short example ==<br />
For more details about exported classes and available methods check [[GSD_Ruby_Interface]]<br />
<br />
Here is a short example from ''Panasonic IP Camera'':<br />
0:require 'Ruby_Generic_Serial_Device'<br />
1:class Command < Ruby_Generic_Serial_Device::RubyCommandWrapper<br />
2:end<br />
3:class Device_47 < Ruby_Generic_Serial_Device::RubySerialWrapper<br />
4:#### 84 ####################################################################<br />
5:def cmd_84(data, format, disable_aspect_lock, streamid, width, height)<br />
6:@returnParamArray.clear<br />
7:conn_.Reconnect()<br />
8:auth_s=device_.devdata_[114]+":"+device_.devdata_[115]<br />
9:auth_a=Array.new;<br />
10:auth_s.each{|c| auth_a.push(c)}<br />
11:<br />
12:fix_path=device_.devdata_[2];<br />
13:fix_path='/'+fix_path if(fix_path[0]!='/'[0]);<br />
14:<br />
15:s = "GET "+fix_path+" HTTP/1.0\r\n"<br />
16:s+= "Accept: */*\r\n"<br />
17:s+= "Authorization: Basic "+auth_a.pack("m").chop+"\r\n"<br />
18:s+= "\r\n"<br />
19:<br />
20:conn_.Send(s)<br />
21:recv=""<br />
22:while(true)<br />
23: buff=conn_.Recv(16384, 5000)<br />
24: if(buff.length() == 0)<br />
25: break<br />
26: end<br />
27: recv = recv + buff<br />
28:end<br />
29:if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)<br />
30: data_set($1)<br />
31: format_set('jpg')<br />
32:end<br />
33:return @returnParamArray<br />
34:end<br />
...<br />
194:#### START SETTERS ####################################################################<br />
195:def initialize()<br />
196:super<br />
197:@returnParamArray=Array.new<br />
198:end<br />
199:def data_set(value)<br />
200:@returnParamArray[19]=value<br />
201:end<br />
202:def format_set(value)<br />
203:@returnParamArray[20]=value<br />
204:end<br />
205:#### END SETTERS ####################################################################<br />
206:end<br />
You can see how command 84 (GetVideoFrame) is implemented:<br />
* it has 6 parameters ''cmd_84(data, format, disable_aspect_lock, streamid, width, height)'', parameters ''data'' and ''format'' are also output parameters<br />
* to set output parameters methods like ''data_set'' and ''format_set'' are automatically generated<br />
* ''device_.devdata_[114]'', ''device_.devdata_[115]'' are the username and password to login into camera <br />
* then it creates HTTP header with basic authorization<br />
* ''device_.devdata_[2]'' is the path to the snapshot (it is configurable because it can change between models)<br />
* it sends the request and waits for the answer<br />
* reads the answer, regexp parse it and gets JPEG content<br />
* sets output parameters<br />
* returns @returnParamArray (the return statement is added automatically)</div>Juliet