Пример #1
0
 public void LoadParameterFile(string path)
 {
     Parameters = HueParameters.FromJson(path);
 }
Пример #2
0
        /// <summary>
        /// Parameter auslesen
        /// </summary>
        /// <param name="selGroups">Auswahl der zu lesenden Parameter</param>
        public async void ReadParameters(HueParameterGroupEnum selGroups, AnonymizeOptions[] options = null)
        {
            //TODO: Exception abfangen. Kann zB bei falscher API Version auftreten
            Logger.WriteToLog("Parameter auslesen gestartet");

            if (SimMode)
            {
                Parameters = HueParameters.FromJson(@"F:/dummy_params.json");

                return;
            }

            var paras = new HueParameters();

            if (selGroups.HasFlag(HueParameterGroupEnum.Scenes | HueParameterGroupEnum.Rules | HueParameterGroupEnum.ResourceLinks | HueParameterGroupEnum.WhiteList))
            {
                var whiteList = (await m_HueClient.GetBridgeAsync()).WhiteList.ToList();

                for (int i = 0; i < whiteList.Count; i++)
                {
                    string name = "User " + (i + 1);
                    paras.Users.Add(whiteList[i].Id.GetHashCode(), name);
                    whiteList[i].Id = name;
                }

                if (selGroups.HasFlag(HueParameterGroupEnum.WhiteList))
                {
                    paras.WhiteList = whiteList;
                }
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Lights))
            {
                paras.Lights = (await m_HueClient.GetLightsAsync()).ToList();
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Groups))
            {
                paras.Groups = (await m_HueClient.GetGroupsAsync()).ToList();
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Schedules))
            {
                paras.Schedules = (await m_HueClient.GetSchedulesAsync()).ToList();
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Scenes))
            {
                paras.Scenes = (await m_HueClient.GetScenesAsync()).ToList();

                foreach (var scene in paras.Scenes)
                {
                    if (paras.Users.ContainsKey(scene.Owner.GetHashCode()))
                    {
                        scene.Owner = paras.Users[scene.Owner.GetHashCode()].ToString();
                    }
                    else
                    {
                        scene.Owner = "Deleted user!";
                    }
                }
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Sensors))
            {
                paras.Sensors = (await m_HueClient.GetSensorsAsync()).ToList();
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Rules))
            {
                paras.Rules = (await m_HueClient.GetRulesAsync()).ToList();

                foreach (var rule in paras.Rules)
                {
                    if (paras.Users.ContainsKey(rule.Owner.GetHashCode()))
                    {
                        rule.Owner = paras.Users[rule.Owner.GetHashCode()].ToString();
                    }
                    else
                    {
                        rule.Owner = "Deleted user!";
                    }
                }
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Configuration))
            {
                var conf = (await m_HueClient.GetBridgeAsync()).Config;
                if (conf.WhiteList?.Count > 0)
                {
                    conf.WhiteList.Clear();
                    conf.WhiteList = null;
                }
                paras.Configuration = conf;
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.Capability))
            {
                var conf = await m_HueClient.GetCapabilitiesAsync();

                conf.Timezones = null; //Muss nicht serialisiert werden

                paras.Capability = conf;
            }

            if (selGroups.HasFlag(HueParameterGroupEnum.ResourceLinks))
            {
                paras.ResourceLinks = (await m_HueClient.GetResourceLinksAsync()).ToList();

                foreach (var link in paras.ResourceLinks)
                {
                    if (paras.Users.ContainsKey(link.Owner.GetHashCode()))
                    {
                        link.Owner = paras.Users[link.Owner.GetHashCode()].ToString();
                    }
                    else
                    {
                        link.Owner = "Deleted user!";
                    }
                }
            }


            if (options?.Length > 0)
            {
                if (options.Any(x => x == AnonymizeOptions.Serials))
                {
                    paras.AnonymizeSerials();
                }
                if (options.Any(x => x == AnonymizeOptions.Names))
                {
                    paras.AnonymizeNames();
                }
            }

            Parameters = paras;
        }
Пример #3
0
 public void RemapParameters(HueParameters backup)
 {
     var remap = RemappingInfo.Create(backup, Parameters);
 }
Пример #4
0
 public void ApplyParameters(HueParameters parameters)
 {
     pyg_Parameters.SelectedObject = parameters;
 }