gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
ZigbeeApp/Shared/Phone/UserView/UserPage.cs
old mode 100755 new mode 100644
@@ -147,56 +147,48 @@
                                var ac = (AC)myDevice;
                                ac.DeviceStatusReport = common.DeviceStatusReport;
                                var attriButeList = ac.DeviceStatusReport.AttriBute;
                                foreach(var attList in attriButeList)
                                {
                                foreach (var attList in attriButeList)
                                {
                                    //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                    var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                    switch (attList.AttributeId)
                                    {
                                        case 0:
                                            ac.currentLocalTemperature = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 17:
                                            ac.currentCoolingSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 18:
                                            ac.currentHeatingSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 4096:
                                            ac.currentAutoSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 28:
                                            ac.currentSystemMode = attList.AttriButeData;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 4099:
                                            var value = Convert.ToString(attList.AttriButeData, 2).PadLeft(16, '0');
                                            var modeStr = value.Substring(value.Length - 5, 5);
                                            for (int j = 0; j < modeStr.Length; j++)
                                            {
                                                ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                            }
                                    switch (attList.AttributeId)
                                    {
                                        case 0:
                                            ac.currentLocalTemperature = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 17:
                                            ac.currentCoolingSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 18:
                                            ac.currentHeatingSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 4096:
                                            ac.currentAutoSetpoint = curTemp;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 28:
                                            ac.currentSystemMode = attList.AttriButeData;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 4097:
                                            ac.CleanStatu = attList.AttriButeData == 42;
                                            break;
                                    }
                                }
                            }
                            }
                            if (common.DeviceStatusReport.CluterID == 514)
                            {
                                var ac = (AC)myDevice;
                                var attriButeList = common.DeviceStatusReport.AttriBute;
                                ac.DeviceStatusReport = common.DeviceStatusReport;
                                foreach(var attList in attriButeList)
                                foreach (var attList in attriButeList)
                                {
                                    switch (attList.AttributeId)
                                    {
                                    {
                                        case 0:
                                            ac.currentFanMode = attList.AttriButeData;
                                            ac.LastDateTime = DateTime.Now;
@@ -208,7 +200,7 @@
                                    }
                                }
                            }
                            //当CluterID=3,就证明该设备在线,直接标记
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
@@ -247,6 +239,62 @@
                                myDevice.IsOnline = 1;
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
                        case DeviceType.TemperatureSensor:
                            //温度
                            if (common.DeviceStatusReport.CluterID == 1026)
                            {
                                var tempera = (TemperatureSensor)myDevice;
                                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, "."));
                                        }
                                    }
                                }
                            }
                            //湿度
                            if (common.DeviceStatusReport.CluterID == 1029)
                            {
                                var tempera = (TemperatureSensor)myDevice;
                                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;
                                        }
                                    }
                                }
                            }
                            break;
                    }
                }
@@ -261,6 +309,21 @@
                myDevice.IsOnline = common.IsOnline;
                //记录回复时间
                myDevice.LastDateTime = DateTime.Now;
            }
            else if (typeTag == "IASInfoReport")
            {
                try
                {
                    switch (myDevice.Type)
                    {
                        case DeviceType.IASZone:
                            var iAS = (IASZone)myDevice;
                            iAS.iASInfo = (common as IASZone).iASInfo;
                            iAS.LastDateTime = DateTime.Now;
                            break;
                    }
                }
                catch { }
            }
        }
        /// <summary>
@@ -304,9 +367,9 @@
        {
            BackgroundColor = Shared.Common.ZigbeeColor.Current.MainColor;
            ZbGateway.StatusList.Add(this);
            Shared.Application.LocationAction += (lat, lon) =>
            Shared.Application.LocationAction += (lon, lat) =>
            {
                AccountLogic.Instance.ReceiveAppLatAndLon(lat.ToString(), lon.ToString());
                AccountLogic.Instance.ReceiveAppLatAndLon(lon.ToString(), lat.ToString());
            };
        }