ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
@@ -1,27 +1,42 @@ <Properties StartupConfiguration="{28EDE1FF-20EF-476B-8AF8-24A3EEB69F45}|Default"> <MonoDevelop.Ide.ItemProperties.GateWay.Droid PreferredExecutionTarget="Android.SelectDevice" /> <MonoDevelop.Ide.ItemProperties.GateWay.Droid PreferredExecutionTarget="Android.M7BBB18B19152766" /> <MonoDevelop.Ide.ItemProperties.GateWay.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.8c0bdb303f25d82c2a42fb8bfca449bfaca00260" /> <MonoDevelop.Ide.ItemProperties.ShardLib PreferredExecutionTarget="Android.M7BBB18B19152766" /> <MonoDevelop.Ide.Workbench ActiveDocument="Shared/R.cs"> <MonoDevelop.Ide.Workbench ActiveDocument="Shared/Phone/Device/Room/EditRoom.cs"> <Files> <File FileName="Shared/R.cs" Line="808" Column="2" /> <File FileName="Shared/R.cs" Line="809" Column="16" /> <File FileName="GateWay.Droid/Assets/Language.ini" /> <File FileName="Shared/Phone/Device/Category/Category.cs" /> <File FileName="Shared/Phone/Device/Category/SelectDevice.cs" /> <File FileName="Shared/Common/Device.cs" /> <File FileName="Shared/Phone/UserView/UserHomeView.cs" /> <File FileName="Shared/Phone/Device/Light/LightControl.cs" /> <File FileName="Shared/Phone/Device/Category/CategoryAddScene.cs" /> <File FileName="Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs" /> <File FileName="Shared/Common/DeviceUI.cs" /> <File FileName="Shared/Phone/Device/CommonForm/RoomView.cs" /> <File FileName="Shared/Phone/Device/CommonForm/DeviceInfoRow.cs" /> <File FileName="Shared/Phone/Device/CommonForm/RoomView.cs" Line="271" Column="59" /> <File FileName="Shared/Phone/Device/Room/EditRoom.cs" Line="84" Column="74" /> <File FileName="Shared/Phone/Device/Room/RoomTemperatureSetting.cs" /> <File FileName="Shared/Phone/Device/Room/RoomHumiditySetting.cs" /> </Files> <Pads> <Pad Id="ProjectPad"> <State name="__root__"> <Node name="GateWay" expanded="True"> <Node name="Shared" expanded="True"> <Node name="R.cs" selected="True" /> <Node name="Common" expanded="True" /> <Node name="Phone" expanded="True"> <Node name="Device" expanded="True"> <Node name="CommonForm" expanded="True" /> <Node name="DeviceLogic" expanded="True" /> <Node name="Light" expanded="True" /> <Node name="Room" expanded="True"> <Node name="EditRoom.cs" selected="True" /> </Node> </Node> <Node name="UserCenter" expanded="True"> <Node name="Residence" expanded="True" /> </Node> <Node name="UserView" expanded="True" /> </Node> </Node> </Node> </State> ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ideBinary files differ
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -1,11 +1,13 @@ using System; using Shared.Common; using Shared.Phone.Device.DeviceLogic; using Shared.Phone.UserCenter; using Shared.Phone.UserView; using ZigBee.Device; namespace Shared.Phone.Device.CommonForm { public class RoomView:FrameLayout public class RoomView:FrameLayout, ZigBee.Common.IStatus { /// <summary> /// Room @@ -22,10 +24,130 @@ Button roomListBtn; Button temperatureText; Button humidityText; CommonDevice temperDevice; CommonDevice humidDevice; #region ◆ 接口__________________________ /// <summary> /// 处理变化事件 --将弃用 改用DeviceInfoChange() /// </summary> /// <returns>The changed.</returns> /// <param name="common">Common.</param> public void Changed(CommonDevice common) { } /// <summary> /// Changeds the IL ogic status. /// </summary> /// <param name="logic">Logic.</param> public void ChangedILogicStatus(ZigBee.Device.Logic logic) { //throw new NotImplementedException(); } /// <summary> /// Changeds the IS cene status. /// </summary> /// <param name="scene">Scene.</param> public void ChangedISceneStatus(Scene scene) { //throw new NotImplementedException(); } /// <summary> /// 设备状态更新接口 /// <para>type:如果为 DeviceInComingRespon:设备新上报</para> /// <para>type:如果为 IASInfoReport:RemoveDeviceRespon</para> /// <para>type:如果为 DeviceStatusReport:设备上报</para> /// <para>type:如果为 IASInfoReport:IAS安防信息上报</para> /// <para>type:如果为 OnlineStatusChange: 设备在线状态更新</para> /// </summary> /// <param name="common">Common.</param> /// <param name="typeTag">Type tag.</param> public void DeviceInfoChange(CommonDevice common, string typeTag) { if (typeTag == "DeviceStatusReport") { Application.RunOnMainThread(() => { try { if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0) { return; } //是否为当前设备 if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr) ) { //return; } //if (common.Type == DeviceType.TemperatureSensor) //{ if (common.DeviceStatusReport.CluterID == 1026) { foreach (var data in common.DeviceStatusReport.AttriBute) { if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { if (data.AttriButeData == 0) { //0 humidityText.Text = "--%"; 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; } } } } else if (common.DeviceStatusReport.CluterID == 1029) { foreach (var data in common.DeviceStatusReport.AttriBute) { if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { if (data.AttriButeData == 0) { //0 humidityText.Text = "--%"; 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; } } } } //} } catch (Exception ex) { System.Console.WriteLine($"Error:{ex.Message}"); } }); } } #endregion public override void RemoveFromParent() { HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice" + room.Id); HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice" + room.Id); ZbGateway.StatusList.Remove(this); base.RemoveFromParent(); } @@ -40,6 +162,7 @@ Y = Application.GetRealHeight(y); Width = Application.GetRealWidth(717); Height = Application.GetRealHeight(478); ZbGateway.StatusList.Add(this); } /// <summary> @@ -49,6 +172,10 @@ public void Init(Common.Room r) { this.room = r; this.temperDevice= Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice); this.humidDevice= Common.LocalDevice.Current.GetDevice(room.HumidityDevice); var roomBackView = new FrameLayout() { @@ -106,13 +233,13 @@ }; roomTemperatureBackground.AddChidren(temperatureIcon); var temperatureText = new Button temperatureText = new Button { X = Application.GetRealWidth(69), Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, Text = $"{room.Temperatrue}℃" Text = Math.Abs(room.Temperatrue) <= 0 ? "--℃" : $"{room.Temperatrue}℃" }; roomTemperatureBackground.AddChidren(temperatureText); @@ -126,107 +253,28 @@ }; roomTemperatureBackground.AddChidren(humidityIcon); var humidityText = new Button humidityText = new Button { X = Application.GetRealWidth(260), Width = Application.GetRealWidth(120), Height = Application.GetRealHeight(58), Gravity = Gravity.CenterVertical, Text = $"{room.Humidity}%" Text = Math.Abs(room.Temperatrue) <= 0 ? "--%" : $"{room.Humidity}%" }; roomTemperatureBackground.AddChidren(humidityText); if (string.IsNullOrEmpty(room.TemperatrueDevice) == false) { HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice" + room.Id); HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice" + room.Id, ReceiveComandDiv.A设备属性上报, (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(); } ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev); } if (string.IsNullOrEmpty(room.HumidityDevice) == false) { HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"+room.Id); HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice" + room.Id, 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(); } ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev); } ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
@@ -35,6 +35,10 @@ /// <param name="device">设备</param> public void SendACStatuComand(CommonDevice device) { if (device == null) { return; } new System.Threading.Thread(() => { SendFanStatuComand(device); @@ -50,6 +54,10 @@ /// <param name="device">设备</param> private void SendThermostatStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, @@ -99,6 +107,10 @@ /// <param name="device">设备</param> private void SendFanStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, @@ -131,6 +143,10 @@ /// <param name="device">窗帘</param> public void SendCurtainStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, @@ -169,6 +185,10 @@ /// <param name="device"></param> public void SendDimmableLightStatuComand(CommonDevice device) { if (device == null) { return; } new System.Threading.Thread(() => { SendSwitchStatuComand(device); @@ -184,6 +204,10 @@ /// <param name="device">窗帘</param> private void SendSwitchStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, @@ -209,6 +233,10 @@ /// <param name="device">窗帘</param> private void SendLevelStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, @@ -229,5 +257,68 @@ } #endregion #region ◆ 温湿度____________________________ /// <summary> /// 读取温度 /// </summary> /// <param name="device"></param> public void SendTemperatureStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", (int)Cluster_ID.TemperatureMeasurement }, { "Command", 108 } }; var attriBute = new Newtonsoft.Json.Linq.JArray { new Newtonsoft.Json.Linq.JObject { { "AttriButeId", (int)AttriButeId.MeasuredValue} } }; var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } }; jObject.Add("Data", data); device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString()); } /// <summary> /// 读取湿度 /// </summary> /// <param name="device"></param> public void SendHumidityStatuComand(CommonDevice device) { if (device == null) { return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr",device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", (int)Cluster_ID.RelativeHumidityMeasurement }, { "Command", 108 } }; var attriBute = new Newtonsoft.Json.Linq.JArray { new Newtonsoft.Json.Linq.JObject { { "AttriButeId", (int)AttriButeId.MeasuredValue} } }; var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } }; jObject.Add("Data", data); device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString()); } #endregion } } ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
@@ -3,12 +3,14 @@ using System.Globalization; using Shared.Common; using Shared.Phone.Device.CommonForm; using Shared.Phone.Device.DeviceLogic; using Shared.Phone.UserCenter; using Shared.Phone.UserView; using ZigBee.Device; namespace Shared.Phone.Device.Room { public class EditRoom : FrameLayout public class EditRoom : FrameLayout, ZigBee.Common.IStatus { #region ◆ 变量____________________________ /// <summary> @@ -44,11 +46,143 @@ /// </summary> public int OldIconPathType; CommonDevice temperDevice; CommonDevice humidDevice; DeviceInfoRow temperatureRow; DeviceInfoRow humidityRow; #endregion #region ◆ 接口__________________________ /// <summary> /// 处理变化事件 --将弃用 改用DeviceInfoChange() /// </summary> /// <returns>The changed.</returns> /// <param name="common">Common.</param> public void Changed(CommonDevice common) { } /// <summary> /// Changeds the IL ogic status. /// </summary> /// <param name="logic">Logic.</param> public void ChangedILogicStatus(ZigBee.Device.Logic logic) { //throw new NotImplementedException(); } /// <summary> /// Changeds the IS cene status. /// </summary> /// <param name="scene">Scene.</param> public void ChangedISceneStatus(Scene scene) { //throw new NotImplementedException(); } /// <summary> /// 设备状态更新接口 /// <para>type:如果为 DeviceInComingRespon:设备新上报</para> /// <para>type:如果为 IASInfoReport:RemoveDeviceRespon</para> /// <para>type:如果为 DeviceStatusReport:设备上报</para> /// <para>type:如果为 IASInfoReport:IAS安防信息上报</para> /// <para>type:如果为 OnlineStatusChange: 设备在线状态更新</para> /// </summary> /// <param name="common">Common.</param> /// <param name="typeTag">Type tag.</param> public void DeviceInfoChange(CommonDevice common, string typeTag) { if (typeTag == "DeviceStatusReport") { Application.RunOnMainThread(() => { try { if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0) { return; } //是否为当前设备 if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr)) { //return; } //if (common.Type == DeviceType.TemperatureSensor) //{ if (common.DeviceStatusReport.CluterID == 1026) { foreach (var data in common.DeviceStatusReport.AttriBute) { if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { if (data.AttriButeData == 0) { //0℃ temperatureRow.NameText.Text = "--℃"; room.Temperatrue = 0; } else if (data.AttriButeData > 32767) { //负数(特殊处理) string strValue = (data.AttriButeData - 65536).ToString(); //小数点需要一位 strValue = strValue.Substring(0, strValue.Length - 1); temperatureRow.NameText.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); temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃"; room.Temperatrue = int.Parse(strValue) * 0.1; } } } } else if (common.DeviceStatusReport.CluterID == 1029) { foreach (var data in common.DeviceStatusReport.AttriBute) { if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) { if (data.AttriButeData == 0) { //0 humidityRow.NameText.Text = "--%"; room.Humidity = 0; } else { //小数点需要一位(湿度没有负数) string strValue = data.AttriButeData.ToString(); strValue = strValue.Substring(0, strValue.Length - 1); humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; room.Humidity = int.Parse(strValue) * 0.1; } } } } //} } catch (Exception ex) { System.Console.WriteLine($"Error:{ex.Message}"); } }); } } #endregion public EditRoom() { ZbGateway.StatusList.Add(this); BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; } @@ -71,10 +205,8 @@ } public override void RemoveFromParent() { HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); { ZbGateway.StatusList.Remove(this); CommonPage.Instance.IsDrawerLockMode = false; base.RemoveFromParent(); } @@ -188,7 +320,7 @@ }; var temperatureRow = new DeviceInfoRow(446); temperatureRow = new DeviceInfoRow(446); temperatureRow.Init(); temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature); temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight; @@ -208,102 +340,16 @@ } room.TemperatrueDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}"; temperatureRow.SetTitle(R.MyInternationalizationString.Getting); 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℃ temperatureRow.NameText.Text = "0.0℃"; room.Temperatrue = 0; } else if (data.AttriButeData > 32767) { //负数(特殊处理) string strValue = (data.AttriButeData - 65536).ToString(); //小数点需要一位 strValue = strValue.Substring(0, strValue.Length - 1); temperatureRow.NameText.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); temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃"; room.Temperatrue = int.Parse(strValue) *0.1; } } } })); //发送获取温度的命令 (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(selectTemp); }; }; if (string.IsNullOrEmpty(room.TemperatrueDevice) == false) { temperatureRow.SetTitle(R.MyInternationalizationString.Getting); 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℃ temperatureRow.NameText.Text = "0.0℃"; room.Temperatrue = 0; } else if (data.AttriButeData > 32767) { //负数(特殊处理) string strValue = (data.AttriButeData - 65536).ToString(); //小数点需要一位 strValue = strValue.Substring(0, strValue.Length - 1); temperatureRow.NameText.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); temperatureRow.NameText.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(); } ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev); } else { @@ -311,7 +357,7 @@ } var humidityRow = new DeviceInfoRow(585); humidityRow = new DeviceInfoRow(585); humidityRow.Init(); humidityRow.SetTipTitle(R.MyInternationalizationString.Humidity); humidityRow.NameText.TextAlignment = TextAlignment.CenterRight; @@ -332,81 +378,16 @@ room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}"; humidityRow.SetTitle(R.MyInternationalizationString.Getting); 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 humidityRow.NameText.Text = "0.0%"; room.Humidity = 0; } else { //小数点需要一位(湿度没有负数) string strValue = data.AttriButeData.ToString(); strValue = strValue.Substring(0, strValue.Length - 1); humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; room.Humidity = int.Parse(strValue) * 0.1; } } } }); //发送获取湿度的命令 (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(selectTemp); }; }; if (string.IsNullOrEmpty(room.HumidityDevice) == false) { humidityRow.SetTitle(R.MyInternationalizationString.Getting); 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 humidityRow.NameText.Text = "0.0%"; room.Humidity = 0; } else { //小数点需要一位(湿度没有负数) string strValue = data.AttriButeData.ToString(); strValue = strValue.Substring(0, strValue.Length - 1); humidityRow.NameText.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(); } ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev); } else {