HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
@@ -197,7 +197,7 @@
                    Shared.IO.FileUtils.WriteFileByBytes(picFullName, btnPic.ImageBytes);
                    newRoom.BackgroundImage = picName;
                    //备份
                    HdlBackupLogic.Current.AddOrEditorAutoBackFileStatu(picName);
                    Phone.UserCenter.HdlAutoBackupLogic.AddOrEditorFile(picName);
                }
                newRoom.FloorId = this.floorKeys;
@@ -259,7 +259,7 @@
        private void ShowTemperatrueDevice(NormalViewControl btnTemper)
        {
            var listDevice = new List<ZigBee.Device.CommonDevice>();
            foreach (var device in HdlDeviceCommonLogic.Current.listAllDevice)
            foreach (var device in Common.LocalDevice.Current.listAllDevice)
            {
                //获取温度传感器
                if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 1)
@@ -283,7 +283,7 @@
                    btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uNothing);
                    return;
                }
                newRoom.TemperatrueDevice = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(list[0]);
                newRoom.TemperatrueDevice = Common.LocalDevice.Current.GetDeviceMainKeys(list[0]);
                //获取温度值
                this.GetTemperatrueValue(btnTemper, newRoom.TemperatrueDevice);
            };
@@ -296,7 +296,7 @@
        /// <param name="deviceKey"></param>
        private void GetTemperatrueValue(NormalViewControl btnTemper, string deviceKey)
        {
            var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKey);
            var device = Common.LocalDevice.Current.GetDevice(deviceKey);
            if (device == null)
            {
                return;
@@ -308,7 +308,7 @@
            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, ((report) =>
            {
                string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
                string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                if (newRoom.TemperatrueDevice != mainKeys || btnTemper == null
                || report.DeviceStatusReport.CluterID != 1026)
                {
@@ -339,7 +339,7 @@
            {
                //去获取设备列表的信息
                System.Threading.Thread.Sleep(1500);
                var result = HdlDeviceCommonLogic.Current.ReadDeviceEpointDeviceInfo(device);
                var result = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(device);
                if (result != null)
                {
                    device.AttributeStatus.Clear();
@@ -358,8 +358,7 @@
                       && data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    {
                        //处理网关返回的温度值
                        decimal temperatrue = 0;
                        this.AdjustTemperatrueValue(data.AttributeData, ref temperatrue);
                        decimal temperatrue = Common.LocalDevice.Current.AdjustTemperatrueValue(data.AttributeData);
                        device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.SetField, null, device, new object[] { temperatrue });
                        device.ReSave();
@@ -379,37 +378,6 @@
            });
        }
        /// <summary>
        /// 处理网关返回的温度值
        /// </summary>
        /// <param name="value">网关返回的属性值</param>
        /// <param name="temperatrue">转换成的温度值</param>
        private void AdjustTemperatrueValue(int value, ref decimal temperatrue)
        {
            if (value == 0)
            {
                //0℃
                temperatrue = 0;
            }
            else if (value > 32767)
            {
                //负数(特殊处理)
                string strValue = (value - 65536).ToString();
                //小数点需要一位
                strValue = strValue.Substring(0, strValue.Length - 1);
                //记录温度
                temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
            }
            else
            {
                //小数点需要一位
                string strValue = value.ToString();
                strValue = strValue.Substring(0, strValue.Length - 1);
                //记录温度
                temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
            }
        }
        #endregion
        #region ■ 湿度传感器相关_____________________
@@ -421,7 +389,7 @@
        private void ShowHumidityDevice(NormalViewControl btnHumi)
        {
            var listDevice = new List<ZigBee.Device.CommonDevice>();
            foreach (var device in HdlDeviceCommonLogic.Current.listAllDevice)
            foreach (var device in Common.LocalDevice.Current.listAllDevice)
            {
                //获取湿度传感器
                if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 2)
@@ -450,7 +418,7 @@
                    btnHumi.Text = Language.StringByID(R.MyInternationalizationString.uNothing);
                    return;
                }
                newRoom.HumidityDevice = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(list[0]);
                newRoom.HumidityDevice = Common.LocalDevice.Current.GetDeviceMainKeys(list[0]);
                //获取湿度值
                this.GetHumidityValue(btnHumi, newRoom.HumidityDevice);
            };
@@ -463,7 +431,7 @@
        /// <param name="deviceKey"></param>
        private void GetHumidityValue(NormalViewControl btnHumi, string deviceKey)
        {
            var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKey);
            var device = Common.LocalDevice.Current.GetDevice(deviceKey);
            if (device == null)
            {
                return;
@@ -475,7 +443,7 @@
            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
            {
                string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
                string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                if (newRoom.HumidityDevice != mainKeys || btnHumi == null
                || report.DeviceStatusReport.CluterID != 1029)
                {
@@ -504,7 +472,7 @@
            {
                //去获取设备列表的信息
                System.Threading.Thread.Sleep(1500);
                var result = HdlDeviceCommonLogic.Current.ReadDeviceEpointDeviceInfo(device);
                var result = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(device);
                if (result != null)
                {
                    device.AttributeStatus.Clear();
@@ -524,8 +492,7 @@
                       && data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    {
                        //处理网关返回的湿度值
                        decimal humidity = 0;
                        this.AdjustHumidityValue(data.AttributeData, ref humidity);
                        decimal humidity = Common.LocalDevice.Current.AdjustHumidityValue(data.AttributeData);
                        device.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.SetField, null, device, new object[] { humidity });
                        device.ReSave();
@@ -543,30 +510,6 @@
                    }
                }
            });
        }
        /// <summary>
        /// 处理网关返回的湿度值
        /// </summary>
        /// <param name="value">网关返回的属性值</param>
        /// <param name="temperatrue">转换成的湿度值</param>
        /// <param name="valueText">转换成的湿度值的翻译文本</param>
        private void AdjustHumidityValue(int value, ref decimal humidity)
        {
            if (value == 0)
            {
                //0%
                humidity = 0;
            }
            //不会出现负数
            else
            {
                //小数点需要一位
                string strValue = value.ToString();
                strValue = strValue.Substring(0, strValue.Length - 1);
                //记录温度
                humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
            }
        }
        #endregion