Development
The LinuxMCE is a very complex coding project.
So if you like to develope for it, please read the following sections VERY CAREFULLY.
Before you can start, you have to understand the whole structure, of how LinuxMCE is working at all.
If we are talking about developing, than it means, you know how to dig into code and write new lines and have skills and expierence in one or more languages.
There are many ways, to help the project go forward, doesn't always mean, coding, but can be other ways to contribute. E.g. submiting templates new onyl few coding skills, and can be done by advanced beginners.
But now, let's get started:
LinuxMCE includes hundreds of scripts and utilities that were forked from Pluto's linux distribution in 2006. Pluto wrote these to create a 'turn it on and press play' appliance, rather than a traditional software application.
This guide explains the architecture of the main C++ code. LinuxMCE uses a modular architecture. The heart of LinuxMCE, the 'main application' DCERouter is nothing but a general-purpose message router. It has absolutely no code relating to any of LinuxMCE's functionality - it just relays messages between "Devices".
The functionality of LinuxMCE is entirely in separate programs (aka "Devices") which all run independently and communicate with each other by passing messages through DCERouter over sockets. There can be hundreds of these "Devices" in a smart home, that do all sorts of things. As shown in the diagram below, many of LinuxMCE's devices are actually 'wrappers' we have written for existing open source programs to allow them to work together seamlessly in a LinuxMCE system.
For example, the wrapper for Asterisk that sends event messages to DCERouter whenever a phone call comes in, and receives command messages when it is time to place a call. How the wrapper communicates with the open source program depends on that project. For example, the Asterisk wrapper communicates with Asterisk over a socket. It is really a translator converting messages from its socket connection with DCERouter into messages from its socket connection with Asterisk. The wrapper for the Xine media player links in Xine's own library and calls Xine functions directly, while the wrapper for MythTV communicates via a special telnet interface.
Since there are literally thousands of home automation components and pieces of A/V equipment that require controlling with serial port, USB and Ethernet LinuxMCE communicates with these using GSD. It's fast and simple to use and it can be used to support lighting control systems, climate and pool systems, external devices like IR blasters, cameras, etc.
Â
- Best way to start over, read the Developer Guide