/// <summary> /// Abfrage der ausgewählten Parameter /// </summary> /// <returns>Parameter-Gruppen (flagged enum)</returns> HueParameterGroupEnum getSelectedParams() { HueParameterGroupEnum paras = 0; foreach (HueParameterGroup item in clb_Parameter.CheckedItems) { paras |= item.Value; } return(paras); }
public HueParameterGroup(HueParameterGroupEnum value) { Value = value; }
/// <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; }