gxc
2019-12-17 bc6d6b77675b8915635aa04ba765ea627ac63cfa
2019.12.17
11个文件已修改
342 ■■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Assets/Language.ini 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Category/Category.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserView/UserPage.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/R.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -199,3 +199,4 @@
*._
*.ide
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
ZigbeeApp/.vs/GateWay/xs/UserPrefs.xml
@@ -2,17 +2,15 @@
  <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/Phone/UserView/UserPage.cs">
  <MonoDevelop.Ide.Workbench ActiveDocument="Shared/Phone/Device/AC/ACControl.cs">
    <Files>
      <File FileName="Shared/R.cs" />
      <File FileName="Shared/R.cs" Line="955" Column="22" />
      <File FileName="GateWay.Droid/Assets/Language.ini" />
      <File FileName="Shared/Phone/Device/Light/DimmableLightControl.cs" Line="410" Column="1" />
      <File FileName="Shared/Phone/Device/Category/Category.cs" Line="366" Column="68" />
      <File FileName="Shared/Phone/Device/AC/ACControl.cs" Line="243" Column="33" />
      <File FileName="Shared/Phone/UserView/UserHomeView.cs" Line="1" Column="1" />
      <File FileName="Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs" Line="44" Column="78" />
      <File FileName="Shared/Common/CommonPage.cs" Line="60" Column="99" />
      <File FileName="Shared/Phone/UserView/UserPage.cs" Line="251" Column="30" />
      <File FileName="Shared/Phone/Device/Category/Category.cs" />
      <File FileName="Shared/Phone/Device/AC/ACControl.cs" Line="1" Column="1" />
      <File FileName="Shared/Phone/UserView/UserHomeView.cs" />
      <File FileName="Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs" />
      <File FileName="Shared/Phone/UserView/UserPage.cs" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
@@ -27,7 +25,9 @@
              <Node name="Common" expanded="True" />
              <Node name="Phone" expanded="True">
                <Node name="Device" expanded="True">
                  <Node name="AC" expanded="True" />
                  <Node name="AC" expanded="True">
                    <Node name="ACControl.cs" selected="True" />
                  </Node>
                  <Node name="Category" expanded="True" />
                  <Node name="CommonForm" expanded="True" />
                  <Node name="DeviceLogic" expanded="True" />
@@ -40,9 +40,7 @@
                    <Node name="Logic" expanded="True" />
                  </Node>
                </Node>
                <Node name="UserView" expanded="True">
                  <Node name="UserPage.cs" selected="True" />
                </Node>
                <Node name="UserView" expanded="True" />
                <Node name="ZigBee" expanded="True">
                  <Node name="Common" expanded="True" />
                  <Node name="Device" expanded="True" />
ZigbeeApp/.vs/GateWay/xs/sqlite3/storage.ide
Binary files differ
ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -705,7 +705,7 @@
11031=添加执行目标
11032=选择区域
11033=选择场景图片
11034=确定删除吗?
11034=确定要移除该功能?
12100=未知设备
ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
@@ -170,8 +170,10 @@
                                return;
                            }
                            deviceUI.CommonDevice.DeviceStatusReport = common.DeviceStatusReport;
                            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)
                            foreach(var attList in attriButeList)
                            {
                                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;
@@ -211,7 +213,7 @@
                                case 28:
                                    //此属性描述恒温设备正处于哪种模式
                                    //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
                                    ac.currentSystemMode = attriButeList[0].AttriButeData;
                                        ac.currentSystemMode = attList.AttriButeData;
                                    ac.LastDateTime = DateTime.Now;
                                    if (ac.currentSystemMode == 0)
                                    {
@@ -242,35 +244,33 @@
                                case 4097:
                                    //过虑网清洗标志:42
                                    ac.CleanStatu = attriButeList[0].AttriButeData == 42;
                                        ac.CleanStatu = attList.AttriButeData == 42;
                                    cleanStatu.Visible = ac.CleanStatu;
                                    break;
                                case 4099:
                                    var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                        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;
                                }
                            }
                        }
                        if (common.DeviceStatusReport.CluterID == 514)
                        {
                            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)
                            {
                                switch (attList.AttributeId)
                            {
                                case 0:
                                    //风扇当前的工作模式 1=Low 2=Medium 3=High
                                    ac.currentFanMode = attriButeList[0].AttriButeData;
                                        ac.currentFanMode = attList.AttriButeData;
                                    ac.LastDateTime = DateTime.Now;
                                    fanModeBtn.IsSelected = true;
                                    fanModeBtn.SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanModeId(ac.currentFanMode);
@@ -278,12 +278,13 @@
                                    break;
                                case 4096:
                                    //风扇当前的扫风模式
                                    ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                        ac.currentFanSwingMode = attList.AttriButeData;
                                    ac.LastDateTime = DateTime.Now;
                                    FanSwingModeBtn.IsSelected = true;
                                    FanSwingModeBtn.SelectedImagePath = ACControlBase.GetFanSwingModeSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
                                    FanSwingModeBtn.UnSelectedImagePath = ACControlBase.GetFanSwingModeUnSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
                                    break;
                                }
                            }
                        }
                        //***新改 * **设备状态上报中,当CluterID = 3,证明设备在线,直接标记
@@ -560,7 +561,7 @@
            currentModeBtn = new Button()
            {
                Y = Application.GetRealHeight(599),
                Y = Application.GetRealHeight(565),
                Height = Application.GetRealHeight(80),
                Width = Application.GetRealWidth(200),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
@@ -572,7 +573,7 @@
            reduceTemperatureBtn = new Button()
            {
                X = Application.GetRealWidth(268),
                Y = Application.GetRealHeight(680),
                Y = Application.GetRealHeight(650),
                Width = Application.GetMinRealAverage(80),
                Height = Application.GetMinRealAverage(80),
                UnSelectedImagePath = "AC/Reduce.png"
@@ -581,8 +582,8 @@
            addTemperatureBtn = new Button()
            {
                X = Application.GetRealWidth(628),
                Y = Application.GetRealHeight(680),
                X = Application.GetRealWidth(620),
                Y = Application.GetRealHeight(650),
                Width = Application.GetMinRealAverage(80),
                Height = Application.GetMinRealAverage(80),
                UnSelectedImagePath = "AC/Add.png"
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -149,6 +149,10 @@
                {
                    try
                    {
                        if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
                        {
                            return;
                        }
                        for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
                        {
                            var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
@@ -169,10 +173,6 @@
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.DeviceStatusReport = common.DeviceStatusReport;
                                        if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            continue;
                                        }
                                        light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(light.OnOffStatus == 1);
@@ -194,10 +194,6 @@
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            return;
                                        }
                                        airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(airSwitch.OnOffStatus == 1);
@@ -249,57 +245,47 @@
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    {
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        {
                                            return;
                                        }
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        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)
                                        foreach(var attList in attriButeList)
                                        {
                                            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 = attriButeList[0].AttriButeData;
                                                    ac.currentSystemMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4099:
                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                                    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:
                                                //过虑网清洗标志:42
                                                ac.CleanStatu = attriButeList[0].AttriButeData == 42;
                                                    ac.CleanStatu = attList.AttriButeData == 42;
                                                break;
                                        }
                                        }
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(ac.currentSystemMode != 0);
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
@@ -309,21 +295,20 @@
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        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)
                                        {
                                            switch (attList.AttributeId)
                                        {
                                            case 0:
                                                ac.currentFanMode = attriButeList[0].AttriButeData;
                                                    ac.currentFanMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                                    ac.currentFanSwingMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            }
                                        }
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(ac.currentSystemMode != 0);
@@ -345,10 +330,6 @@
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            continue;
                                        }
                                        dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(dimmableLight.OnOffStatus == 1);
@@ -359,10 +340,6 @@
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            continue;
                                        }
                                        dimmableLight.Level = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.SetStatu(dimmableLight.OnOffStatus == 1);
