黄学彪
2019-12-17 5986f63b75bd81c6cef262c670e9251c038cbf5d
ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -3,6 +3,7 @@
using Shared.Common;
using ZigBee.Device;
using Shared.Phone.Device.AC;
using System.Text;
using Shared.Phone.Device.Account;
namespace Shared.Phone.UserView
@@ -78,6 +79,10 @@
            {
                try
                {
                    if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
                    {
                        return;
                    }
                    switch (myDevice.Type)
                    {
                        case DeviceType.OnOffOutput:
@@ -86,11 +91,6 @@
                            {
                                var onOffOutputLight = (ToggleLight)myDevice;
                                onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
                                //记录、更新状态
                                if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
                                {
                                    return;
                                }
                                onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                onOffOutputLight.LastDateTime = DateTime.Now;
                            }
@@ -108,13 +108,8 @@
                            {
                                var airSwitch = (AirSwitch)myDevice;
                                airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                {
                                    return;
                                }
                                airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                airSwitch.LastDateTime = DateTime.Now;
                            }
                            //当CluterID=3,就证明该设备在线,直接标记
                            if (common.DeviceStatusReport.CluterID == 3)
@@ -130,10 +125,6 @@
                                var rollershade = (Rollershade)myDevice;
                                rollershade.DeviceStatusReport = common.DeviceStatusReport;
                                var attriButeList = rollershade.DeviceStatusReport.AttriBute;
                                if (attriButeList == null || attriButeList.Count == 0)
                                {
                                    return;
                                }
                                switch (attriButeList[0].AttributeId)
                                {
                                    case 0:
@@ -156,50 +147,44 @@
                                var ac = (AC)myDevice;
                                ac.DeviceStatusReport = common.DeviceStatusReport;
                                var attriButeList = ac.DeviceStatusReport.AttriBute;
                                if (attriButeList == null || attriButeList.Count == 0)
                                foreach(var attList in attriButeList)
                                {
                                    return;
                                }
                                //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                var curTemp = (attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                switch (attriButeList[0].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 = attriButeList[0].AttriButeData;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 4099:
                                        var value = Convert.ToString(attriButeList[0].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;
                                        }
                                        break;
                                    case 4097:
                                        ac.CleanStatu = attriButeList[0].AttriButeData == 42;
                                        break;
                                    //此属性表明室内当前的温度 * 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;
                                            }
                                            break;
                                        case 4097:
                                            ac.CleanStatu = attList.AttriButeData == 42;
                                            break;
                                    }
                                }
                            }
@@ -207,21 +192,20 @@
                            {
                                var ac = (AC)myDevice;
                                var attriButeList = common.DeviceStatusReport.AttriBute;
                                if (attriButeList == null || attriButeList.Count == 0)
                                {
                                    return;
                                }
                                ac.DeviceStatusReport = common.DeviceStatusReport;
                                switch (attriButeList[0].AttributeId)
                                {
                                    case 0:
                                        ac.currentFanMode = attriButeList[0].AttriButeData;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 4096:
                                        ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                foreach(var attList in attriButeList)
                                {
                                    switch (attList.AttributeId)
                                    {
                                        case 0:
                                            ac.currentFanMode = attList.AttriButeData;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                        case 4096:
                                            ac.currentFanSwingMode = attList.AttriButeData;
                                            ac.LastDateTime = DateTime.Now;
                                            break;
                                    }
                                }
                            }
@@ -240,11 +224,6 @@
                            {
                                var dimmableLight = (DimmableLight)myDevice;
                                dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                //记录、更新状态
                                if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                {
                                    return;
                                }
                                dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                dimmableLight.LastDateTime = DateTime.Now;
                            }
@@ -254,10 +233,6 @@
                                var dimmableLight = (DimmableLight)myDevice;
                                dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
                                if (attriButeList == null || attriButeList.Count == 0)
                                {
                                    return;
                                }
                                switch (attriButeList[0].AttributeId)
                                {
                                    case 0: