Hi,
I am a master student in Essen, also working for the chair, embarking on the enterprise to bring a new aspect to the great openHAB2 project as my master’s thesis.
The details are a bit complicated to explain, but I will try to here, also I’ll be at the eclipseCon in three weeks, hoping to be able to meet with at least you @Kai and talk a bit about the approach.
I’m writing here now, because I need a little guide where and how to start in terms of code, also to make you all aware of the idea and get your suggestions.
We want to take a somehow different approach in applying the smart home system, which is modeled and controlled by ESH/openHAB2.
Until now, there is (as far as I understand it, please correct me) a rule engine, which can determine which commands to execute based on basic sensor data, state, variables and external service data.
We propose an option to connect multiple instances of openHAB, each of them possibly in the separate flats of a house or in the separate houses of a street or neighborhood. Those independent instances could then communicate with each other to influence the local control of the smart home, e.g. arrange an agreement, when exactly each instance starts it’s washing machine.
This could be an important contribution to implement load shifting on electricity networks: If every washing machine in a neighborhood starts at the same time, it means a huge load (ca. 2000W/machine) on the net. If the smart homes coordinate, it would mean a great help for keeping stability and reliability. Also, this way electricity might be usable in times, where it is easily available and cheap (at night or noon).
To implement this, a technique called MAS - multi agent system, specifically the FIPA compliant JADE framework (https://en.wikipedia.org/wiki/Java_Agent_Development_Framework), would be used. Each smart home would run at least one agent, acting as an interface between the own openHAB instance and the other agents in the geographical vicinity/community.
This way, not someone else controls your washing machine, but only your own agent acts on your behalf within the presets of freedom you grant to him, e.g. “washing can start from 08:00 and should be finished between 15:00 and 18:00 pm”. Within this boundaries, the agent might pause washing at certain points (e.g. when the machine is not currently filled with water). You wouldn’t need a new “smart” machine, but only a switchable socket (every modern machine will simply continue the program after a power loss). Privacy and security can be maintained.
To convey an understanding of energy and such to the agent and to model the context, the Energy Option Model (EOM) would be used (see http://www.agent-hygrid.net/en/publications/).
After this long background story:
What would be the best point in the code too hook into? Would it be best situated at org.eclipse.smarthome.automation (github.com/eclipse/smarthome/tree/master/bundles/automation)? Also, there is documentation about developing a binding (which I suspect this approach won’t be?!) but I didn’t find anything regarding implementing a “Service” or “System Integration” or a “Misc”“Extension”/“Add-On”.
I successfully set up a openHAB development environment guided by docs.openhab.org/developers/development/ide.html and one guided by eclipse.org/smarthome/documentation/development/ide.html, I am an intermediate Java programmer with experience Vanilla Java, JADE Agents and Android development but will have to get myself familiar with OSGi.
Also I have set up a openHAB2 instance on a RaspberryPi2 with a ZME_UZB1 Z-Wave stick and a connected Greenwave Powernode 310-F switchable/meterable socket, which is able to switch and meter the washing machine.
Is this interesting for you? Can you help me?
Cheers,
friesenkiwi/Hanno - Felix Wagner
Universität Duisburg-Essen