@@ -1032,7 +1009,7 @@
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                        else if (deviceUI.CommonDevice.Type == DeviceType.AirSwitch)
                        {
                            //空气开关
                            var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
@@ -1133,7 +1110,7 @@
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                        else if (deviceUI.CommonDevice.Type == DeviceType.DimmableLight)
                        {
                            //调光灯
                            var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
@@ -1233,7 +1210,7 @@
                                delBtn.MouseUpEventHandler += delEvent;
                            }
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                        else if (deviceUI.CommonDevice.Type == DeviceType.Thermostat)
                        {
                            //空调
                            var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
@@ -1335,7 +1312,7 @@
                                acControl.Show(deviceUI, room);
                            };
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                        else if (deviceUI.CommonDevice.Type == DeviceType.WindowCoveringDevice)
                        {
                            //卷帘
                            var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
@@ -1422,7 +1399,7 @@
                                rollerShadeControl.Show(deviceUI, room);
                            };
                        }
                        else if(deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DoorLock)
                        else if (deviceUI.CommonDevice.Type == DeviceType.DoorLock)
                        {
                            var deviceTypeRowLayout = new RowLayout()
                            {
@@ -1520,7 +1497,6 @@
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
@@ -38,10 +38,8 @@
            new System.Threading.Thread(() =>
            {
                SendFanStatuComand(device);
                System.Console.WriteLine("发送时间:" + DateTime.Now.ToString("o"));
                System.Threading.Thread.Sleep(500);
                System.Threading.Thread.Sleep(300);
                SendThermostatStatuComand(device);
                System.Console.WriteLine("接收时间:" + DateTime.Now.ToString("o"));
            })
            { IsBackground = true }.Start();
        }
@@ -89,7 +87,6 @@
               {
                 { "AttriButeId", (int)AttriButeId.CleanStatu}
               }
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
@@ -122,7 +119,7 @@
            };
            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
        }
        #endregion
