
OpenMUC Framework - Overview
OpenMUC is a software framework based on Java and OSGi that simplifies the development of customized monitoring, logging, and controlling systems. It can be used as a basis to flexibly implement anything from simple data loggers to complex device controllers or energy management gateways. The framework includes various drivers for different communication protocols. Support for new communication protocols can be easily added by implementing new driver plug-ins for OpenMUC. The software is being developed at the Fraunhofer Institute for Solar Energy Systems in Freiburg, Germany and is licensed under the LGPL.
At Fraunhofer ISE we use the flexible OpenMUC framework as a basis in various energy management and smart metering projects. Among other tasks we use it to readout smart meters, control CHP units, and monitor PV systems. Therefore the OpenMUC framework includes mostly protocols from the energy domain. But due to its open and modular architecture there is virtually no limit to the number applications that can be realized using OpenMUC. Third parties are encouraged to use OpenMUC as basis to create their own customized system. No licensing issues must be feared because OpenMUC is licensed under the LGPL.
The framework is designed to run on low-power embedded devices. It is currently being used on embedded x86 and ARM systems. Because OpenMUC is based on Java and OSGi it is platform independent.
The following picture illustrates how OpenMUC works.

- OpenMUC framework overview
All boxes seen in the picture are implemented as software modules called OSGi bundles that run independently in the OSGi environment. All modules except for the Data Manager are optional. Thus by selecting the modules you need you can easily create your own customized and light weight system. The different modules in the picture are now further explained:
- The Data Manager is at the core and center of OpenMUC. Virtually all other OpenMUC modules (drivers, data loggers, servers, applications) communicate with it through OSGi services. The Data Manager gets automatically notified when new drivers or data loggers get installed. What the Data Manager does is mostly controlled through a central configuration.
- In the configuration the user defines data channels. Data channels are the frameworks representation of data points in connected devices. Amongst others the channel configuration holds the following information:
- communication parameters that the drivers require
- when to sample new data from connected devices
- when to send sampled data to existing data logger(s) for efficient persistent storage.
- A driver is used by the Data Manager to get data from a connected device. Thus a driver usually implements a communication protocol. Several communication drivers have already been developed (e.g. IEC 61850, ModbusTCP, KNX, DLMS/COSEM). While implementing drivers for OpenMUC we also developed standalone communication libraries (e.g. OpenIEC61850, jMBus). These libraries do not depend on the OpenMUC framework and can therefor be used by any Java application. New communcation drivers can be easily developed by third parties.
- A data logger saves sampled data persistently. Essentially the Data Manager forwards sampled data to all available data loggers if configured to do so. Data loggers are specifically designed to store time series data for short storage and retrieval times. Note that this usually means that they are not SQL-based. OpenMUC currently includes two data loggers. The ASCII Data Logger saves data in a human readable format while SlotsDB saves data in a more efficient binary format.
- If all you want is sample and log data you may not need to program an application. But if you want to process sampled data or control a device you will want to write your own application. Like all other modules your application will be an OSGI bundle. In your application you can use the DataAccessService and the ConfigService provided by the Data Manager to access sampled and logged data. You may also issue immediate read or write commands that are forwarded by the Data Manager the driver. The configuration (when to sample and to log) can also be changed during run-time by the application. At all times the application only communicates with the Data Manager and is thus hidden from the complicated details of the communication technology.
- If your application is located on a remote system (e.g. a smart phone or an Internet server) then the data and configuration can be accessed through an OpenMUC server. At the moment we have a single server: a RESTful Web Service. In the future and IEC 61850 server is planned.
- Finally the OpenMUC framework provides a web user interface for tasks such as configuration, visualization of sampled data, or exporting logged data. The web interface is modular and provides a plug-in interface. This way developers may write a website that integrates into the main menu of the web interface.
Authors of the OpenMUC framework:
Stefan Feuerhahn
Michael Zillgith
Marco Mittelsdorf
Karsten Müller-Bier
Simon Fey
Frederic Robra
