Adding granularity into event generation.
[smartthings-infrastructure.git] / Extractor / ExtractorScript.py
old mode 100644 (file)
new mode 100755 (executable)
index 1105eda..fd7b5b8
@@ -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]]