From 7b0aa77059421b0714372b825a03737f03a10379 Mon Sep 17 00:00:00 2001 From: rtrimana Date: Sat, 16 Jan 2021 16:29:21 -0800 Subject: [PATCH] Adding granularity into event generation. --- Extractor/ExtractorScript.py | 474 +++++++++++++++++++++++++++++------ 1 file changed, 404 insertions(+), 70 deletions(-) mode change 100644 => 100755 Extractor/ExtractorScript.py diff --git a/Extractor/ExtractorScript.py b/Extractor/ExtractorScript.py old mode 100644 new mode 100755 index 1105eda..fd7b5b8 --- a/Extractor/ExtractorScript.py +++ b/Extractor/ExtractorScript.py @@ -75,67 +75,66 @@ eventTypeCounterMap = {'lock': 2, 'ultravioletIndex': 1, 'voltage': 1, 'windowShade': 1, - 'touched': 1} - -# Mapping for specific event types -eventTypesMap = {'alarm.both': 'alarm', - 'alarm.siren' : 'alarm', - 'alarm.strobe' : 'alarm', - 'alarm.off' : 'alarm', - 'contact.open' : 'contact', - 'contact.closed' : 'contact', - 'tamper.tampered' : 'contact', - 'doorState.open' : 'doorState', - 'doorState.closed' : 'doorState', - 'position' : 'location', - 'mode' : 'location', - 'mode.away' : 'location', - 'mode.home' : 'location', - 'mode.night' : 'location', - 'lock.locked' : 'lock', - 'lock.unlocked' : 'lock', - 'motion.active' : 'motion', - 'motion.inactive' : 'motion', - 'status.playing' : 'status', - 'status.stopped' : 'status', - 'status.paused' : 'status', - 'mute.muted' : 'mute', - 'mute.unmuted' : 'mute', - 'presence.present' : 'presence', - 'presence.not present' : 'presence', - 'presence.not' : 'presence', - 'smoke.detected' : 'smoke', - 'smoke.clear' : 'smoke', - 'smoke.tested' : 'smoke', - 'carbonMonoxide.detected' : 'carbonMonoxide', - 'carbonMonoxide.clear' : 'carbonMonoxide', - 'carbonMonoxide.tested' : 'carbonMonoxide', - 'thermostatMode.cool' : 'thermostatMode', - 'thermostatMode.auto' : 'thermostatMode', - 'thermostatMode.emergencyHeat' : 'thermostatMode', - 'thermostatMode.heat' : 'thermostatMode', - 'thermostatMode.off' : 'thermostatMode', - 'thermostatFanMode.auto' : 'thermostatFanMode', - 'thermostatFanMode.fanCirculate' : 'thermostatFanMode', - 'thermostatFanMode.circulate' : 'thermostatFanMode', - 'thermostatFanMode.fanOn' : 'thermostatFanMode', - 'thermostatFanMode.on' : 'thermostatFanMode', - 'fanMode' : 'thermostatFanMode', - 'fanMode.auto' : 'thermostatFanMode', - 'fanMode.fanCirculate' : 'thermostatFanMode', - 'fanMode.circulate' : 'thermostatFanMode', - 'fanMode.fanOn' : 'thermostatFanMode', - 'fanMode.on' : 'thermostatFanMode', - 'switch.on' : 'switch', - 'switch.off' : 'switch', - 'button.pushed' : 'button', - 'button.held' : 'button', - 'acceleration.active' : 'acceleration', - 'acceleration.inactive' : 'acceleration', - 'sleeping.sleeping' : 'sleeping', - 'sleeping.not sleeping' : 'sleeping', - 'water.dry' : 'water', - 'water.wet' : 'water'} + 'touched': 1, + 'alarm.both': 1, + 'alarm.siren' : 1, + 'alarm.strobe' : 1, + 'alarm.off' : 1, + 'contact.open' : 1, + 'contact.closed' : 1, + 'tamper.tampered' : 2, + 'doorState.open' : 1, + 'doorState.closed' : 1, + 'position' : 3, + 'mode' : 3, + 'mode.away' : 1, + 'mode.home' : 1, + 'mode.night' : 1, + 'lock.locked' : 1, + 'lock.unlocked' : 1, + 'motion.active' : 1, + 'motion.inactive' : 1, + 'status.playing' : 1, + 'status.stopped' : 1, + 'status.paused' : 1, + 'mute.muted' : 1, + 'mute.unmuted' : 1, + 'presence.present' : 1, + 'presence.not present' : 1, + 'presence.not' : 1, + 'smoke.detected' : 1, + 'smoke.clear' : 1, + 'smoke.tested' : 1, + 'carbonMonoxide.detected' : 1, + 'carbonMonoxide.clear' : 1, + 'carbonMonoxide.tested' : 1, + 'thermostatMode.cool' : 1, + 'thermostatMode.auto' : 1, + 'thermostatMode.emergencyHeat' : 1, + 'thermostatMode.heat' : 1, + 'thermostatMode.off' : 1, + 'thermostatFanMode.auto' : 1, + 'thermostatFanMode.fanCirculate' : 1, + 'thermostatFanMode.circulate' : 1, + 'thermostatFanMode.fanOn' : 1, + 'thermostatFanMode.on' : 1, + 'fanMode' : 5, + 'fanMode.auto' : 1, + 'fanMode.fanCirculate' : 1, + 'fanMode.circulate' : 1, + 'fanMode.fanOn' : 1, + 'fanMode.on' : 1, + 'switch.on' : 1, + 'switch.off' : 1, + 'button.pushed' : 1, + 'button.held' : 1, + 'acceleration.active' : 1, + 'acceleration.inactive' : 1, + 'sleeping.sleeping' : 1, + 'sleeping.not sleeping' : 1, + 'water.dry' : 1, + 'water.wet' : 1 + } def GetToken(f): global readyToReturn @@ -170,7 +169,6 @@ def GetToken(f): def ExtractFunctions(F, appName): global eventList global eventAppList - global eventTypesMap global app1Subscribe global app2Subscribe Temp = GetToken(F) @@ -257,11 +255,9 @@ def ExtractFunctions(F, appName): #This is a bogus event, just skip it... if Temp == "unlock": - continue - #Translate and reduce through mapping - if Temp in eventTypesMap.keys(): - Temp = eventTypesMap[Temp] - if Temp == "app" or Temp == "location" or Temp == "mode" or Temp == "sunset" or Temp == "sunrise" or Temp == "sunsetTime" or Temp == "sunriseTime": + continue + if Temp == "app" or Temp == "location" or Temp == "position" or Temp == "mode" or Temp == "mode.away" or Temp == "mode.home" or Temp == "mode.night" or \ + Temp == "sunset" or Temp == "sunrise" or Temp == "sunsetTime" or Temp == "sunriseTime": if Temp not in eventList: eventList.append(Temp) if (appName == "App1"): @@ -431,6 +427,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "lock.locked": + event = open("eventSimulator/lockLockedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "lock.unlocked": + event = open("eventSimulator/lockUnlockedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "nfcTouch": event = open("eventSimulator/nfcTouchEvent.groovy", "r") for line in event: @@ -469,6 +475,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "button.pushed": + event = open("eventSimulator/buttonPushedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "button.held": + event = open("eventSimulator/buttonHeldEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "water": #Write two events subsequently event = open("eventSimulator/waterDryEvent.groovy", "r") @@ -482,6 +498,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "water.dry": + event = open("eventSimulator/waterDryEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "water.wet": + event = open("eventSimulator/waterWetEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "presence": #Check which capability variable = eventVarMap[eventList[i]] @@ -510,6 +536,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "presence.present": + event = open("eventSimulator/presencePresentEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "presence.not present" or eventList[i] == "presence.not": + event = open("eventSimulator/presenceLeftEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "doorState": #Write two events subsequently event = open("eventSimulator/doorOpenEvent.groovy", "r") @@ -523,6 +559,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "doorState.open": + event = open("eventSimulator/doorOpenEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "doorState.closed": + event = open("eventSimulator/doorClosedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "motion": #Write two events subsequently event = open("eventSimulator/motionActiveEvent.groovy", "r") @@ -536,6 +582,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "motion.active": + event = open("eventSimulator/motionActiveEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "motion.inactive": + event = open("eventSimulator/motionInactiveEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "smoke": #Write three events subsequently event = open("eventSimulator/smokeClearEvent.groovy", "r") @@ -556,6 +612,21 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "smoke.clear": + event = open("eventSimulator/smokeClearEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "smoke.detected": + event = open("eventSimulator/smokeDetectedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "smoke.tested": + event = open("eventSimulator/smokeTestedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "carbonMonoxide": #Check which capability variable = eventVarMap[eventList[i]] @@ -594,6 +665,60 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "carbonMonoxide.clear": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + #Write three events subsequently + if capability == "capability.smokeDetector": + event = open("eventSimulator/smokeCarbonMonoxideClearEvent.groovy", "r") + elif capability == "capability.carbonMonoxideDetector": + event = open("eventSimulator/carbonMonoxideClearEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "carbonMonoxide.detected": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + #Write three events subsequently + if capability == "capability.smokeDetector": + event = open("eventSimulator/smokeCarbonMonoxideDetectedEvent.groovy", "r") + elif capability == "capability.carbonMonoxideDetector": + event = open("eventSimulator/carbonMonoxideDetectedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "carbonMonoxide.tested": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + #Write three events subsequently + if capability == "capability.smokeDetector": + event = open("eventSimulator/smokeCarbonMonoxideTestedEvent.groovy", "r") + elif capability == "capability.carbonMonoxideDetector": + event = open("eventSimulator/carbonMonoxideTestedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "battery": #Check which capability variable = eventVarMap[eventList[i]] @@ -645,7 +770,32 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "thermostatFanMode": + elif eventList[i] == "thermostatMode.cool": + event = open("eventSimulator/thermostatCoolModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatMode.auto": + event = open("eventSimulator/thermostatAutoModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatMode.emergencyHeat": + event = open("eventSimulator/thermostatEmergencyHeatModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatMode.heat": + event = open("eventSimulator/thermostatHeatModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatMode.off": + event = open("eventSimulator/thermostatOffModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatFanMode" or eventList[i] == "fanMode": #Write five events subsequently event = open("eventSimulator/thermostatAutoFanModeEvent.groovy", "r") for line in event: @@ -679,6 +829,31 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "thermostatFanMode.auto" or eventList[i] == "fanMode.auto": + event = open("eventSimulator/thermostatAutoFanModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatFanMode.fanCirculate" or eventList[i] == "fanMode.fanCirculate": + event = open("eventSimulator/thermostatFanCirculateFanModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatFanMode.circulate" or eventList[i] == "fanMode.circulate": + event = open("eventSimulator/thermostatCirculateFanModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatFanMode.fanOn" or eventList[i] == "fanMode.fanOn": + event = open("eventSimulator/thermostatFanOnFanModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "thermostatFanMode.on" or eventList[i] == "fanMode.on": + event = open("eventSimulator/thermostatOnFanModeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "thermostatOperatingState": #Write five events subsequently event = open("eventSimulator/thermostatOperatingStateAutoEvent.groovy", "r") @@ -753,7 +928,53 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "location": #Case for Location event + elif eventList[i] == "switch.on": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + if capability == "capability.switch": + event = open("eventSimulator/switchOnEvent.groovy", "r") + elif capability == "capability.switchLevel": + event = open("eventSimulator/switchLevelOnEvent.groovy", "r") + elif capability == "capability.relaySwitch": + event = open("eventSimulator/relaySwitchOnEvent.groovy", "r") + elif capability == "capability.colorControl": + event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r") + elif capability == "capability.colorTemperature": + event = open("eventSimulator/colorTemperatureSwitchOnEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "switch.off": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + if capability == "capability.switch": + event = open("eventSimulator/switchOffEvent.groovy", "r") + elif capability == "capability.switchLevel": + event = open("eventSimulator/switchLevelOffEvent.groovy", "r") + elif capability == "capability.relaySwitch": + event = open("eventSimulator/relaySwitchOffEvent.groovy", "r") + elif capability == "capability.colorControl": + event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r") + elif capability == "capability.colorTemperature": + event = open("eventSimulator/colorTemperatureSwitchOffEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "location" or eventList[i] == "position" or eventList[i] == "mode": #Case for Location event #Write three events subsequently event = open("eventSimulator/locationHomeEvent.groovy", "r") for line in event: @@ -773,6 +994,21 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "mode.home": + event = open("eventSimulator/locationHomeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "mode.away": + event = open("eventSimulator/locationAwayEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "mode.night": + event = open("eventSimulator/locationNightEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "sunrise": event = open("eventSimulator/locationSunriseEvent.groovy", "r") for line in event: @@ -806,6 +1042,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "acceleration.active": + event = open("eventSimulator/accelerationActiveEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "acceleration.inactive": + event = open("eventSimulator/accelerationInactiveEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "sleeping": #Write two events subsequently event = open("eventSimulator/sleepSleepingEvent.groovy", "r") @@ -819,6 +1065,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "sleeping.sleeping": + event = open("eventSimulator/sleepSleepingEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "sleeping.not sleeping": + event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "goal": #Write two events subsequently event = open("eventSimulator/stepGoalHighEvent.groovy", "r") @@ -934,7 +1190,27 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "contact": + elif eventList[i] == "alarm.both": + event = open("eventSimulator/alarmBothEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "alarm.siren": + event = open("eventSimulator/alarmSirenEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "alarm.strobe": + event = open("eventSimulator/alarmStrobeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "alarm.off": + event = open("eventSimulator/alarmOffEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "contact" or eventList[i] == "tamper.tampered": #Check which capability variable = eventVarMap[eventList[i]] if eventList[i] not in eventVarCounterMap.keys(): @@ -962,6 +1238,39 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "contact.closed": + #Check which capability + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + if capability == "capability.contactSensor": + event = open("eventSimulator/contactDefaultClosedEvent.groovy", "r") + elif capability == "capability.valve": + event = open("eventSimulator/valveClosedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "contact.open": + variable = eventVarMap[eventList[i]] + if eventList[i] not in eventVarCounterMap.keys(): + eventVarCounterMap[eventList[i]] = 1 + eventVarCount = 0 + else: + eventVarCount = eventVarCounterMap[eventList[i]] + eventVarCounterMap[eventList[i]] = eventVarCount + 1 + capability = capabilityMap[variable[eventVarCount]] + if capability == "capability.contactSensor": + event = open("eventSimulator/contactDefaultOpenEvent.groovy", "r") + elif capability == "capability.valve": + event = open("eventSimulator/valveOpenEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "status": #Write three events subsequently event = open("eventSimulator/musicPlayerPlayingEvent.groovy", "r") @@ -982,6 +1291,21 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "status.playing": + event = open("eventSimulator/musicPlayerPlayingEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "status.stopped": + event = open("eventSimulator/musicPlayerStoppedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "status.paused": + event = open("eventSimulator/musicPlayerPausedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "level": #Check which capability variable = eventVarMap[eventList[i]] @@ -1026,6 +1350,16 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "mute.muted": + event = open("eventSimulator/musicPlayerUnmutedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + elif eventList[i] == "mute.unmuted": + event = open("eventSimulator/musicPlayerMutedEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() elif eventList[i] == "temperature": #Check which capability variable = eventVarMap[eventList[i]] -- 2.34.1