/// <summary>
        /// Saves the current home configuration
        /// </summary>
        /// <param name="MyHome">Provide home object to be save for later use</param>
        public static async void SaveHome(Home MyHome)
        {
            MemoryStream _MemoryStream = new MemoryStream();
            DataContractSerializer Serializer = new DataContractSerializer(typeof(Home));
            Serializer.WriteObject(_MemoryStream, MyHome);

            StorageFile _File = await ApplicationData.Current.LocalFolder.CreateFileAsync("Home.bin", CreationCollisionOption.ReplaceExisting);

            using (Stream fileStream = await _File.OpenStreamForWriteAsync())
            {
                _MemoryStream.Seek(0, SeekOrigin.Begin);
                await _MemoryStream.CopyToAsync(fileStream);
                await fileStream.FlushAsync();
                fileStream.Dispose();
            }
        }
        public MainPage()
        {
            this.InitializeComponent();

            // Start Task that updates time
            Task.Factory.StartNew(async() =>
            {
                while (true)
                {
                    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Low,
                                                                                                                () =>
                    {
                        Lbl_Time.Text = DateTime.Now.ToString("hh:mm tt");
                        Lbl_Date.Text = DateTime.Now.ToString("MMMM dd, yyyy");
                    });
                    await Task.Delay(1000);
                }
            });

            // Load last saved Home object
            MyHome = Library.Core.Home.LoadHome().Result;

            // Turn Off all devices
            foreach (var Room in MyHome.Rooms)
            {
                foreach (var Device in Room.Devices)
                {
                    Task.Factory.StartNew(() => { Device.TurnOff(); });
                }
            }

            if (MyHome != null && MyHome.Rooms != null && MyHome.Rooms.Count > 0)
            {
                SensorData.I2C_Slave_Address = MyHome.Rooms[0].I2C_Slave_Address;
                SensorData.CollectData();
            }

            SharedFrame = Frame_Main;
        }
        public MainPage()
        {
            this.InitializeComponent();

            // Start Task that updates time
            Task.Factory.StartNew(async () =>
            {
                while (true)
                {
                    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Low,
                    () =>
                    {
                        Lbl_Time.Text = DateTime.Now.ToString("hh:mm tt");
                        Lbl_Date.Text = DateTime.Now.ToString("MMMM dd, yyyy");
                    });
                    await Task.Delay(1000);
                }
            });

            // Load last saved Home object
            MyHome = Library.Core.Home.LoadHome().Result;

            // Turn Off all devices
            foreach (var Room in MyHome.Rooms)
            {
                foreach (var Device in Room.Devices)
                {
                    Task.Factory.StartNew(() => { Device.TurnOff(); });
                }
            }

            if(MyHome!=null && MyHome.Rooms != null &&  MyHome.Rooms.Count>0)
            {
                SensorData.I2C_Slave_Address = MyHome.Rooms[0].I2C_Slave_Address;
                SensorData.CollectData();
            }

            SharedFrame = Frame_Main;
        }