X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=Extractor%2FExtractorScript.py;h=f972b70f78763701106c05be19fd7f7ffd28b5ac;hp=5d92fc4dd1e315263098affa8265f16f695e4bd1;hb=740114c29560d182bbc0d0bf33cf1b8d226701cb;hpb=24689b7c0c3eb6e7405ae89768d8e710b79bcfcf diff --git a/Extractor/ExtractorScript.py b/Extractor/ExtractorScript.py index 5d92fc4..f972b70 100644 --- a/Extractor/ExtractorScript.py +++ b/Extractor/ExtractorScript.py @@ -15,7 +15,6 @@ app2Subscribe = False # Mapping for event type and number of events # e.g., switch has 2 events: on and off eventTypeCounterMap = {'lock': 2, - 'unlock' : 1, 'nfcTouch' : 1, 'app' : 1, 'button' : 2, @@ -40,16 +39,16 @@ eventTypeCounterMap = {'lock': 2, 'sunriseTime' : 1, 'acceleration' : 2, 'sleeping' : 2, - 'goal' : 1, - 'steps' : 1, + 'goal' : 2, + 'steps' : 2, 'color' : 1, 'colorTemperature' : 1, 'hue' : 1, 'saturation' : 1, 'energy' : 1, - 'power' : 1, + 'power' : 2, 'illuminance' : 1, - 'humidity' : 1, + 'humidity' : 2, 'alarm' : 4, 'contact' : 2, 'status' : 3, @@ -57,10 +56,11 @@ eventTypeCounterMap = {'lock': 2, 'trackDescription' : 1, 'trackData' : 1, 'mute' : 2, - 'temperature' : 1, + 'temperature' : 2, 'heatingSetpoint' : 1, 'coolingSetpoint' : 1, - 'thermostatSetpoint' : 1} + 'thermostatSetpoint' : 1, + 'threeAxis' : 1} # Mapping for specific event types eventTypesMap = {'alarm.both': 'alarm', @@ -72,6 +72,7 @@ eventTypesMap = {'alarm.both': 'alarm', 'tamper.tampered' : 'contact', 'doorState.open' : 'doorState', 'doorState.closed' : 'doorState', + 'position' : 'location', 'mode' : 'location', 'mode.away' : 'location', 'mode.home' : 'location', @@ -213,7 +214,10 @@ def ExtractFunctions(F, appName): #print "DEBUG: %s - %s" % (variable, Temp) #print capabilityMap #print "DEBUG: location variable: %s" % Temp - + + #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] @@ -257,6 +261,7 @@ def AnalyzeCapabilities(Temp, appName, F): Temp == "capability.switchLevel" or Temp == "capability.illuminanceMeasurement" or Temp == "capability.colorControl" or + Temp == "capability.colorTemperature" or #Motion related Temp == "capability.motionSensor" or Temp == "capability.accelerationSensor" or @@ -285,7 +290,7 @@ def AnalyzeCapabilities(Temp, appName, F): def AnalyzePhysicalInteraction(app1Capab, app2Capab): #Light if ("capability.illuminanceMeasurement" in app1Capab) and ("capability.switch" in app2Capab or - "capability.switchLevel" in app2Capab or "capability.colorControl" in app2Capab): + "capability.switchLevel" in app2Capab or "capability.colorControl" or "capability.colorTemperature" in app2Capab): print ("\nWARNING: Potential PHYSICAL CONFLICT (light) detected between App1 and App2!\n") #Motion # TODO: Technically this is not entirely precise since we need to be able to detect that the other app creates motion @@ -331,7 +336,12 @@ def ExtractEvents(extractedEvents): #print "DEBUG: App1: %d" % indexApp1 #print "DEBUG: App2: %d" % indexApp2 #print "DEBUG: eventList: %d" % len(eventList) - isApp1 = True + #print eventAppList + #print eventList + if indexApp2Start > 0: + isApp1 = True + else: + isApp1 = False while counter < numOfActualEvents: # Interleave events from App1 and App2 if isApp1 is True: @@ -359,9 +369,6 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "unlock": - #Don't do anything for this case - counter = counter - 1 elif eventList[i] == "nfcTouch": event = open("eventSimulator/nfcTouchEvent.groovy", "r") for line in event: @@ -455,6 +462,7 @@ def ExtractEvents(extractedEvents): extractedEvents.write(line) event.close() elif eventList[i] == "motion": + print("HERE????") #Write two events subsequently event = open("eventSimulator/motionActiveEvent.groovy", "r") for line in event: @@ -655,6 +663,8 @@ def ExtractEvents(extractedEvents): eventVarCounterMap[eventList[i]] = eventVarCount + 1 capability = capabilityMap[variable[eventVarCount]] #Write two events subsequently + print("//////////////////////") + print(capability) if capability == "capability.switch": event = open("eventSimulator/switchOnEvent.groovy", "r") elif capability == "capability.switchLevel": @@ -737,36 +747,42 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "acceleration.active": - event = open("eventSimulator/accelerationDefaultActiveEvent.groovy", "r") + elif eventList[i] == "sleeping": + #Write two events subsequently + event = open("eventSimulator/sleepSleepingEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "acceleration.inactive": - event = open("eventSimulator/accelerationDefaultInactiveEvent.groovy", "r") + extractedEvents.write("\n\t\t\tbreak\n") + counter = counter + 1 + extractedEvents.write("\t\tcase %d:\n" % counter) + event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "sleeping": + elif eventList[i] == "goal": #Write two events subsequently - event = open("eventSimulator/sleepSleepingEvent.groovy", "r") + event = open("eventSimulator/stepGoalHighEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() extractedEvents.write("\n\t\t\tbreak\n") counter = counter + 1 extractedEvents.write("\t\tcase %d:\n" % counter) - event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r") + event = open("eventSimulator/stepGoalLowEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "goal": - event = open("eventSimulator/stepGoalEvent.groovy", "r") + elif eventList[i] == "steps": + #Write two events subsequently + event = open("eventSimulator/stepStepsHighEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() - elif eventList[i] == "steps": - event = open("eventSimulator/stepStepsEvent.groovy", "r") + extractedEvents.write("\n\t\t\tbreak\n") + counter = counter + 1 + extractedEvents.write("\t\tcase %d:\n" % counter) + event = open("eventSimulator/stepStepsLowEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() @@ -796,7 +812,15 @@ def ExtractEvents(extractedEvents): extractedEvents.write(line) event.close() elif eventList[i] == "power": - event = open("eventSimulator/powerMeterEvent.groovy", "r") + #Write two events subsequently + event = open("eventSimulator/powerMeterHighPowerEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + extractedEvents.write("\n\t\t\tbreak\n") + counter = counter + 1 + extractedEvents.write("\t\tcase %d:\n" % counter) + event = open("eventSimulator/powerMeterLowPowerEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() @@ -806,7 +830,14 @@ def ExtractEvents(extractedEvents): extractedEvents.write(line) event.close() elif eventList[i] == "humidity": - event = open("eventSimulator/humidityMeasurementEvent.groovy", "r") + event = open("eventSimulator/humidityHighMeasurementEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + extractedEvents.write("\n\t\t\tbreak\n") + counter = counter + 1 + extractedEvents.write("\t\tcase %d:\n" % counter) + event = open("eventSimulator/humidityLowMeasurementEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() @@ -901,6 +932,8 @@ def ExtractEvents(extractedEvents): event = open("eventSimulator/switchLevelEvent.groovy", "r") elif capability == "capability.colorControl": event = open("eventSimulator/colorLevelChangeEvent.groovy", "r") + elif capability == "capability.switch": + event = open("eventSimulator/switchLevelChangeEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() @@ -937,10 +970,21 @@ def ExtractEvents(extractedEvents): eventVarCount = eventVarCounterMap[eventList[i]] eventVarCounterMap[eventList[i]] = eventVarCount + 1 capability = capabilityMap[variable[eventVarCount]] + #Write two events subsequently + if capability == "capability.thermostat": + event = open("eventSimulator/temperatureHighEvent.groovy", "r") + elif capability == "capability.temperatureMeasurement": + event = open("eventSimulator/temperatureHighMeasurementEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() + extractedEvents.write("\n\t\t\tbreak\n") + counter = counter + 1 + extractedEvents.write("\t\tcase %d:\n" % counter) if capability == "capability.thermostat": - event = open("eventSimulator/temperatureEvent.groovy", "r") + event = open("eventSimulator/temperatureLowEvent.groovy", "r") elif capability == "capability.temperatureMeasurement": - event = open("eventSimulator/temperatureMeasurementEvent.groovy", "r") + event = open("eventSimulator/temperatureLowMeasurementEvent.groovy", "r") for line in event: extractedEvents.write(line) event.close() @@ -959,6 +1003,11 @@ def ExtractEvents(extractedEvents): for line in event: extractedEvents.write(line) event.close() + elif eventList[i] == "threeAxis": + event = open("eventSimulator/threeAxisChangeEvent.groovy", "r") + for line in event: + extractedEvents.write(line) + event.close() ###TODO: Add more events later extractedEvents.write("\n\t\t\tbreak\n")