Пример #1
0
 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()
Пример #2
0
    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
Пример #3
0
    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()
Пример #4
0
    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()