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);
                }
            }
        }
Example #2
0
        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;
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }