def apply_other_settings(self): self.motion_enable = utils.get_bool_setting('motion_enable') self.sound_enable = utils.get_bool_setting('sound_enable') self.duration = utils.get_int_setting('preview_duration') self.scaling = utils.get_float_setting('preview_scaling') self.position = utils.get_setting('preview_position').lower() motion_trigger_interval = utils.get_int_setting('motion_trigger_interval') sound_trigger_interval = utils.get_int_setting('sound_trigger_interval') if self.motion_enable and self.sound_enable: self.trigger_interval = min(motion_trigger_interval, sound_trigger_interval) elif self.motion_enable: self.trigger_interval = motion_trigger_interval elif self.sound_enable: self.trigger_interval = sound_trigger_interval if self.motion_enable: command = self.camera.set_motion_detect_config() command['isEnable'] = 1 command['sensitivity'] = utils.get_int_setting('motion_sensitivity') command['triggerInterval'] = motion_trigger_interval self.send_command(command) if self.sound_enable: command = self.camera.set_sound_detect_config() command['isEnable'] = 1 command['sensitivity'] = utils.get_int_setting('sound_sensitivity') command['triggerInterval'] = sound_trigger_interval for iday in range(7): command['schedule{0:d}'.format(iday)] = 2**48 - 1 self.send_command(command)
def onPlayBackStarted(self): if utils.get_bool_setting("activity_enable") == False: return service = self.service # in the future we can either use a call-back pattern (if I can figure that out in python) # for multiple bridges that would allow the service logic (or a bridge-manager object) to fire events to all bridges playingFile = self.getPlayingFile() # Can't use "content" to determien the content as it shows to be unreliable (as of Jarvis b4) # content = xbmc.getInfoLabel('Container.Content') content = determineContent(playingFile) utils.log_verbose("content: " + content + " file: " + playingFile) #for l in infolabels: # ld = xbmc.getInfoLabel(l) # if ld != "": # utils.log_verbose(l + ": " + ld) if self.isPlaying : utils.log_verbose(content + ": " + playingFile) # activity references a scene or none if (content): if (content == "movie"): return service.bridge.applyScene(getSceneByActivity("movie")) elif (content == "tv"): return service.bridge.applyScene(getSceneByActivity("tv")) elif (content == "music"): return service.bridge.applyScene(getSceneByActivity("music")) else: return service.bridge.applyScene(getSceneByActivity("video")) else: return service.bridge.applyScene(getSceneByActivity("video"))
def apply_basic_settings(self): global SCENES scenenames = SCENES.keys() labels = map(lambda x:x.lower(),scenenames) # Get the bridges self.bridge = LimitlessBridge(__addon__.getSetting("b0_host"),__addon__.getSetting("b0_port")) # Get the scenes #labels =["normal","dimmed","reading","movie","tv","music"] #scenenames = ["Normal","Dimmed","Reading","Movie","TV","Music"] for label,scenename in zip (labels,scenenames): scene = LimitlessScene(scenename,0,False) for i in ("0","1","2","3","4"): enabled=utils.get_bool_setting("b0_l"+i+"_"+label+"_enable") if enabled: color = utils.get_setting("b0_l"+i+"_"+label+"_color") brightness = utils.get_setting("b0_l"+i+"_"+label+"_brightness") light = LimitlessLight(self.bridge,'rgbw',i,True,color,brightness) utils.log_verbose("Settings: label: " + label + " scenename: " + scenename + " lights: " + str(light)) scene.addLight(light) SCENES[scenename] = scene for activity in ACTIVITIES.keys(): # map activity to scenes activity_scene = utils.get_setting("activity_"+activity) ACTIVITIES[activity] = activity_scene utils.log_verbose("Enabled: " + utils.get_setting("activity_enable")) return True
def playVideo(self): self.player = utils.StopResumePlayer() self.player.maybe_stop_current() if utils.get_bool_setting('mjpeg'): camera.enable_mjpeg() url = camera.mjpeg_url else: url = camera.video_url self.player.play(url)
def apply_other_settings(self): self.motion_enable = utils.get_bool_setting('motion_enable') self.sound_enable = utils.get_bool_setting('sound_enable') self.duration = utils.get_int_setting('preview_duration') self.scaling = utils.get_float_setting('preview_scaling') self.position = utils.get_setting('preview_position').lower() motion_trigger_interval = utils.get_int_setting( 'motion_trigger_interval') sound_trigger_interval = utils.get_int_setting( 'sound_trigger_interval') if self.motion_enable and self.sound_enable: self.trigger_interval = min(motion_trigger_interval, sound_trigger_interval) elif self.motion_enable: self.trigger_interval = motion_trigger_interval elif self.sound_enable: self.trigger_interval = sound_trigger_interval if self.motion_enable: command = self.camera.set_motion_detect_config() command['isEnable'] = 1 command['sensitivity'] = utils.get_int_setting( 'motion_sensitivity') command['triggerInterval'] = motion_trigger_interval self.send_command(command) if self.sound_enable: command = self.camera.set_sound_detect_config() command['isEnable'] = 1 command['sensitivity'] = utils.get_int_setting('sound_sensitivity') command['triggerInterval'] = sound_trigger_interval for iday in range(7): command['schedule{0:d}'.format(iday)] = 2**48 - 1 self.send_command(command)
def __init__(self,scenename): utils.log_normal("Applying Scene: " + scenename) self.bridge = LimitlessBridge(addon.getSetting("b0_host"),addon.getSetting("b0_port")) scene = LimitlessScene(scenename,0,False) for i in ("0","1","2","3","4"): lowerscenename = scenename.lower() enabled=utils.get_bool_setting("b0_l"+i+"_"+lowerscenename+"_enable") if enabled: color = utils.get_setting("b0_l"+i+"_"+lowerscenename+"_color") brightness = utils.get_setting("b0_l"+i+"_"+lowerscenename+"_brightness") light = LimitlessLight(self.bridge,'rgbw',i,True,color,brightness) utils.log_verbose("Settings: label: " + lowerscenename + " scenename: " + scenename + " lights: " + str(light)) scene.addLight(light) self.bridge.applyScene(scene)
def onPlayBackPaused(self): if utils.get_bool_setting("activity_enable"): return self.service.bridge.applyScene(getSceneByActivity("pause"))
def onShutdown(self): if utils.get_bool_setting("activity_enable"): return self.service.bridge.applyScene(getSceneByActivity("shutdown"))
dialog = xbmcgui.Dialog().ok("Activities Enabled","Scenes will be applied according to your activity settings") def disabledDialog(): dialog = xbmcgui.Dialog().ok("Activities Disabled","Scenes will be no loger be applied. You may still manually control the scene.") # Args: # argv[1] (first argument) # "scene" - will configure a named scene. # - argv[2] - scene name ("TV","Movie","Normal","Off","Reading","Dimmed","Video","Music" etc.) # "toggle" - will toggle activity handling state # "activity"- will set activity handling state # - argv[2] - "true"|"false" # "settings"- will open settings dialog # None - will open an options dialog to allow user to choose the above capabilities if __name__ == "__main__": count = len(sys.argv) - 1 activityState = utils.get_bool_setting("activity_enable") currentState = "Enabled" if activityState else "Disabled" toggleState = "Disable" if activityState else "Enable" if count > 0: if sys.argv[1] == "scene": Main(sys.argv[2]) elif sys.argv[1] == "toggle": val = "false" if activityState else "true" utils.set_setting("activity_enable",val) if val == "false": disabledDialog() else: enabledDialog() elif sys.argv[1] == "activity": val = "true" try: