def read_settings(): settings_storage['disable_connection_message'] = ADDON.getSettingBool( "disableConnectionMessage") settings_storage['reloadFlash'] = ADDON.getSettingBool("reloadFlash") settings_storage['initialFlash'] = ADDON.getSettingBool("initialFlash") settings_storage['forceOnSunset'] = ADDON.getSettingBool("forceOnSunset") settings_storage['daylightDisable'] = ADDON.getSettingBool( "daylightDisable") cache.set("script.service.hue.daylightDisable", ADDON.getSettingBool("daylightDisable")) settings_storage['enableSchedule'] = ADDON.getSettingBool("enableSchedule") settings_storage['startTime'] = ADDON.getSetting( "startTime") # string HH:MM settings_storage['endTime'] = ADDON.getSetting("endTime") # string HH:MM settings_storage['disableConnectionMessage'] = ADDON.getSettingBool( "disableConnectionMessage") settings_storage['videoMinimumDuration'] = ADDON.getSettingInt( "video_MinimumDuration" ) # Setting in Minutes. Kodi library uses seconds, needs to be converted. settings_storage['video_enableMovie'] = ADDON.getSettingBool("video_Movie") settings_storage['video_enableMusicVideo'] = ADDON.getSettingBool( "video_MusicVideo") settings_storage['video_enableEpisode'] = ADDON.getSettingBool( "video_Episode") settings_storage['video_enableOther'] = ADDON.getSettingBool("video_Other") settings_storage['ambiEnabled'] = ADDON.getSettingBool("group3_enabled") settings_storage['show500Error'] = ADDON.getSettingBool("show500Error") _validate_schedule() _validate_ambilight()
def _validate_ambilight(): logger.debug("Validate ambilight config. Enabled: {}".format( settings_storage['ambiEnabled'])) if settings_storage['ambiEnabled']: if settings_storage['zones'] == "0": light_ids = ADDON.getSetting("group3_Lights") if light_ids == "-1": logger.error("No ambilights selected") xbmcgui.Dialog().notification( _("Hue Service"), _("No lights selected for Ambilight."), icon=xbmcgui.NOTIFICATION_ERROR) ADDON.setSettingBool("group3_enabled", False) settings_storage['ambiEnabled'] = False if settings_storage['zones'] == "1": light_idsLeft = ADDON.getSetting("group3_LightsLeft") if light_idsLeft == "-1": logger.error("No ambilights selected for left zone") xbmcgui.Dialog().notification( _("Hue Service"), _("No lights selected for Ambilight in left zone."), icon=xbmcgui.NOTIFICATION_ERROR) ADDON.setSettingBool("group3_enabled", False) settings_storage['ambiEnabled'] = False light_idsRight = ADDON.getSetting("group3_LightsRight") if light_idsRight == "-1": logger.error("No ambilights selected for right zone") xbmcgui.Dialog().notification( _("Hue Service"), _("No lights selected for Ambilight in right zone."), icon=xbmcgui.NOTIFICATION_ERROR) ADDON.setSettingBool("group3_enabled", False) settings_storage['ambiEnabled'] = False
def _validate_ambilight(): xbmc.log( f"[script.service.hue] Validate ambilight config. Enabled: {ADDON.getSettingBool('group3_enabled')}" ) if ADDON.getSettingBool("group3_enabled"): light_ids = ADDON.getSetting("group3_Lights") if light_ids == "-1": ADDON.setSettingBool("group3_enabled", False) xbmc.log("[script.service.hue] No ambilights selected") notification(_("Hue Service"), _("No lights selected for Ambilight."), icon=xbmcgui.NOTIFICATION_ERROR)
def __init__(self, light_group_id, hue_connection, initial_state=STATE_STOPPED, video_info_tag=xbmc.InfoTagVideo): self.hue_connection = hue_connection self.light_group_id = light_group_id self.bridge = hue_connection.bridge self.monitor = hue_connection.monitor self.group0 = self.bridge.groups[0] self.bridge_error500 = 0 self.state = initial_state self.enabled = ADDON.getSettingBool( f"group{self.light_group_id}_enabled") self.saved_light_states = {} self.video_info_tag = video_info_tag self.image_process = imageprocess.ImageProcess() self.converterA = Converter(GamutA) self.converterB = Converter(GamutB) self.converterC = Converter(GamutC) self.helper = ColorHelper( GamutC) # Gamut doesn't matter for this usage self.enabled = ADDON.getSettingBool( f"group{self.light_group_id}_enabled") self.transition_time = int( ADDON.getSettingInt(f"group{self.light_group_id}_TransitionTime") / 100 ) # This is given as a multiple of 100ms and defaults to 4 (400ms). transition_time:10 will make the transition last 1 second. self.force_on = ADDON.getSettingBool( f"group{self.light_group_id}_forceOn") self.disable_labs = ADDON.getSettingBool( f"group{self.light_group_id}_disableLabs") self.min_bri = ADDON.getSettingInt( f"group{self.light_group_id}_MinBrightness" ) * 255 / 100 # convert percentage to value 1-254 self.max_bri = ADDON.getSettingInt( f"group{self.light_group_id}_MaxBrightness" ) * 255 / 100 # convert percentage to value 1-254 self.saturation = ADDON.getSettingNumber( f"group{self.light_group_id}_Saturation") self.capture_size_x = ADDON.getSettingInt( f"group{self.light_group_id}_CaptureSize") self.resume_state = ADDON.getSettingBool( f"group{self.light_group_id}_ResumeState") self.resume_transition = ADDON.getSettingInt( f"group{self.light_group_id}_ResumeTransition" ) * 10 # convert seconds to multiple of 100ms self.update_interval = ADDON.getSettingInt( f"group{self.light_group_id}_Interval" ) / 1000 # convert MS to seconds if self.update_interval == 0: self.update_interval = 0.1 if self.enabled: self.ambi_lights = {} light_ids = ADDON.getSetting( f"group{self.light_group_id}_Lights").split(",") index = 0 if len(light_ids) > 0: for L in light_ids: gamut = self._get_light_gamut(self.bridge, L) light = { L: { 'gamut': gamut, 'prev_xy': (0, 0), "index": index } } self.ambi_lights.update(light) index = index + 1 super(xbmc.Player).__init__()