/// <summary>
        /// Cancels the current learning operation.
        /// </summary>
        /// <param name="controllerId">ID of the controller doing the learning.</param>
        /// <param name="lessonId">ID of the learning operation to cancel.</param>
        public static void CancelLearning(int controllerId, string lessonId)
        {
            BroadLinkController controller = ServiceWrapper.config.broadLinks.Get(controllerId);

            if (controller == null)
            {
                return;
            }
            controller.CancelLearning(lessonId);
        }
        /// <summary>
        /// Returns the current lesson id or null if no learning operation is currently active.
        /// </summary>
        /// <param name="controllerId">ID of the controller doing the learning.</param>
        /// <returns></returns>
        public static string GetCurrentLessonId(int controllerId)
        {
            BroadLinkController controller = ServiceWrapper.config.broadLinks.Get(controllerId);

            if (controller == null)
            {
                return(null);
            }
            return(controller.GetCurrentLessonId());
        }
        /// <summary>
        /// Begins learning command codes for the specified command and returns the lesson ID which is a unique number assigned to this learning session.
        /// If the command ID is invalid, returns null.
        /// If a lesson operation is already in progress for the specified controller, returns empty string.
        /// </summary>
        /// <param name="controllerId">ID of the controller to do the learning.</param>
        /// <param name="commandId">Command ID to learn codes for.</param>
        /// <returns></returns>
        public static string BeginLearning(int controllerId, int commandId)
        {
            BroadLinkController controller = ServiceWrapper.config.broadLinks.Get(controllerId);

            if (controller == null)
            {
                return(null);
            }
            return(controller.BeginLearning(commandId));
        }
        /// <summary>
        /// Blocks until the specified learning operation is complete.
        /// </summary>
        /// <param name="controllerId">ID of the controller doing the learning.</param>
        /// <param name="lessonId">ID of the learning operation which was started.</param>
        public static void AwaitLearningResult(int controllerId, string lessonId)
        {
            BroadLinkController controller = ServiceWrapper.config.broadLinks.Get(controllerId);

            if (controller == null)
            {
                return;
            }
            controller.AwaitLearningResult(lessonId);
        }
        /// <summary>
        ///  Attempts to unlearn and return the command specified by the lessonId. Returns null if we aren't in the learning state or if the command does not exist.
        /// </summary>
        /// <param name="controllerId">ID of the controller doing the learning.</param>
        /// <param name="lessonId">ID of the learning operation which was started.</param>
        /// <returns></returns>
        public static BroadLinkCmd UnlearnCommandCodes(int controllerId, string lessonId)
        {
            BroadLinkController controller = ServiceWrapper.config.broadLinks.Get(controllerId);

            if (controller == null)
            {
                return(null);
            }
            return(controller.UnlearnCommandCodes(lessonId));
        }
示例#6
0
        private static void ExecuteHotkey(Hotkey hotkey)
        {
            ParallelOptions parallelOptions = new ParallelOptions();

            parallelOptions.MaxDegreeOfParallelism = 16;
            Parallel.ForEach(hotkey.effects, parallelOptions, effect =>
            {
                switch (effect.type)
                {
                case EffectType.HttpGet:
                    {
                        if (!string.IsNullOrWhiteSpace(effect.data.httpget_url) && Uri.TryCreate(effect.data.httpget_url, UriKind.Absolute, out Uri result))
                        {
                            http_fast.GET(effect.data.httpget_url);
                        }
                        break;
                    }

                case EffectType.BroadLink:
                    {
                        BroadLinkController broadLink = ServiceWrapper.config.broadLinks.Get(effect.data.broadlink_name);
                        if (broadLink == null)
                        {
                            Logger.Info("BroadLink \"" + effect.data.broadlink_name + "\" does not exist.");
                            break;
                        }
                        broadLink.SendCommandSync(effect.data.broadlink_commandName, effect.data.broadlink_repeatCount);
                        break;
                    }

                case EffectType.iTach:
                    {
                        iTachController iTach = ServiceWrapper.config.iTachs.Get(effect.data.itach_name);
                        if (iTach == null)
                        {
                            Logger.Info("iTach \"" + effect.data.itach_name + "\" does not exist.");
                            break;
                        }
                        iTach.SendCommandSync(effect.data.itach_commandShortName, effect.data.itach_connectorAddress, effect.data.itach_repeatCount);
                        break;
                    }

                case EffectType.Vera:
                    {
                        VeraController vera = ServiceWrapper.config.veras.Get(effect.data.vera_name);
                        if (vera == null)
                        {
                            Logger.Info("Vera \"" + effect.data.vera_name + "\" does not exist.");
                            break;
                        }
                        vera.Send(effect.data);
                        break;
                    }

                case EffectType.HomeAssistant:
                    {
                        HomeAssistantServer hassServer = ServiceWrapper.config.homeAssistantServers.Get(effect.data.hass_servername);
                        if (hassServer == null)
                        {
                            Logger.Info("HomeAssistant Server \"" + effect.data.hass_servername + "\" does not exist.");
                            break;
                        }
                        hassServer.CallService(effect.data.hass_entityid, effect.data.hass_method.Value, effect.data.hass_value);
                        break;
                    }

                default:
                    Logger.Info("Unhandled hotkey effect type: " + effect.type + " in hotkey with name \"" + hotkey.name + "\"");
                    break;
                }
            });
        }