class MyMonitor(xbmc.Monitor): def __init__(self): xbmc.Monitor.__init__(self) self.lights = None self.paused = False def _getPlayerType(self, data): if data['item']['type'] == 'episode': return 'tv' elif data['item']['type'] == 'movie': return 'movie' else: return None def _onPlay(self, data): playerType = self._getPlayerType(data) useCustomPauseSpeed = __settings__.getSetting( 'global_enable_pause_speed') if self.paused == False: useCustomPauseSpeed = False self.paused = False if playerType == None: log('Could not determine player type: %s' % data) return tvEnabled = __settings__.getSetting('tv_enabled') movieEnabled = __settings__.getSetting('movie_enabled') if (playerType == 'tv' and tvEnabled == 'true') or (playerType == 'movie' and movieEnabled == 'true'): for i in range(1, 5): if (useCustomPauseSpeed == True or useCustomPauseSpeed == "true"): stepSpeed = getPauseStepSpeed(i) else: stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMinBrightness(i)) else: self.lights.fade(i, getMinBrightness(i), stepSpeed) def _onStop(self, data): playerType = self._getPlayerType(data) self.paused = False if playerType == None: log('Coult not determine player type: %s' % data, xbmc.LOGWARNING) return if (playerType == 'tv' and __settings__.getSetting('tv_enabled') == 'true') or ( playerType == 'movie' and __settings__.getSetting('movie_enabled') == 'true'): for i in range(1, 5): stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMaxBrightness(i)) else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) def _onPause(self, data): self.paused = True useCustomPauseSpeed = __settings__.getSetting( 'global_enable_pause_speed') pauseDelay = int(__settings__.getSetting('global_pause_delay')) log('_onPause() - pause speed enabled: %s' % useCustomPauseSpeed) for i in range(1, 5): # we need to spread out pauseDelay because otherwise # it seems not all groups will be affected if useCustomPauseSpeed == True or useCustomPauseSpeed == "true": stepSpeed = getPauseStepSpeed(i) else: stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: if pauseDelay > 0: t = threading.Timer(pauseDelay, self.lights.brightness, [i, getMaxBrightness(i)], {}) t.start() else: self.lights.brightness(i, getMaxBrightness(i)) else: if pauseDelay > 0: t = threading.Timer(pauseDelay, self.lights.fade, [i, getMaxBrightness(i), stepSpeed], {}) t.start() else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) # we need to spread out pauseDelay because otherwise # it seems not all groups will be affected pauseDelay = pauseDelay + 0.25 def onSettingsChanged(self): host = __settings__.getSetting('light_host') port = __settings__.getSetting('light_port') # @TODO This needs to change so different groups can have different bulb types bulbtype = getBulbType(1) wait_duration = int(__settings__.getSetting('command_delay')) try: port = int(port) except ValueError: port = 8899 if self.lights == None: self.lights = Lights(host, port, bulbtype, wait_duration) else: self.lights.stopFadeThread() self.lights.setHost(host, port) self.lights.setBulbType(bulbtype) self.lights.setWaitDuration(wait_duration) for group in range(1, 5): if groupEnabled(group): self.lights.setGroupLight( group, maxBrightness=getMaxBrightness(group), minBrightness=getMinBrightness(group), color=getRgbColor(group)) if doInitBrightness(group): self.lights.brightness(group, getMaxBrightness(group)) if doInitColor(group): self.lights.color(group, getRgbColor(group)) else: self.lights.removeGroupLight(group) def onFadeOut(self, data): log('data: %s' % data) group = data['group'] if group == 'all': groups = range(1, 5) else: groups = [group] if data['brightness'] > -1: brightness = data['brightness'] else: brightness = getMinBrightness(group) for group in groups: self.lights.fade(group, brightness, getMainStepSpeed(group)) def onFadeIn(self, data): group = data['group'] if group == 'all': groups = range(1, 5) else: groups[group] for group in groups: self.lights.fade(group, getMaxBrightness(group), getMainStepSpeed(group)) def onNotification(self, sender, method, data): log("SENDER: %s --- METHOD %s --- DATA %s" % (sender, method, data)) data = json.loads(data) if str(sender) == 'mookfist-milights': if str(method) == 'Other.fade_out': self.onFadeOut(data) elif str(method) == 'Other.fade_in': self.onFadeIn(data) elif str(sender) == "xbmc" and str(method) == "Player.OnPlay": self._onPlay(data) elif str(sender) == "xbmc" and str(method) == "Player.OnStop": self._onStop(data) elif str(sender) == "xbmc" and str(method) == "Player.OnPause": self._onPause(data)
class MyMonitor(xbmc.Monitor): def __init__(self): xbmc.Monitor.__init__(self) self.lights = None self.paused = False def _getPlayerType(self, data): if data['item']['type'] == 'episode': return 'tv' elif data['item']['type'] == 'movie': return 'movie' else: return None def _onPlay(self, data): playerType = self._getPlayerType(data) useCustomPauseSpeed = __settings__.getSetting('global_enable_pause_speed') if self.paused == False: useCustomPauseSpeed = False self.paused = False if playerType == None: log('Could not determine player type: %s' % data) return tvEnabled = __settings__.getSetting('tv_enabled') movieEnabled = __settings__.getSetting('movie_enabled') if (playerType == 'tv' and tvEnabled == 'true') or (playerType == 'movie' and movieEnabled == 'true'): for i in range(1,5): if (useCustomPauseSpeed == True or useCustomPauseSpeed == "true"): stepSpeed = getPauseStepSpeed(i) else: stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMinBrightness(i)) else: self.lights.fade(i, getMinBrightness(i), stepSpeed) def _onStop(self, data): playerType = self._getPlayerType(data) self.paused = False if playerType == None: log('Coult not determine player type: %s' % data, xbmc.LOGWARNING) return if (playerType == 'tv' and __settings__.getSetting('tv_enabled') == 'true') or (playerType == 'movie' and __settings__.getSetting('movie_enabled') == 'true'): for i in range(1,5): stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMaxBrightness(i)) else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) def _onPause(self, data): self.paused = True useCustomPauseSpeed = __settings__.getSetting('global_enable_pause_speed') pauseDelay = int(__settings__.getSetting('global_pause_delay')) log('_onPause() - pause speed enabled: %s' % useCustomPauseSpeed) for i in range(1,5): # we need to spread out pauseDelay because otherwise # it seems not all groups will be affected if useCustomPauseSpeed == True or useCustomPauseSpeed == "true": stepSpeed = getPauseStepSpeed(i) else: stepSpeed = getMainStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: if pauseDelay > 0: t = threading.Timer(pauseDelay, self.lights.brightness, [i, getMaxBrightness(i)], {}) t.start() else: self.lights.brightness(i, getMaxBrightness(i)) else: if pauseDelay > 0: t = threading.Timer(pauseDelay, self.lights.fade, [i, getMaxBrightness(i), stepSpeed], {}) t.start() else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) # we need to spread out pauseDelay because otherwise # it seems not all groups will be affected pauseDelay = pauseDelay + 0.25 def onSettingsChanged(self): host = __settings__.getSetting('light_host') port = __settings__.getSetting('light_port') # @TODO This needs to change so different groups can have different bulb types bulbtype = getBulbType(1) wait_duration = int(__settings__.getSetting('command_delay')) try: port = int(port) except ValueError: port = 8899 if self.lights == None: self.lights = Lights(host, port, bulbtype, wait_duration) else: self.lights.stopFadeThread() self.lights.setHost(host, port) self.lights.setBulbType(bulbtype) self.lights.setWaitDuration(wait_duration) for group in range(1,5): if groupEnabled(group): self.lights.setGroupLight(group, maxBrightness=getMaxBrightness(group), minBrightness=getMinBrightness(group), color=getRgbColor(group)) if doInitBrightness(group): self.lights.brightness(group, getMaxBrightness(group)) if doInitColor(group): self.lights.color(group, getRgbColor(group)) else: self.lights.removeGroupLight(group) def onNotification(self, sender, method, data): # log("SENDER: %s --- METHOD %s --- DATA %s" % (sender, method, data)) data = json.loads(data) if str(sender) == "xbmc" and str(method) == "Player.OnPlay": self._onPlay(data) elif str(sender) == "xbmc" and str(method) == "Player.OnStop": self._onStop(data) elif str(sender) == "xbmc" and str(method) == "Player.OnPause": self._onPause(data)
class MyMonitor(xbmc.Monitor): def __init__(self): xbmc.Monitor.__init__(self) self.lights = None def _getPlayerType(self, data): if data['item']['type'] == 'episode': return 'tv' elif data['item']['type'] == 'movie': return 'movie' else: return None def _onPlay(self, data): playerType = self._getPlayerType(data) if playerType == None: log('Could not determine player type: %s' % data) return tvEnabled = __settings__.getSetting('tv_enabled') movieEnabled = __settings__.getSetting('movie_enabled') if (playerType == 'tv' and tvEnabled == 'true') or (playerType == 'movie' and movieEnabled == 'true'): for i in range(1, 4): stepSpeed = getStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMinBrightness(i)) else: self.lights.fade(i, getMinBrightness(i), stepSpeed) def _onStop(self, data): playerType = self._getPlayerType(data) if playerType == None: log('Coult not determine player type: %s' % data, xbmc.LOGWARNING) return if (playerType == 'tv' and __settings__.getSetting('tv_enabled') == 'true') or ( playerType == 'movie' and __settings__.getSetting('movie_enabled') == 'true'): for i in range(1, 4): stepSpeed = getStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMaxBrightness(i)) else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) def onSettingsChanged(self): host = __settings__.getSetting('light_host') port = __settings__.getSetting('light_port') # @TODO This needs to change so different groups can have different bulb types bulbtype = getBulbType(1) wait_duration = int(__settings__.getSetting('command_delay')) try: port = int(port) except ValueError: port = 8899 if self.lights == None: self.lights = Lights(host, port, bulbtype, wait_duration) else: self.lights.stopFadeThread() self.lights.setHost(host, port) self.lights.setBulbType(bulbtype) self.lights.setWaitDuration(wait_duration) for i in [0, 1, 2, 3]: group = i + 1 if groupEnabled(group): self.lights.setGroupLight( group, maxBrightness=getMaxBrightness(group), minBrightness=getMinBrightness(group), color=getRgbColor(group)) if doInitBrightness(group): self.lights.brightness(group, getMaxBrightness(group)) if doInitColor(group): self.lights.color(group, getRgbColor(group)) else: self.lights.removeGroupLight(group) def onNotification(self, sender, method, data): # log("SENDER: %s --- METHOD %s --- DATA %s" % (sender, method, data)) data = json.loads(data) if str(sender) == "xbmc" and str(method) == "Player.OnPlay": self._onPlay(data) elif str(sender) == "xbmc" and str(method) == "Player.OnStop": self._onStop(data)
class MyMonitor(xbmc.Monitor): def __init__(self): xbmc.Monitor.__init__(self) self.lights = None def _getPlayerType(self, data): if data['item']['type'] == 'episode': return 'tv' elif data['item']['type'] == 'movie': return 'movie' else: return None def _onPlay(self, data): playerType = self._getPlayerType(data) if playerType == None: log('Could not determine player type: %s' % data) return tvEnabled = __settings__.getSetting('tv_enabled') movieEnabled = __settings__.getSetting('movie_enabled') if (playerType == 'tv' and tvEnabled == 'true') or (playerType == 'movie' and movieEnabled == 'true'): for i in range(1,4): stepSpeed = getStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMinBrightness(i)) else: self.lights.fade(i, getMinBrightness(i), stepSpeed) def _onStop(self, data): playerType = self._getPlayerType(data) if playerType == None: log('Coult not determine player type: %s' % data, xbmc.LOGWARNING) return if (playerType == 'tv' and __settings__.getSetting('tv_enabled') == 'true') or (playerType == 'movie' and __settings__.getSetting('movie_enabled') == 'true'): for i in range(1,4): stepSpeed = getStepSpeed(i) if stepSpeed == None or self.lights.brightness(i) == None: self.lights.brightness(i, getMaxBrightness(i)) else: self.lights.fade(i, getMaxBrightness(i), stepSpeed) def onSettingsChanged(self): host = __settings__.getSetting('light_host') port = __settings__.getSetting('light_port') # @TODO This needs to change so different groups can have different bulb types bulbtype = getBulbType(1) wait_duration = int(__settings__.getSetting('command_delay')) try: port = int(port) except ValueError: port = 8899 if self.lights == None: self.lights = Lights(host, port, bulbtype, wait_duration) else: self.lights.stopFadeThread() self.lights.setHost(host, port) self.lights.setBulbType(bulbtype) self.lights.setWaitDuration(wait_duration) for i in [0,1,2,3]: group = i + 1 if groupEnabled(group): self.lights.setGroupLight(group, maxBrightness=getMaxBrightness(group), minBrightness=getMinBrightness(group), color=getRgbColor(group)) if doInitBrightness(group): self.lights.brightness(group, getMaxBrightness(group)) if doInitColor(group): self.lights.color(group, getRgbColor(group)) else: self.lights.removeGroupLight(group) def onNotification(self, sender, method, data): # log("SENDER: %s --- METHOD %s --- DATA %s" % (sender, method, data)) data = json.loads(data) if str(sender) == "xbmc" and str(method) == "Player.OnPlay": self._onPlay(data) elif str(sender) == "xbmc" and str(method) == "Player.OnStop": self._onStop(data)