def configure_scene(self, group_id, action): scene = self.select_hue_scene() if scene is not None: # group0_startSceneID ADDON.setSettingString(f"group{group_id}_{action}SceneID", scene[0]) ADDON.setSettingString(f"group{group_id}_{action}SceneName", scene[1]) ADDON.openSettings()
def connect_bridge(self, silent=False): xbmc.log( f"[script.service.hue] in connect_bridge() with settings: bridgeIP: {self.bridge_ip}, bridgeUser: {self.bridge_user}" ) if self.bridge_ip and self.bridge_user: if not self._check_version(): xbmc.log( "[script.service.hue] in connect_bridge(): Bridge not responding to connection test, attempt finding a new bridge IP." ) if self._discover_bridge_ip(): xbmc.log( f"[script.service.hue] in connect_bridge(): New IP found: {self.bridge_ip}. Saving" ) ADDON.setSettingString("bridgeIP", self.bridge_ip) else: xbmc.log("[script.service.hue] Bridge not found") notification(_("Hue Service"), _("Bridge connection failed"), icon=xbmcgui.NOTIFICATION_ERROR) self.connected = False return xbmc.log("[script.service.hue] in Connect(): Checking User") if self._check_user(): bridge = qhue.Bridge(self.bridge_ip, self.bridge_user, timeout=QHUE_TIMEOUT) self.connected = True self.bridge = bridge xbmc.log( f"[script.service.hue] Successfully connected to Hue Bridge: {self.bridge_ip}" ) if not silent: notification(_("Hue Service"), _("Hue connected"), sound=False) return else: xbmc.log("[script.service.hue] Bridge not responding") notification(_("Hue Service"), _("Bridge connection failed"), icon=xbmcgui.NOTIFICATION_ERROR) self.connected = False else: xbmc.log("[script.service.hue] Bridge not configured") notification(_("Hue Service"), _("Bridge not configured"), icon=xbmcgui.NOTIFICATION_ERROR) self.connected = False
def configure_ambilights(self, group_id): lights = self.select_hue_lights() light_names = [] color_lights = [] if lights is not None: for L in lights: light_names.append(self._get_light_name(L)) color_lights.append(L) ADDON.setSettingString(f"group{group_id}_Lights", ','.join(color_lights)) ADDON.setSettingString(f"group{group_id}_LightNames", ', '.join(light_names)) ADDON.setSettingBool(f"group{group_id}_enabled", True) ADDON.openSettings()
def discover_bridge(self): xbmc.log("[script.service.hue] Start bridgeDiscover") # Create new config if none exists. Returns success or fail as bool ADDON.setSettingString("bridgeIP", "") ADDON.setSettingString("bridgeUser", "") self.bridge_ip = "" self.bridge_user = "" self.connected = False progress_bar = xbmcgui.DialogProgress() progress_bar.create(_('Searching for bridge...')) progress_bar.update(5, _("Discovery started")) complete = False while not progress_bar.iscanceled( ) and not complete and not self.monitor.abortRequested(): progress_bar.update(percent=10, message=_("N-UPnP discovery...")) bridge_ip_found = self._discover_nupnp() if not bridge_ip_found and not progress_bar.iscanceled(): manual_entry = xbmcgui.Dialog().yesno( _("Bridge not found"), _("Bridge not found automatically. Please make sure your bridge is up to date and has access to the internet. [CR]Would you like to enter your bridge IP manually?" )) if manual_entry: self.bridge_ip = xbmcgui.Dialog().numeric( 3, _("Bridge IP")) if self.bridge_ip: progress_bar.update(percent=50, message=_("Connecting...")) if self._check_version() and self._check_bridge_model( ) and not progress_bar.iscanceled(): progress_bar.update(percent=100, message=_("Found bridge: ") + self.bridge_ip) self.monitor.waitForAbort(1) bridge_user_created = self._create_user(progress_bar) if bridge_user_created: xbmc.log( f"[script.service.hue] User created: {self.bridge_user}" ) progress_bar.update( percent=90, message=_("User Found![CR]Saving settings...")) ADDON.setSettingString("bridgeIP", self.bridge_ip) ADDON.setSettingString("bridgeUser", self.bridge_user) progress_bar.update(percent=100, message=_("Complete!")) self.monitor.waitForAbort(5) progress_bar.close() xbmc.log( "[script.service.hue] Bridge discovery complete") self.connect_bridge(True) return True elif progress_bar.iscanceled(): xbmc.log("[script.service.hue] Cancelled 2") complete = True progress_bar.update(percent=100, message=_("Cancelled")) progress_bar.close() else: xbmc.log( f"[script.service.hue] User not created, received: {self.bridge_user}" ) progress_bar.update( percent=100, message= _("User not found[CR]Check your bridge and network." )) self.monitor.waitForAbort(5) complete = True progress_bar.close() return elif progress_bar.iscanceled(): xbmc.log("[script.service.hue] Cancelled 3") complete = True progress_bar.update(percent=100, message=_("Cancelled")) progress_bar.close() else: progress_bar.update( percent=100, message=_( "Bridge not found[CR]Check your bridge and network." )) xbmc.log( "[script.service.hue] Bridge not found, check your bridge and network" ) self.monitor.waitForAbort(5) complete = True progress_bar.close() xbmc.log("[script.service.hue] Cancelled 4") complete = True progress_bar.update(percent=100, message=_("Cancelled")) progress_bar.close() if progress_bar.iscanceled(): xbmc.log( "[script.service.hue] Bridge discovery cancelled by user 5") progress_bar.update(percent=100, message=_("Cancelled")) progress_bar.close()