As middleware i use openHAB.
To make it short, it is used to connect all different bus systems (KNX,Radio,USB,Serial,Network etc) with "Bindings". A rules engine is able to handle complex control scenarios. There may be data collected, recorded and displayed graphically. It is visualized through a web interface or Android / iOS Apps. In addition, there is also a REST API to the system.
From a technical side, it is a system written as a java OSGI based system. Recently it has been accepted as an eclipse projekt. In my eyes it is by far the cleanest and most promising system.
You can find my current configuration files (Items, Rules, Sitemaps etc.) and shell scripts in the download area.