From ff3cfcf62632bf43e51a6b6098c203bf0f5cddbc Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期二, 24 十二月 2019 19:53:29 +0800 Subject: [PATCH] 2019.12.24 --- ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 110 insertions(+), 10 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs index 2d8fdcb..e620358 100644 --- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs +++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs @@ -1,5 +1,6 @@ 锘縰sing System; using Shared.Common; +using Shared.Phone.UserCenter; using Shared.Phone.UserView; namespace Shared.Phone.Device.CommonForm @@ -15,6 +16,13 @@ /// </summary> public Action action; + public override void RemoveFromParent() + { + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + base.RemoveFromParent(); + } + /// <summary> /// RoomView /// </summary> @@ -24,8 +32,8 @@ { X = Application.GetRealWidth(x); Y = Application.GetRealHeight(y); - Width = Application.GetRealWidth(487); - Height = Application.GetRealHeight(348); + Width = Application.GetRealWidth(717); + Height = Application.GetRealHeight(478); } /// <summary> @@ -75,7 +83,7 @@ { X = Application.GetRealWidth(29), Y = Application.GetRealHeight(374), - Width = Application.GetRealWidth(340), + Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(80), BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2 }; @@ -95,16 +103,16 @@ var temperatureText = new Button { X = Application.GetRealWidth(69), - Width = Application.GetRealWidth(86), + Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, - Text = "26鈩�" + Text = $"{room.Temperatrue}鈩�" }; roomTemperatureBackground.AddChidren(temperatureText); var humidityIcon = new Button { - X = Application.GetRealWidth(179), + X = Application.GetRealWidth(200), Width = Application.GetMinRealAverage(58), Height = Application.GetMinRealAverage(58), Gravity = Gravity.CenterVertical, @@ -114,13 +122,106 @@ var humidityText = new Button { - X = Application.GetRealWidth(236), - Width = Application.GetRealWidth(86), + X = Application.GetRealWidth(260), + Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, - Text = "13%" + Text = $"{room.Humidity}%" }; roomTemperatureBackground.AddChidren(humidityText); + + + if (string.IsNullOrEmpty(room.TemperatrueDevice) == false) + { + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.TemperatrueDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0鈩� + temperatureText.Text = "0.0鈩�"; + room.Temperatrue = 0; + } + else if (data.AttriButeData > 32767) + { + //璐熸暟(鐗规畩澶勭悊) + string strValue = (data.AttriButeData - 65536).ToString(); + //灏忔暟鐐归渶瑕佷竴浣� + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + room.Temperatrue = int.Parse(strValue) * 0.1; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + room.Temperatrue = int.Parse(strValue) * 0.1; + } + } + } + })); + //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 + var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice); + if (dev != null) + { + (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); + } + } + + if (string.IsNullOrEmpty(room.HumidityDevice) == false) + { + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.HumidityDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0 + humidityText.Text = "0.0%"; + room.Humidity = 0; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; + room.Humidity = int.Parse(strValue) * 0.1; + } + } + } + }); + //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 + var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice); + if (dev != null) + { + (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); + } + } var roomListBtn = new Button() @@ -145,7 +246,6 @@ action?.Invoke(); }; }; - } } } -- Gitblit v1.8.0