private void btn_AddDevice_Tapped(object sender, TappedRoutedEventArgs e)
        {
            switch (deviceType)
            {
            case 0:
                Shared.Classes.Device NewDevice = new Shared.Classes.Device();
                NewDevice.Name = tbx_DeviceName.Text;
                NewDevice.Pin  = Shared.Classes.Device.PinsEnum.D0;
                MainPage.MyHome.Rooms[lv_Rooms.SelectedIndex].AddDevice(NewDevice);
                break;

            case 1:
                Shared.Classes.WindowShutter NewWindowShutter = new Shared.Classes.WindowShutter();
                NewWindowShutter.Name         = tbx_DeviceName.Text;
                NewWindowShutter.Pin          = Shared.Classes.Device.PinsEnum.D0;
                NewWindowShutter.SecondaryPin = Shared.Classes.Device.PinsEnum.D1;
                MainPage.MyHome.Rooms[lv_Rooms.SelectedIndex].AddWindowShutter(NewWindowShutter);
                break;

            case 2:
                Shared.Classes.Sensor NewSensor = new Shared.Classes.Sensor();
                NewSensor.Name = tbx_DeviceName.Text;
                NewSensor.Pin  = Shared.Classes.Sensor.PinsEnum.D0;
                MainPage.MyHome.Rooms[lv_Rooms.SelectedIndex].AddSensor(NewSensor);
                break;
            }

            // Only update device listbox
            UpdateListBox(2);
        }
        private void UpdateDeviceDetailPane(Shared.Classes.Room SelectedRoom, bool SelectFirst = false, bool SkipClear = false)
        {
            if (SkipClear == false)
            {
                ClearDeviceDetailPane();
            }
            if (SelectedRoom.Devices.Count > 0 || SelectedRoom.Sensors.Count > 0 || SelectedRoom.WindowShutters.Count > 0)
            {
                if (SkipClear == false)
                {
                    try
                    {
                        foreach (var _Device in SelectedRoom.Devices)
                        {
                            lv_Devices.Items.Add(_Device);
                        }
                    }
                    catch { }
                    try
                    {
                        foreach (var _Sensor in SelectedRoom.Sensors)
                        {
                            lv_Devices.Items.Add(_Sensor);
                        }
                    }
                    catch { }
                    try
                    {
                        foreach (var _WindowShutter in SelectedRoom.WindowShutters)
                        {
                            lv_Devices.Items.Add(_WindowShutter);
                        }
                    }
                    catch { }
                }

                if (SelectFirst)
                {
                    lv_Devices.SelectedIndex = 0;
                }

                var type = lv_Devices.SelectedItem.GetType();

                if (type == typeof(Shared.Classes.Device))
                {
                    Shared.Classes.Device SelectedDevice = (Shared.Classes.Device)lv_Devices.SelectedItem;
                    try
                    {
                        deviceType_Device();
                        tbx_DeviceName.Text       = SelectedDevice.Name;
                        fv_DevicePin.SelectedItem = SelectedDevice.Pin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text       = "";
                        fv_DevicePin.SelectedItem = "D0";
                    }
                }
                else if (type == typeof(Shared.Classes.WindowShutter))
                {
                    Shared.Classes.WindowShutter SelectedDevice = (Shared.Classes.WindowShutter)lv_Devices.SelectedItem;
                    try
                    {
                        deviceType_WindowShutter();
                        tbx_DeviceName.Text          = SelectedDevice.Name;
                        fv_DevicePin.SelectedItem    = SelectedDevice.Pin.ToString();
                        fv_DevicePinSec.SelectedItem = SelectedDevice.SecondaryPin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text          = "";
                        fv_DevicePin.SelectedItem    = "D0";
                        fv_DevicePinSec.SelectedItem = "D1";
                    }
                }
                else if (type == typeof(Shared.Classes.Sensor))
                {
                    Shared.Classes.Sensor SelectedDevice = (Shared.Classes.Sensor)lv_Devices.SelectedItem;
                    try
                    {
                        deviceType_Sensor();
                        tbx_DeviceName.Text       = SelectedDevice.Name;
                        fv_DevicePin.SelectedItem = SelectedDevice.Pin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text       = "";
                        fv_DevicePin.SelectedItem = "A2";
                    }
                }
            }
        }
        private void btn_Save_Tapped(object sender, TappedRoutedEventArgs e)
        {
            if (lv_Rooms.Items.Count > 0 && lv_Rooms.SelectedIndex != -1)
            {
                // Update Room Detail
                Shared.Classes.Room SelectedRoom = (Shared.Classes.Room)lv_Rooms.SelectedItem;

                SelectedRoom.Name = tbx_RoomName.Text.ToString();

                int             NewAddress = 0;
                IFormatProvider _Culture   = new CultureInfo("en-US");
                int.TryParse(tbx_I2CAdress.Text.Replace("0x", ""), System.Globalization.NumberStyles.HexNumber, _Culture, out NewAddress);
                SelectedRoom.I2C_SlaveAdress = NewAddress;

                // Update Device Detail
                if (lv_Devices.Items.Count > 0)
                {
                    if (lv_Devices.SelectedIndex != -1)
                    {
                        System.Type type = lv_Devices.SelectedItem.GetType();
                        if (type == typeof(Shared.Classes.Device))
                        {
                            Shared.Classes.Device SelectedDevice = (Shared.Classes.Device)lv_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), fv_DevicePin.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), "D0");
                            }
                        }
                        else if (type == typeof(Shared.Classes.WindowShutter))
                        {
                            Shared.Classes.WindowShutter SelectedDevice = (Shared.Classes.WindowShutter)lv_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin          = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), fv_DevicePin.SelectedItem.ToString());
                                SelectedDevice.SecondaryPin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), fv_DevicePinSec.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin          = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), "D0");
                                SelectedDevice.SecondaryPin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), "D1");
                            }
                        }
                        else if (type == typeof(Shared.Classes.Sensor))
                        {
                            Shared.Classes.Sensor SelectedDevice = (Shared.Classes.Sensor)lv_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), fv_DevicePin.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin = (Shared.Classes.Device.PinsEnum)Enum.Parse(typeof(Shared.Classes.Device.PinsEnum), "A1");
                            }
                        }
                    }
                }
            }

            // Save
            Shared.Classes.Home.SaveHome(MainPage.MyHome);
        }