Easier smart home development with simulators and rule engines
1. Easier Smart Home development
with simulators and rule engines
EclipseCon Europe IoT Day
October 24, 2017
András Jankó, István Papp, István Ráth
IncQuery Labs
https://www.eclipsecon.org/europe2017/session/easier-smart-home-development-simulators-and-rule-engines
2. Eclipse Smarthome and OpenHAB
Eclipse
SmartHome
Communication
IO
Config
Model
Gateway
OpenHAB
Automation
Addons
Persistence
UI
https://eclipse.org/smarthome/https://www.openhab.org/ https://www.meetup.com/Virtual-IoT/events/238648474/
3. IncQuery Labs Smart home CEP demonstrator
Drools
Fusion
Simulator
(HomeIO)
OpenHAB2
Dashboard
Complex event
processing
UI
Communication
Open source (EPL v1): https://github.com/IncQueryLabs/smarthome-cep-demonstrator
4. Motivation
• Simulator
• Make it easier to develop smart home applications
• Architecture allows for hybrid setups (simulator AND physical devices together)
• Rule-based programs
• Discrete rules, each applying to a subset of the problem focus on the essence
• Simple and flexible – best for often changing logic (e.g. quick prototyping)
• Drools Fusion - http://drools.jboss.org/drools-fusion.html
• ESH / OpenHAB2 support only simple rules by default
Drools Fusion is much more powerful
• Fits “relatively well” into the ESH / OSGi world Retains the benefits of the cloudless
smart home architecture
• Low latency, Offline operation Avoid security and privacy concerns
• Integrates easily with Java reuse components, integrate with local & remote services
• Pre-filter data on the gateway edge computing
5. Smart home Hello world with Drools
rule "Example Lights Switch"
when
$item : Item( name == "Example_Light", $state : state)
ItemStateChangedEvent( name == "Example_Switch", newState ==
OPEN)
then
if ($state == ON) {
openhab.postCommand($item, OFF);
} else {
openhab.postCommand($item, ON);
}
end
ESH Item
instance with
pattern
constraints
Event bus info
– encodes
state changes
OpenHAB
helper classes
7. Summary
• Demonstrator features
• HomeIO - MQTT adapter (with OpenHAB translator)
• Extended event bus for ESH
• Drools – OSGi integration
• Case study sample rules, docs on the wiki
• JUnit tests & ESH mock
• Build with Maven+Tycho
• Plans for the future
• Support open source simulators (OpenSHS) and other CEP engines (Esper, BeepBeep3)
• Developer tools enhancements
(Oomph, Drools debugger, project & code generation with VIATRA)
• Eclipse.org contributions – if there is interest
• + your favorite enhancement – looking for contributors!
• Get it now:
• https://github.com/IncQueryLabs/smarthome-cep-demonstrator