From 00ab3ddb140ba8bb88b5cf572b004a85e1da85e9 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期四, 02 一月 2020 19:51:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into DEV_GXC --- ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs | 379 ++++++++++++++++++++++++++--------------------------- 1 files changed, 186 insertions(+), 193 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs index ba4fa3d..a5d22e8 100644 --- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs +++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs @@ -128,7 +128,7 @@ if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0) { return; - } + } for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++) { var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout; @@ -146,47 +146,47 @@ //璁惧涓虹┖鎴栬�呮帶浠朵负绌� continue; } - if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint) - { - //鍒ゆ柇鏄惁涓哄綋鍓嶈澶� - continue; - } - - switch (deviceUI.CommonDevice.Type) - { - case DeviceType.OnOffOutput: - //寮�鍏冲姛鑳� - if (common.DeviceStatusReport.CluterID == 6) - { - var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; - onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport; + if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint) + { + //鍒ゆ柇鏄惁涓哄綋鍓嶈澶� + continue; + } + + switch (deviceUI.CommonDevice.Type) + { + case DeviceType.OnOffOutput: + //寮�鍏冲姛鑳� + if (common.DeviceStatusReport.CluterID == 6) + { + var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight; + onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport; onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData; - (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1; + (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1; (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); onOffOutputLight.LastDateTime = DateTime.Now; } - break; + break; - case DeviceType.AirSwitch: - //寮�鍏冲姛鑳� - if (common.DeviceStatusReport.CluterID == 6) - { - var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; - airSwitch.DeviceStatusReport = common.DeviceStatusReport; + case DeviceType.AirSwitch: + //寮�鍏冲姛鑳� + if (common.DeviceStatusReport.CluterID == 6) + { + var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch; + airSwitch.DeviceStatusReport = common.DeviceStatusReport; airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData; - (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1; + (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1; (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); airSwitch.LastDateTime = DateTime.Now; - } + } //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁� if (common.DeviceStatusReport.CluterID == 3) { deviceUI.CommonDevice.IsOnline = 1; deviceUI.CommonDevice.LastDateTime = DateTime.Now; } - break; + break; - case DeviceType.WindowCoveringDevice: + case DeviceType.WindowCoveringDevice: if (common.DeviceStatusReport.CluterID == 258) { if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0) @@ -215,7 +215,7 @@ deviceUI.CommonDevice.IsOnline = 1; deviceUI.CommonDevice.LastDateTime = DateTime.Now; } - break; + break; case DeviceType.Thermostat: //AC鍔熻兘 @@ -323,9 +323,68 @@ //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴� dimmableLight.Level = attriButeList[0].AttriButeData; dimmableLight.LastDateTime = DateTime.Now; - //rowFL.GetChildren(j) as FunctionMainView).IsSelected = true; + //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true; (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); break; + } + } + break; + case DeviceType.TemperatureSensor: + //娓╁害 + if (common.DeviceStatusReport.CluterID == 1026) + { + var tempera = deviceUI.CommonDevice as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + tempera.Temperatrue = 0; + } + else if (data.AttriButeData > 32767) + { + //璐熸暟(鐗规畩澶勭悊) + string strValue = (data.AttriButeData - 65536).ToString(); + //灏忔暟鐐归渶瑕佷竴浣� + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + + tempera.LastDateTime = DateTime.Now; + (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); + } + } + } + //婀垮害 + if (common.DeviceStatusReport.CluterID == 1029) + { + var tempera = deviceUI.CommonDevice as TemperatureSensor; + foreach (var data in common.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + tempera.Humidity = 0; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, ".")); + } + tempera.LastDateTime = DateTime.Now; + (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu(); + } } } break; @@ -341,19 +400,19 @@ } else if (typeTag == "IASInfoReport") { - Application.RunOnMainThread(() => - { - try + Application.RunOnMainThread(() => + { + try { - for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++) - { - var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout; - if (rowFL.ChildrenCount == 0) - { - //璁惧涓虹┖鎴栬�呮帶浠朵负绌� - continue; - } - + for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++) + { + var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout; + if (rowFL.ChildrenCount == 0) + { + //璁惧涓虹┖鎴栬�呮帶浠朵负绌� + continue; + } + for (int j = 0; j < rowFL.ChildrenCount; j++) { var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI; @@ -380,13 +439,13 @@ iAS.LastDateTime = DateTime.Now; break; } - } + } } - } - catch (Exception ex) - { - System.Console.WriteLine($"Error:{ex.Message}"); - } + } + catch (Exception ex) + { + System.Console.WriteLine($"Error:{ex.Message}"); + } }); } } @@ -472,7 +531,8 @@ TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextColor, Text = Config.Instance.Home.GetCurrentFloorName, - IsBold=true + IsBold = true, + TextSize = 14 }; if (Config.Instance.Home.FloorDics.Count > 0) { @@ -532,143 +592,13 @@ } else { - var residenceListView = new Dialog(); - residenceListView.Show(); - var closeBGview = new FrameLayout(); - residenceListView.AddChidren(closeBGview); - closeBGview.MouseUpEventHandler += (send1, e1) => + var selectHouse = new Device.Category.SelectHouse(); + selectHouse.Init(); + selectHouse.HouseAction = (houseId) => { - residenceListView.Close(); + ChangeResidence(House.GetHouseByHouseId(houseId)); }; - - var bg = new Button - { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(248), - Width = Application.GetMinRealAverage(449), - Height = Application.GetMinRealAverage(478), - UnSelectedImagePath = "Item/SelectHouse.png" - }; - closeBGview.AddChidren(bg); - - var changeHomeFL = new FrameLayout() - { - X = Application.GetRealWidth(35), - Y = Application.GetRealHeight(271), - Height = Application.GetMinRealAverage(449), - Width = Application.GetMinRealAverage(440), - Radius = CommonPage.BigFormRadius, - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor - }; - closeBGview.AddChidren(changeHomeFL); - - var changeHomeBtn = new Button() - { - X = Application.GetRealWidth(80), - Width = Application.GetRealWidth(350), - Height = Application.GetRealHeight(150), - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextID = R.MyInternationalizationString.ChangeHome, - TextAlignment = TextAlignment.CenterLeft - }; - changeHomeFL.AddChidren(changeHomeBtn); - - var scrolView = new VerticalScrolViewLayout() - { - Y = changeHomeBtn.Bottom, - Height = Application.GetMinRealAverage(305 - 10) - }; - changeHomeFL.AddChidren(scrolView); - - var clickCheckBtn = new Device.CommonForm.SelectedStatuButton(); - var clickNameBtn = new Device.CommonForm.SelectedStatuButton(); - foreach (var homeFilePath in Config.Instance.HomeFilePathList) - { - var home = House.GetHouseByFilePath(homeFilePath); - if (home == null) - { - continue; - } - var rowView = new RowLayout() - { - Height = Application.GetRealHeight(150) - }; - scrolView.AddChidren(rowView); - var pointBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(80), - Width = Application.GetMinRealAverage(80), - Height = Application.GetMinRealAverage(80), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "Item/House.png", - SelectedImagePath = "Item/HouseSelected.png", - IsSelected = home.Id == Config.Instance.Home.Id - }; - rowView.AddChidren(pointBtn); - var nameBtn = new Device.CommonForm.SelectedStatuButton() - { - X = Application.GetRealWidth(173), - Width = Application.GetRealWidth(280), - TextAlignment = TextAlignment.CenterLeft, - Text = home.Name, - TextColor = ZigbeeColor.Current.GXCTextGrayColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor, - IsSelected = home.Id == Config.Instance.Home.Id - }; - if (home.IsOthreShare) - { - nameBtn.Text = $"{home.Name}"; - } - rowView.AddChidren(nameBtn); - - EventHandler<MouseEventArgs> selectedResidenceHandler = (send1, e1) => - { - if (Config.Instance.Home.FileName == homeFilePath) - { - return; - } - clickCheckBtn.IsSelected = false; - clickNameBtn.IsSelected = false; - pointBtn.IsSelected = true; - nameBtn.IsSelected = true; - - residecneName.Text = home.Name; - if (home.IsOthreShare) - { - nameBtn.Text = $"{home.Name}"; - } - clickCheckBtn = pointBtn; - clickNameBtn = nameBtn; - residenceListView.Close(); - ChangeResidence(home); - }; - nameBtn.MouseUpEventHandler += selectedResidenceHandler; - pointBtn.MouseUpEventHandler += selectedResidenceHandler; - rowView.MouseUpEventHandler += selectedResidenceHandler; - if (home.Id == Config.Instance.Home.Id) - { - pointBtn.IsSelected = true; - nameBtn.IsSelected = true; - clickCheckBtn = pointBtn; - clickNameBtn = nameBtn; - residecneName.Text = home.Name; - if (home.IsOthreShare) - { - residecneName.Text = nameBtn.Text = $"{home.Name}"; - } - } - else - { - pointBtn.IsSelected = false; - nameBtn.IsSelected = false; - } - } } - }; - //娑堟伅 - messageBtn.MouseUpEventHandler += (send, e) => - { - }; #endregion @@ -707,7 +637,7 @@ if (roomPageView.GetChildren(roomPageView.PageIndex) != null) { (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false); - + } var functionSceneView = new FrameLayout() @@ -803,14 +733,14 @@ //鍒囨崲褰撳墠鎴块棿 Room.CurrentRoom = rList[roomPageView.PageIndex]; RefreshBodyView(); - + }; } else { ShowNoGatewayTip(); } - + } #endregion @@ -846,6 +776,7 @@ floorFL.FloorAction = (floorId) => { floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId); + Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom(); Show(); }; } @@ -949,7 +880,7 @@ private void GoToAddGateWay(object sender, MouseEventArgs mouseEventArgs) { var selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm { }; - selectNewGateWayForm.AddForm(); + selectNewGateWayForm.AddForm(selectNewGateWayForm); } #endregion @@ -1004,7 +935,7 @@ var dList = new List<DeviceUI> { }; foreach(var device in deviceList) { - var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice); + var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice }); if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�) { continue; @@ -1103,7 +1034,7 @@ (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0); - ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true)); + ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open)); ((sender as Button).Parent as FunctionMainView).IsSelected = true; //鎺у埗寤舵椂鍥炶皟 @@ -1129,7 +1060,7 @@ (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1); - ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false)); + ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close)); ((sender as Button).Parent as FunctionMainView).IsSelected = false; //鎺у埗寤舵椂鍥炶皟 @@ -1166,9 +1097,9 @@ { //寮�鍏崇伅 var light = device.CommonDevice as ToggleLight; - if (light.Gateway != null) - { - new System.Threading.Thread(() => + if (light.Gateway != null) + { + new System.Threading.Thread(() => { System.Threading.Thread.Sleep(100 * i); if (light.Gateway.IsVirtual) @@ -1653,6 +1584,68 @@ } lightView.CollectButton.MouseUpEventHandler += collectionEvent; } + else if (device.CommonDevice.Type == DeviceType.TemperatureSensor) + { + var tempera = device.CommonDevice as TemperatureSensor; + + if (tempera.Gateway != null) + { + new System.Threading.Thread(() => + { + System.Threading.Thread.Sleep(100 * i); + if (tempera.Gateway.IsVirtual) + { + ReadStatus(tempera, () => + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); + } + }); + } + else + { + if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds) + { + if (tempera.SensorDiv == 1) + { + ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice); + } + else if (tempera.SensorDiv == 2) + { + ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice); + } + } + } + }) + { IsBackground = true }.Start(); + + var lightView = new FunctionMainView(xx, yy); + itemView.AddChidren(lightView); + lightView.Init(); + lightView.Tag = device; + lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath); + lightView.SetStatuText(device.GetDeviceStatu()); + lightView.SetDeviceName(device.CommonDevice.DeviceEpointName); + lightView.IsSelected = false; + lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName)); + lightView.CanControl(false); + var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); + if (dev == null) + { + lightView.CollectButton.IsSelected = false; + } + else + { + lightView.CollectButton.IsSelected = true; + } + lightView.CollectButton.MouseUpEventHandler += collectionEvent; + } + } else if (device.CommonDevice.Type == DeviceType.DoorLock) { //闂ㄩ攣 @@ -1748,7 +1741,7 @@ Height = Application.GetRealHeight(200), Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, - TextAlignment = TextAlignment.Center, + TextAlignment=TextAlignment.Center, IsMoreLines = true }; functionSceneBodyView.AddChidren(noScenceTip); -- Gitblit v1.8.0