@@ -230,7 +227,6 @@
            jObject.Add("Data", data);
            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
        }
        #endregion
    }
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -122,22 +122,33 @@
                {
                    try
                    {
                        if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
                        {
                            return;
                        }
                        for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
                        {
                            var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
                            var deviceUI = rowFL.Tag as DeviceUI;
                            if (deviceUI.CommonDevice == null || rowFL.ChildrenCount == 0)
                            if (rowFL.ChildrenCount == 0)
                            {
                                //设备为空或者控件为空
                                continue;
                            }
                            for (int j=0;j<rowFL.ChildrenCount;j++)
                            {
                                var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
                                if (deviceUI == null || deviceUI.CommonDevice == null)
                                {
                                    //设备为空或者控件为空
                                    continue;
                                }
                            if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
                            {
                                //判断是否为当前设备
                                continue;
                            }
                            var frameLayout = rowFL.GetChildren(0) as FrameLayout;
                            switch (deviceUI.CommonDevice.Type)
                            {
                                case DeviceType.OnOffOutput:
@@ -146,16 +157,9 @@
                                    {
                                        var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                                        onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
                                        //记录、更新状态
                                        if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            continue;
                                        }
                                        onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        //记录回复时间
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        onOffOutputLight.LastDateTime = DateTime.Now;
                                    }
                                    break;
@@ -166,27 +170,10 @@
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < frameLayout.ChildrenCount; j++)
                                        {
                                            var tempView = frameLayout.GetChildren(j);
                                            if (tempView.Tag == null)
                                            {
                                                continue;
                                            }
                                            if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
                                            {
                                                //记录、更新状态
                                                if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                                {
                                                    return;
                                                }
                                                airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                //记录回复时间
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                airSwitch.LastDateTime = DateTime.Now;
                                            }
                                        }
                                    }
                                    //当CluterID=3,就证明该设备在线,直接标记
                                    if (common.DeviceStatusReport.CluterID == 3)
@@ -206,8 +193,18 @@
                                            rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                            rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            rollerShade.LastDateTime = DateTime.Now;
                                            (rowFL.GetChildren(0) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                            (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                                (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                            if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8)
                                            {
                                                //窗帘百分比
                                                var rollerShade = deviceUI.CommonDevice as Rollershade;
                                                rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                                rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                rollerShade.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                                (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
@@ -224,32 +221,26 @@
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        var attriButeList = ac.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                            foreach(var attList in attriButeList)
                                        {
                                            continue;
                                        }
                                        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)
                                                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:
                                                //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                                ac.currentLocalTemperature = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 17:
                                                //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                                ac.currentCoolingSetpoint = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 18:
                                                //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                                ac.currentHeatingSetpoint = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
                                                ac.currentAutoSetpoint = curTemp;
@@ -258,44 +249,43 @@
                                            case 28:
                                                //此属性描述恒温设备正处于哪种模式
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                        ac.currentSystemMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4099:
                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                                        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++)
                                                        for (int k = 0; k < modeStr.Length; k++)
                                                {
                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                                            ac.listSupportMode[k] = Convert.ToInt32(modeStr[k]) == 49 ? 1 : 0;
                                                }
                                                break;
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                    }
                                    if (common.DeviceStatusReport.CluterID == 514)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        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)
                                            {
                                                switch (attList.AttributeId)
                                        {
                                            case 0:
                                                ac.currentFanMode = attriButeList[0].AttriButeData;
                                                        ac.currentFanMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                                        ac.currentFanSwingMode = attList.AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                    }
                                    //当CluterID=3,就证明该设备在线,直接标记
                                    if (common.DeviceStatusReport.CluterID == 3)
@@ -308,20 +298,13 @@
                                case DeviceType.DimmableLight:
                                    //调光灯功能
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        //记录、更新状态
                                        if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            return;
                                        }
                                        dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        //记录回复时间
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        dimmableLight.LastDateTime = DateTime.Now;
                                    }
@@ -331,22 +314,19 @@
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        {
                                            continue;
                                        }
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
                                                //此属性表明当前亮度程度
                                                dimmableLight.Level = attriButeList[0].AttriButeData;
                                                dimmableLight.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = true;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                    (rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                break;
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                    }
@@ -963,7 +943,6 @@
                        itemView = new FrameLayout()
                        {
                            Height = Application.GetRealHeight(14 + 348),
                            Tag = device
                        };
                        deviceVerticalScrolViewLayout.AddChidren(itemView);
                    }
@@ -1013,6 +992,7 @@
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        lightView.Tag = device;
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
@@ -1121,6 +1101,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
@@ -1255,6 +1236,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
@@ -1360,6 +1342,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
@@ -1464,6 +1447,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
@@ -1562,6 +1546,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
@@ -1593,6 +1578,7 @@
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
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;
                            }
                            //当CluterID=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,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)
                                    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 = attriButeList[0].AttriButeData;
                                            ac.currentSystemMode = attList.AttriButeData;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 4099:
                                        var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                            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 = attriButeList[0].AttriButeData == 42;
                                            ac.CleanStatu = attList.AttriButeData == 42;
                                        break;
                                    }
                                }
                            }
@@ -208,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)
                                foreach(var attList in attriButeList)
                                {
                                    switch (attList.AttributeId)
                                {
                                    case 0:
                                        ac.currentFanMode = attriButeList[0].AttriButeData;
                                            ac.currentFanMode = attList.AttriButeData;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 4096:
                                        ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                            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:
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
@@ -22,10 +22,10 @@
#if DEBUG
            if (flage == true)
            {
                if (msg.Contains("DeviceStatusReport") == false)
                {
                //if (msg.Contains("DeviceStatusReport") == false)
                //{
                    System.Console.WriteLine(msg + "  " + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
                }
                //}
            }
#endif
        }
ZigbeeApp/Shared/R.cs
@@ -952,7 +952,7 @@
        /// </summary>
        public const int SelectScenePic = 11033;
        /// <summary>
        /// 确定删除吗?
        /// 确定要移除该功能?
        /// </summary>
        public const int DeleteFunction = 11034;