From bc6d6b77675b8915635aa04ba765ea627ac63cfa Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 17 十二月 2019 09:38:17 +0800
Subject: [PATCH] 2019.12.17

---
 ZigbeeApp/Shared/Phone/UserView/UserPage.cs |  134 ++++++++++++++++++--------------------------
 1 files changed, 54 insertions(+), 80 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
index 4bb15b0..efeac10 100644
--- a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -79,6 +79,10 @@
             {
                 try
                 {
+                    if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+                    {
+                        return;
+                    }
                     switch (myDevice.Type)
                     {
                         case DeviceType.OnOffOutput:
@@ -87,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;
                             }
@@ -109,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;
-
                             }
                             //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
                             if (common.DeviceStatusReport.CluterID == 3)
@@ -131,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:
@@ -157,72 +147,65 @@
                                 var ac = (AC)myDevice;
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
                                 var attriButeList = ac.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
-                                {
-                                    return;
+                                foreach(var attList in attriButeList)
+                                {
+                                    //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 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;
+                                    }
                                 }
-                                //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 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;
-                                }
                             }
 
                             if (common.DeviceStatusReport.CluterID == 514)
                             {
                                 var ac = (AC)myDevice;
                                 var attriButeList = common.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
-                                {
-                                    return;
-                                }
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
-                                switch (attriButeList[0].AttributeId)
+                                foreach(var attList in attriButeList)
                                 {
-                                    case 0:
-                                        ac.currentFanMode = attriButeList[0].AttriButeData;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-                                    case 4096:
-                                        ac.currentFanSwingMode = attriButeList[0].AttriButeData;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
+                                    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;
+                                    }
                                 }
                             }
 
@@ -241,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;
                             }
@@ -255,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:

--
Gitblit v1.8.0