public async void DeleteScheduleAsync(Schedule schedule) { if (schedule.ScheduleId == null) { return; } await HueAPI.Instance.DeleteScheduleAsync(schedule.ScheduleId); if (CurrentBridge.ScheduleList.Contains(schedule)) { CurrentBridge.ScheduleList.Remove(schedule); if (UnsupportedScheduleRemoved != null) { UnsupportedScheduleRemoved(schedule, null); } } }
public static Schedule newAllOnSchedule() { Schedule schedule = new Schedule(); schedule.Name = Schedule.DefaultAllOnScheduleName; schedule.Description = "Turn all the lights on"; schedule.AppName = HueAPI.Instance.AppKey; schedule.Type = ScheduleType.Recurring; var address = "/api/" + HueAPI.Instance.AppKey + "/groups/0/action"; var bodyParams = new { on = true }; var commandBody = new { address = address, method = "PUT", body = bodyParams }; schedule.Command = commandBody; return schedule; }
public static void UpdateScheduleWithJObject(Schedule schedule, JObject json) { try { // Name JToken nameToken; if(json.TryGetValue("name", out nameToken)) { schedule.Name = json["name"].ToString(); } // Desc JToken descToken; if (json.TryGetValue("description", out descToken)) { schedule.Description = json["description"].ToString(); } // Command JToken commandToken; if(json.TryGetValue("command", out commandToken)) { schedule.CommandString = json["command"].ToString(); // Parse which app created this schedule JObject commandObject = JObject.Parse(schedule.CommandString); JToken addressToken; if(commandObject.TryGetValue("address", out addressToken)){ string addressString = commandObject["address"].ToString(); // Remove the "/api" prefix if (addressString.StartsWith("/api/")) { addressString = addressString.Substring(5); var parts = addressString.Split('/'); schedule.AppName = parts[0]; } } } // Time JToken timeToken; if (json.TryGetValue("localtime", out timeToken)) { string timeString = json["localtime"].ToString(); if (timeString.StartsWith("PT")) { // One time timer. Ignore this type schedule.Type = ScheduleType.OneTime; } else if (timeString.StartsWith("W")) { // Recurring schedule schedule.Type = ScheduleType.Recurring; string[] parts = timeString.Split('/'); string occuringDays = parts[0]; // Remove the "T" char at beginning string timeOfDay = parts[1].Substring(1); schedule.LocalTime = timeOfDay; } else { schedule.Type = ScheduleType.Unknown; } } } catch(Exception ex) { Debug.WriteLine(ex); } }
public static void UpdateBridgeSchedulesWithJObject(Bridge bridge, JObject json) { try { // Get schedule keys IList<string> scheduleKeys = json.Properties().Select(p => p.Name).ToList(); bridge.ScheduleList.Clear(); foreach (var scheduleId in scheduleKeys) { Schedule schedule = new Schedule(); schedule.ScheduleId = scheduleId; bridge.ScheduleList.Add(schedule); JObject scheduleJson = (JObject)json[scheduleId]; ScheduleFactory.UpdateScheduleWithJObject(schedule, scheduleJson); } } catch (Exception ex) { Debug.WriteLine(ex); } }