Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... ·...

63
Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael D. Ernst UW Seattle, USA ACM SIGPLAN PLAS, Vienna, Austria 10-24-2016

Transcript of Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... ·...

Page 1: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Automatic Trigger Generation for

Rule-based Smart Homes

Chandrakana Nandi, Michael D. ErnstUW Seattle, USA

ACM SIGPLAN PLAS, Vienna, Austria10-24-2016

Page 2: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

2

Page 3: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

3

Page 4: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Common architecture

4

OR

Page 5: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

How to control your home?

5

Page 6: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Automation rules:when I come home then turn lights on

How to control your home?

6

Page 7: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Automation rules are easy and useful

Ur+ CHI 2014, 2016Ur+ HUPS 2014

Dey+ Pervasive 2006

How to control your home?

7

Page 8: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Writing correct automation rules is hard

How to control your home?

8

Huang+ Ubicomp 2015

Page 9: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Writing correct automation rules is hard

How to control your home?

9

Huang+ Ubicomp 2015

mental model actual rule

rule “start laundry”when Item laundry_machine changed then if (laundry_machine == FULL) { sendCommand(laundry_machine, “ON”) }end

Page 10: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Effects of wrong rules

● Likely unexpected behavior● Security vulnerabilities

10

Page 11: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

11

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 12: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

12

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 13: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Rule Example

13

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 14: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Rule Example

14

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 15: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Rule Example

15

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

trigger block

Page 16: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Rule Example

16

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

trigger item

trigger item

trigger block

Page 17: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Rule Example

17

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

action block

Page 18: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed or Item State_Sleeping changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

18

State_Away = ON

State_Sleeping = ON

Page 19: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

19

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 20: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Possible mistakes in rules

20

Page 21: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Wrong trigger block

21

rule "Away rule"when Item State_Roomheater changed then if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 22: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Wrong trigger block

22

rule "Away rule"when Item State_Away changed

then if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 23: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Wrong trigger block

23

rule "Away rule"when Item trigger_1 changed Item trigger_2 changed Item trigger_n changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 24: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Conflicts

24

rule “rule 1”when

Item owner_entering_home changed then

if (owner_entering_home == true) {sendCommand (hall_light, “ON”)

}end

rule “rule 2”when

Item past_midnight changed then

if (past_midnight == true) {sendCommand (hall_light, “OFF”)

}end

(owner_entering_home == true && past_midnight == true)

Page 25: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

● Wrong trigger blocks● Conflicts

25

Page 26: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

● Wrong trigger blocks● Conflicts

26

Page 27: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Why is it bad?

27

Page 28: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

28

!(State_Away = ON && State_Sleeping = ON)

Page 29: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

29

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 30: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

30

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 31: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

31

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 32: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

32

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 33: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

33

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 34: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

34

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 35: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

35

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 36: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

36

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 37: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

37

rule "Away rule"when Item State_Away changedthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Page 38: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

38

Both states can be set to true!

Page 39: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Visitor notification system rule"when

Item State_Sleeping changedthen

if (State_Sleeping.state == ON) {postUpdate (Notification_System , OFF)

} else {postUpdate (Notification_System , ON)

}end

39

Page 40: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Example Attackrule "Visitor notification system rule"when

Item State_Sleeping changedthen

if (State_Sleeping.state == ON) {postUpdate (Notification_System , OFF)

} else {postUpdate (Notification_System , ON)

}end

rule "Away rule"when Item State_Away changed then if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

40

Wrongly deactivates notification system

Page 41: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

41

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 42: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed

then if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Solution

42

Page 43: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed or Item State_Sleeping changed // Fixthen if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

Solution

43

Page 44: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

44

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 45: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

TrigGen: automatically infer triggers from actions using static analysis

45

Idea: live items must be triggers

Page 46: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

46

Idea: live items must be triggers

Items that are read from before being written to, at the beginning of the action block

Page 47: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed then

State_Notify = ON if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

47

Page 48: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed then

State_Notify = ON if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

● Identify all items in the action block AST○ potential triggers

48

Page 49: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed then

State_Notify = ON if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

● Identify all items in the action block AST○ potential triggers

49

Page 50: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed then

State_Notify = ON if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

● Identify all items in the action block AST○ potential triggers

● eliminate those that are not live○ redundant triggers

■ State_Notify

50

Page 51: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

rule "Away rule"when Item State_Away changed then

State_Notify = ON if (State_Away.state == ON) { if (State_Sleeping.state != OFF) { postUpdate (State_Sleeping, OFF) } }end

● Identify all items in the action block AST○ potential triggers

● eliminate those that are not live○ redundant triggers

■ State_Notify

● State_Away, State_Sleeping: live

51

Page 52: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Implementation

item repository

rule

identify all potential triggers

eliminate redundant triggers by live variable analysis

52

rule "Rule 1"when trigger then actionend

State_NotifyState_AwayState_Sleeping

State_AwayState_Sleeping

Comparer

State_AwayLaundry_Machine

State_SleepingLaundry_Machine

wrong/extra missing

end-user written

Page 53: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

53

Overview

● Background on automation rules

● Problem statement

● Solution

● Algorithm and tool development

● Experiments

Page 54: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Experiments● 96 real end-user written rules for openHAB● Action block size: 1 - 220 LOC● Featuring categories such as

54

Page 55: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Experiments● Ground truth

○ Set of necessary and sufficient triggers, i.e. all non-redundant triggers

○ Verified by ■ contacting the end user■ manual inspection of rules

55

Page 56: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Trigger generationTrigGen suggested a set of necessary and sufficient triggers

91 (95%)

False positives 0

False negatives 5 (5%)

56

Missing triggers detected 77 (80%)

Page 57: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Number of missing triggers

57

Page 58: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Number of missing triggers

58

55%

Page 59: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Conflicts

59

Total conflicts detected 18

True positives 11 (61%)

False negatives 0

Page 60: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

More in the paperConflict resolution

Group enumeration

Proving non-live triggers as redundant

60

Page 61: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

Remarks● TrigGen is applicable to any domain that

has trigger based rules● We aimed at home automation involving

○ end users○ different deployments: every home is

different!

61

Page 62: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

ConclusionsTrigGen automatically generates a set of necessary and sufficient triggers so that rules don’t have:

● likely unexpected behavior ● certain security vulnerabilities

TrigGen found 80% real rules used for experimentation to have insufficient triggers

62

Page 63: Automatic Trigger Generation for Rule-based Smart Homesmernst/pubs/trigger-generation-plas... · Automatic Trigger Generation for Rule-based Smart Homes Chandrakana Nandi, Michael

63