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
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/
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
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
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
Video demo
https://www.meetup.com/Virtual-IoT/events/238648625/
https://www.youtube.com/watch?v=mHcYkR1GsNA
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

Easier smart home development with simulators and rule engines

  • 1.
    Easier Smart Homedevelopment 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 andOpenHAB 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 Smarthome 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 • Makeit 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 Helloworld 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
  • 6.
  • 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