xm
2020-05-13 edf7c324bea0556a3df9096dd41d668a9d41bf51
改版是门锁新功能需要给测试部的版本
8个文件已修改
1 文件已重命名
8567 ■■■■■ 已修改文件
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs 8040 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DevicePmSensorRowControl.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs 235 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/Shared/Shared.projitems 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
Diff too large
ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DevicePmSensorRowControl.cs
ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs
old mode 100755 new mode 100644
@@ -16,7 +16,7 @@
        }
        /// 给徐梅刷新界面用的
        public  Action<bool> action;
        public Action<bool> action;
        ///第二块第一级父控件
        FrameLayout fLayout = new FrameLayout();
        ///第三块第一级父控件
@@ -41,7 +41,7 @@
            view.toptitleNameBtn.TextID = MyInternationalizationString.openmode;
            view.clickBtn.MouseDownEventHandler += (sender, e) =>
            {
                UserView.HomePage.Instance.ScrollEnabled = true;
                UserView.HomePage.Instance.ScrollEnabled = true;
                //把静态变量的这个东西置空
                soneLogicList = null;
                this.RemoveFromParent();
@@ -49,6 +49,8 @@
                {
                    action(Send.CurrentDoorLock.IsDoorLockNormallyMode);
                }
                //返回按键清空
                UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
            };
            var middle = new FrameLayout
@@ -215,7 +217,7 @@
        /// <summary>
        /// 常开模式开关切换图标界面
        /// </summary>
        public  void ModeView()
        public void ModeView()
        {
            fLayout.RemoveAll();
@@ -316,7 +318,8 @@
                }
            button1 = new Button
            }
            else
            {
                fLayout.Height = Application.GetRealHeight(645);//改变高度
                modeIconBtn.UnSelectedImagePath = "ZigeeLogic/noMode.png";//改变图标状态
@@ -366,25 +369,25 @@
                };
                modeFl.AddChidren(clickBtn);
                clickBtn.MouseUpEventHandler += (sender, e) =>
                 {
                {
                     LogicView.TipView.ShowConfrimTip(() =>
                    LogicView.TipView.ShowConfrimTip(() =>
                     {///再次确认
                    {///再次确认
                        LogicView.TipView.ShowInputTip(true, async (str) =>
                         {///确认发送命令
                        {///确认发送命令
                            CommonPage.Loading.Start();
                             try
                             {
                            try
                            {
                                ///xm
                                var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock);
                                 if (!result)
                                 {
                                     LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed));
                                     return;
                                 }
                                 else
                                 {
                                if (!result)
                                {
                                    LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed));
                                    return;
                                }
                                else
                                {
                                    ///因为有常开模式下才可以创建失效逻辑;
                                    SkipView.GetLogicAll();//删除之前所有失效逻辑
                                    var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑
@@ -399,8 +402,8 @@
                                    logicId = addResult;
                                    timeValue = int.Parse(str);
                                    Send.CurrentDoorLock.IsDoorLockNormallyMode = true;
                                    ModeView();
                                    //添加App开启常开模式的历史记录
                                    ModeView();
                                    //添加App开启常开模式的历史记录
                                    UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty);
                                }
                            }
@@ -430,187 +433,10 @@
            listLogicFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
        }
        /// <summary>
        /// 常开模式开关切换图标界面
        /// </summary>
        public async void ModeView()
        {
            if (Send.CurrentDoorLock.IsDoorLockNormallyMode)
            {
                /// 查找是否存在时效性自动化;有的话就返回自动化对象;
                var logic = await SkipView.GetLogicIfon();
                fLayout.Height = Application.GetRealHeight(780);//改变高度
                modeIconBtn.UnSelectedImagePath = "ZigeeLogic/openMode.png";//改变图标状态
                modeFl.Y = modeIconBtn.Bottom + Application.GetRealHeight(64);
                modeFl.X = Application.GetRealWidth(0);
                modeFl.Height = Application.GetRealHeight(127 + 199);
                modeFl.Width = Application.GetRealHeight(1080);
                modeFl.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
                modeFl.SetCornerWithSameRadius(Application.GetRealHeight(0), HDLUtils.RectCornerBottomLeft);
                ///关闭时效性自动化
                button1.Y = Application.GetRealHeight(0);
                button1.X = Application.GetRealWidth(86);
                button1.Width = Application.GetRealWidth(907);
                button1.Height = Application.GetRealHeight(127);
                button1.Radius = (uint)Application.GetRealHeight(58);
                button1.BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor;
                button1.TextAlignment = TextAlignment.Center;
                button1.TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor;
                button1.TextID = MyInternationalizationString.closeUp;
                button1.TextSize = 16;
                button1.MouseUpEventHandler = async (sender, e) =>
                {
                    var result = await UserCenter.DoorLock.DoorLockCommonInfo.DelNormallyOpenMode(Send.CurrentDoorLock);
                    if (result)
                    {
                        if (logic != null)
                        {
                            ///有可能只有常开模式,没有时效性自动化
                            ///没有判断的话,逻辑会为空,抛出异常;
                            Send.DelLogic(logic.LogicId);
                        }
                        Send.CurrentDoorLock.IsDoorLockNormallyMode = false;
                        ModeView();
                    }
                    else
                    {
                        LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.closeFailed));
                    }
                };
                if (logic != null)
                {
                    ///显示失效设置时间文本控件
                    button2.Y = Application.GetRealHeight(127 + 69);
                    button2.X = Application.GetRealWidth(125);
                    button2.Width = Application.GetRealWidth(634 + 200);
                    button2.Height = Application.GetRealHeight(60);
                    button2.UnSelectedImagePath = "ZigeeLogic/1234.png";
                    button2.TextSize = 15;
                    button2.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                    ///有时效性常开才显示时间条件文本
                }
                else
                {
                    button2.Width = Application.GetRealWidth(0);
                    button2.Height = Application.GetRealHeight(0);
                }
                ///时效性常开只有一个条件;
                try
                {
                    var y = DateTime.Now.Year.ToString();//那一年
                    var m = DateTime.Now.Month.ToString();//那一月
                    var d = DateTime.Now.ToString("dd");//那一天
                    var h = int.Parse(DateTime.Now.ToString("HH"));//当前系统时间
                    var timeInt = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]);
                    int dayInt = (h + timeInt) / 24;//算出几天后执行
                    int hour = (h + timeInt) % 24;//算出几天后那个时间执行
                    int days = int.Parse(d) + dayInt;
                    string text1 = Language.StringByID(MyInternationalizationString.timeSensitive);
                    string text2 = Language.StringByID(MyInternationalizationString.yearSone);
                    string text3 = Language.StringByID(MyInternationalizationString.monthSone);
                    string text4 = Language.StringByID(MyInternationalizationString.numberSone);
                    string text5 = Language.StringByID(MyInternationalizationString.executeSone);
                    button2.Text = text1 + y + text2 + m + text3 + days.ToString() + text4 + hour.ToString() + text5;
                }
                catch { }
            }
            else
            {
                fLayout.Height = Application.GetRealHeight(645);//改变高度
                modeIconBtn.UnSelectedImagePath = "ZigeeLogic/noMode.png";//改变图标状态
                modeFl.Y = modeIconBtn.Bottom + Application.GetRealHeight(92);
                modeFl.X = Application.GetRealWidth(58);
                modeFl.Height = Application.GetRealHeight(138);
                modeFl.Width = Application.GetRealHeight(1022);
                modeFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
                modeFl.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
                ///时效性常开设置显示文本控件
                button1.Y = Application.GetRealHeight(40);
                button1.X = Application.GetRealWidth(58);
                button1.Width = Application.GetRealWidth(600);
                button1.Height = Application.GetRealHeight(60);
                button1.Radius = (uint)Application.GetRealHeight(0);
                button1.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
                button1.TextAlignment = TextAlignment.CenterLeft;
                button1.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                // Text = "时效性常开设置",
                button1.TextID = MyInternationalizationString.timeSetSone;
                button1.TextSize = 15;
                ///下一级菜单图标控件
                button2.Width = Application.GetMinRealAverage(104);
                button2.Height = Application.GetMinRealAverage(104);
                button2.X = Application.GetRealWidth(861);
                button2.Y = Application.GetRealHeight(17);
                button2.UnSelectedImagePath = "ZigeeLogic/nextIconSone.png";
                button2.TextSize = 15;
                button2.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                button2.MouseUpEventHandler = (sender, e) =>
                {
                    LogicView.TipView.ShowConfrimTip(() =>
                    {///再次确认
                        LogicView.TipView.ShowInputTip(true, async (str) =>
                        {///确认发送命令
                            try
                            {
                                ///xm
                                var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock);
                                if (!result)
                                {
                                    LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed));
                                    return;
                                }
                                else
                                {
                                    ///因为有常开模式下才可以创建失效逻辑;
                                    SkipView.GetLogicAll();//删除之前所有失效逻辑
                                    var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑
                                    if (!addResult)
                                    {
                                        ///可欣说如果常开模式开,创建自动化失败,那么将要发一条常开模式关闭命令;
                                        UserCenter.DoorLock.DoorLockCommonInfo.DelNormallyOpenMode(Send.CurrentDoorLock);
                                        ///提示失败
                                        LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.addFailed));
                                        return;
                                    }
                                    Send.CurrentDoorLock.IsDoorLockNormallyMode = true;
                                    ModeView();
                                    //添加App开启常开模式的历史记录
                                    UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty);
                                }
                            }
                            catch
                            {
                            }
                        });
                    });
                };
            }
            listLogicFl.Y = fLayout.Bottom;
            listLogicFl.X = Application.GetRealWidth(58);
            listLogicFl.Height = Application.GetRealHeight(Method.H - 184) - fLayout.Height;
            listLogicFl.Width = Application.GetRealWidth(1022);
            listLogicFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
        }
        /// <summary>
        /// 读取自动化列表数据;
        /// </summary>
        /// <param name="yes"></param>
        private async void Read( bool yes)
        private async void Read(bool yes)
        {
            if (yes)
            {
@@ -648,9 +474,6 @@
            }
        }
        RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态
        int a = 1;
        /// <summary>
        /// 记录左滑状态
        /// </summary>
@@ -690,7 +513,7 @@
                    selectedRow = logicRow;
                };
                a++;
                ///显示逻辑名称的控件
                ///显示逻辑名称的控件
                var nameBtn = new Button
                {
                    Height = Application.GetRealHeight(58),
@@ -807,17 +630,17 @@
                {
                    var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
                    Language.StringByID(MyInternationalizationString.doyouwanttodelete),
                    Language.StringByID(MyInternationalizationString.confrim));
                    alert.Show();
                    alert.ConfirmClickEvent += () =>
                    Language.StringByID(MyInternationalizationString.confrim));
                    alert.Show();
                    alert.ConfirmClickEvent += () =>
                    {
                        Common.Logic.SoneLogicList.Remove(logic);
                        //logicRow.Parent.RemoveFromParent();
                        fLayoutLogic.RemoveFromParent();
                        Send.DelLogic(logic.LogicId);
                        Send.DelLogic(logic.LogicId);
                    };
                };
                };
            }
        }
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
@@ -19,28 +19,28 @@
        /// <summary>
        /// 控件
        /// </summary>
        private PMSensor pMSensor = null;
        private PMSensor pMSensor = null;
        /// <summary>
        /// 状态控件
        /// </summary>
        private NormalViewControl btnStatu = null;
        private NormalViewControl btnStatu = null;
        /// <summary>
        /// 当前的文本
        /// </summary>
        private string CurrentText = string.Empty;
        private string CurrentText = string.Empty;
        /// <summary>
        /// 设备名称控件
        /// </summary>
        private NormalViewControl btnDeviceName = null;
        private NormalViewControl btnDeviceName = null;
        #endregion
        #region ■ 初始化_____________________________
        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
        {
            //左滑不能
            this.ScrollEnabled = true;
            this.ScrollEnabled = true;
            this.pMSensor = (PMSensor)this.device;
            //先清空
            this.listControl = new List<ButtonBase>();
@@ -52,19 +52,19 @@
        /// 初始化PM2.5传感器控件
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void InitFreshAirControl(FrameLayout frameWhiteBack)
        private void InitFreshAirControl(FrameLayout frameWhiteBack)
        {
            //湿度容器
            var frameHumidityPic = new FrameLayout();
            frameHumidityPic.X = Application.GetMinRealAverage(138);
            frameHumidityPic.Y = Application.GetRealHeight(242);
            frameHumidityPic.Width = Application.GetMinRealAverage(311);
            frameHumidityPic.X = Application.GetMinRealAverage(138);
            frameHumidityPic.Y = Application.GetRealHeight(242);
            frameHumidityPic.Width = Application.GetMinRealAverage(311);
            frameHumidityPic.Height = Application.GetMinRealAverage(351);
            frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png";
            frameWhiteBack.AddChidren(frameHumidityPic);
            //湿度文本
            var btnHumidityText = new NormalViewControl(311, 49, true);
            var btnHumidityText = new NormalViewControl(311, 49, true);
            btnHumidityText.Y = Application.GetRealHeight(45);
            btnHumidityText.TextID = R.MyInternationalizationString.Humidity;
            btnHumidityText.TextSize = 12;
@@ -73,7 +73,7 @@
            frameHumidityPic.AddChidren(btnHumidityText);
            //湿度数据(第1个,listControl【0】)
            var btnHumidityStatus = new NormalViewControl(193, 92, true);
            var btnHumidityStatus = new NormalViewControl(193, 92, true);
            btnHumidityStatus.Y = Application.GetRealHeight(181);
            btnHumidityStatus.Text = "20";
            btnHumidityStatus.TextSize = 30;
@@ -83,7 +83,7 @@
            this.listControl.Add(btnHumidityStatus);
            //湿度单位
            var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
            var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
            btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
            btnHumidityUnit.X = Application.GetRealWidth(190);
            btnHumidityUnit.Text = "%";
@@ -94,14 +94,14 @@
            //温度容器
            var frameTemperaturePic = new FrameLayout();
            frameTemperaturePic.X = Application.GetMinRealAverage(518);
            frameTemperaturePic.Y = Application.GetRealHeight(242);
            frameTemperaturePic.Width = Application.GetMinRealAverage(311);
            frameTemperaturePic.X = Application.GetMinRealAverage(518);
            frameTemperaturePic.Y = Application.GetRealHeight(242);
            frameTemperaturePic.Width = Application.GetMinRealAverage(311);
            frameTemperaturePic.Height = Application.GetMinRealAverage(351);
            frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png";
            frameWhiteBack.AddChidren(frameTemperaturePic);
            //温度文本
            var btnTemperatureText = new NormalViewControl(311, 49, true);
            var btnTemperatureText = new NormalViewControl(311, 49, true);
            btnTemperatureText.Y = Application.GetRealHeight(45);
            btnTemperatureText.TextID = R.MyInternationalizationString.Temperature;
            btnTemperatureText.TextSize = 12;
@@ -110,7 +110,7 @@
            frameTemperaturePic.AddChidren(btnTemperatureText);
            //温度数据(第2个,listControl【1】)
            var btnTemperatureStatus = new NormalViewControl(193, 92, true);
            var btnTemperatureStatus = new NormalViewControl(193, 92, true);
            btnTemperatureStatus.Y = Application.GetRealHeight(181);
            btnTemperatureStatus.Text = "20";
            btnTemperatureStatus.TextSize = 30;
@@ -120,7 +120,7 @@
            this.listControl.Add(btnTemperatureStatus);
            //温度单位
            var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
            var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
            btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
            btnTemperatureUnit.X = Application.GetRealWidth(188);
            btnTemperatureUnit.Text = "℃";
@@ -131,14 +131,14 @@
            //PM2.5传感器的PM2.5容器
            var framePmPic = new FrameLayout();
            framePmPic.X = Application.GetMinRealAverage(138);
            framePmPic.Y = Application.GetRealHeight(662);
            framePmPic.Width = Application.GetMinRealAverage(311);
            framePmPic.X = Application.GetMinRealAverage(138);
            framePmPic.Y = Application.GetRealHeight(662);
            framePmPic.Width = Application.GetMinRealAverage(311);
            framePmPic.Height = Application.GetMinRealAverage(351);
            framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png";
            frameWhiteBack.AddChidren(framePmPic);
            //PM2.5文本
            var btnPmText = new NormalViewControl(311, 49, true);
            var btnPmText = new NormalViewControl(311, 49, true);
            btnPmText.Y = Application.GetRealHeight(45);
            btnPmText.Text = "PM2.5";
            btnPmText.TextSize = 12;
@@ -147,7 +147,7 @@
            framePmPic.AddChidren(btnPmText);
            //PM2.5数据(第3个,listControl【2】)
            var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
            var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
            btnPmStatus.Y = Application.GetRealHeight(181);
            btnPmStatus.Text = "155";
            btnPmStatus.TextSize = 30;
@@ -157,7 +157,7 @@
            this.listControl.Add(btnPmStatus);
            //PM2.5单位
            var btnPmUnit = new NormalViewControl(124 + 15, 43, true);
            var btnPmUnit = new NormalViewControl(124 + 15, 43, true);
            btnPmUnit.Y = Application.GetRealHeight(181 + 46);
            btnPmUnit.X = Application.GetRealWidth(150);
            btnPmUnit.Text = "μg/m³";
@@ -176,63 +176,63 @@
        /// <param name="comandDiv">命令区分</param>
        /// <param name="report">上报数据</param>
        /// <returns></returns>
        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
        {
            if (comandDiv == ReceiveComandDiv.A设备属性上报)
            {
                if (report.DeviceStatusReport.CluterID == 1026)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
        {
            if (comandDiv == ReceiveComandDiv.A设备属性上报)
            {
                if (report.DeviceStatusReport.CluterID == 1026)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1029)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1029)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1066)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1066)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                            return true;
                        }
                    }
                }
            }
            return false;
                    }
                }
            }
            return false;
        }
        #endregion
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -786,6 +786,11 @@
                                            break;
                                        case 4:
                                            //PM2.5
                                            if (device.Type == DeviceType.PMSensor)
                                            {
                                                targetList.Add(device);
                                                oldTargetList.Add(device);
                                            }
                                            break;
                                    }
@@ -902,6 +907,7 @@
                                        break;
                                    case 4:
                                        //PM2.5
                                        removeDevice.BindCluster = 1066;
                                        break;
                                }
                                removeDevice.BindMacAddr = bd.DeviceAddr;
@@ -1087,6 +1093,7 @@
                                    break;
                                case 4:
                                    //PM2.5
                                    addBindInfo.BindCluster = 1066;
                                    break;
                            }
                            addBindInfo.BindType = 0;
@@ -1348,6 +1355,17 @@
                            }
                            break;
                        case 4:
                            foreach (var de in room.ListDevice)
                            {
                                var device = LocalDevice.Current.GetDevice(de);
                                if (device != null)
                                {
                                    if (device.Type == DeviceType.PMSensor)
                                    {
                                        roomIncludeMatchDevice.Add(device);
                                    }
                                }
                            }
                            break;
                    }
@@ -1550,6 +1568,24 @@
                    }
                    break;
                case 4:
                    foreach (var r in supportRoomList)
                    {
                        if (r.ListDevice.Count == 0)
                        {
                            continue;
                        }
                        foreach (var deviceKeys in r.ListDevice)
                        {
                            var device = LocalDevice.Current.GetDevice(deviceKeys);
                            if (device != null)
                            {
                                if (device.Type == DeviceType.PMSensor)
                                {
                                    currentPanelBindSupportDeviceListTemp.Add(device);
                                }
                            }
                        }
                    }
                    break;
            }
            return currentPanelBindSupportDeviceListTemp;
@@ -1603,6 +1639,17 @@
                    }
                    break;
                case 4:
                    foreach (var deviceKeys in curRoom.ListDevice)
                    {
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device != null)
                        {
                            if (device.Type == DeviceType.PMSensor)
                            {
                                curRoomDeviceListTemp.Add(device);
                            }
                        }
                    }
                    break;
            }
            return curRoomDeviceListTemp;
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -151,11 +151,6 @@
        public static void NormallyOpenModeValue(ZigBee.Device.DoorLock doorLock, bool value)
        {
            doorLock.IsDoorLockNormallyMode = value;
            if (LogicAction != null)
            {
                LogicAction(value);
            }
        }
        /// <summary>
@@ -196,6 +191,10 @@
                {
                    //上报“常开模式”已被取消,app默认了“常开模式”被取消 
                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                    if (LogicAction != null)
                    {
                        LogicAction(false);
                    }
                    if (haveLogic)
                    {
                        //此处删除温居城的常开模式特殊逻辑
@@ -237,6 +236,10 @@
                        });
                        action?.Invoke(doorLock.IsDoorLockNormallyMode);
                        action = null;
                        if (LogicAction != null)
                        {
                            LogicAction(false);
                        }
                        return;
                    }
                    if (result.defaultControlResponseData.status != 0)
@@ -248,8 +251,13 @@
                            NormallyOpenModeValue(doorLock, false);
                            CommonPage.Loading.Hide();
                        });
                        action?.Invoke(doorLock.IsDoorLockNormallyMode);
                        action = null;
                        if (LogicAction != null)
                        {
                            LogicAction(false);
                        }
                        return;
                    }
                    else
@@ -262,6 +270,10 @@
                            ShowTipMsg(msg0);
                            NormallyOpenModeValue(doorLock, true);
                            CommonPage.Loading.Hide();
                            if (LogicAction != null)
                            {
                                LogicAction(true);
                            }
                        });
                    }
                }
@@ -279,6 +291,10 @@
                if (doorLockMessType == DoorLockMessType.DeviceReport || doorLockMessType == DoorLockMessType.ServicePush)
                {
                    NormallyOpenModeValue(doorLock, false);
                    if (LogicAction != null)
                    {
                        LogicAction(false);
                    }
                    if (haveLogic)
                    {
                        //此处删除温居城的常开模式特殊逻辑
@@ -299,6 +315,10 @@
                        });
                        action?.Invoke(doorLock.IsDoorLockNormallyMode);
                        action = null;
                        if (LogicAction != null)
                        {
                            LogicAction(false);
                        }
                        return;
                    }
                    if (result.defaultControlResponseData.status != 0)
@@ -311,6 +331,10 @@
                        });
                        action?.Invoke(doorLock.IsDoorLockNormallyMode);
                        action = null;
                        if (LogicAction != null)
                        {
                            LogicAction(false);
                        }
                        return;
                    }
                    else
@@ -331,6 +355,10 @@
                            ShowTipMsg(msg2);
                            CommonPage.Loading.Hide();
                        });
                        if (LogicAction != null)
                        {
                            LogicAction(false);
                        }
                    }
                }
                action?.Invoke(doorLock.IsDoorLockNormallyMode);
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
old mode 100755 new mode 100644
@@ -615,6 +615,10 @@
                        {
                            if (canOpenNormallyMode)
                            {
                                //Application.RunOnMainThread(() =>
                                //{
                                //    NomallyOpenModeInvalidDialog(true);
                                //});
                                Application.RunOnMainThread(() =>
                                {
                                    Action<bool> action = (obj) =>
@@ -856,17 +860,14 @@
            //开锁事件
            EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
            {
                canShowDialog = true;
                if (doorLock.IsDoorLockNormallyMode)
                {
                    if (canOpenNormallyMode)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            Action<bool> action = (obj) =>
                            {
                                UpdateNomallyOpenStatus();
                            };
                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
                            NomallyOpenModeInvalidDialog();
                        });
                    }
                    else
@@ -889,17 +890,14 @@
            //关锁事件
            EventHandler<MouseEventArgs> hander2 = (sender, e) =>
            {
                canShowDialog = true;
                if (canOpenNormallyMode)
                {
                    if (doorLock.IsDoorLockNormallyMode)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            Action<bool> action = (obj) =>
                            {
                                UpdateNomallyOpenStatus();
                            };
                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
                            NomallyOpenModeInvalidDialog();
                        });
                    }
                }
@@ -1128,15 +1126,11 @@
                    {
                        UpdateNomallyOpenStatus();
                    });
                    //删除已经失效的“常开模式”的逻辑
                    if (haveLogicNormallyOpenMode)
                    {
                        var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                        //if (resTemp == 3)
                        //{
                        //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        //    this.ShowTipMsg(msg0);
                        //}
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                }
                else
@@ -1156,16 +1150,11 @@
                {
                    //上报“常开模式”已被取消
                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                    //先删除已失效的“常开模式”的逻辑
                    if (haveLogicNormallyOpenMode)
                    {
                        var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                        //if (resTemp == 3)
                        //{
                        //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed2);
                        //    this.ShowTipMsg(msg0);
                        //    return;
                        //}
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                    //app重新开启“常开模式”
                    var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
@@ -1233,15 +1222,10 @@
                        UpdateNomallyOpenStatus();
                    });
                    //删除已经失效的“常开模式”的逻辑
                    if (haveLogicNormallyOpenMode)
                    {
                        var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                        //if (resTemp == 3)
                        //{
                        //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                        //    this.ShowTipMsg(msg0);
                        //}
                        //此处删除温居城的常开模式特殊逻辑
                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                    }
                }
                else
@@ -1272,21 +1256,11 @@
                        {
                            UpdateNomallyOpenStatus();
                        });
                        //删除设置常开模式创建的逻辑
                        if (haveLogicNormallyOpenMode)
                        {
                            var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3);
                            //因为目前机制问题,逻辑经常失败,所以不提示,后期机制要改,重新做一个这个界面
                            //if (resTemp == 3)
                            //{
                            //    string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed);
                            //    this.ShowTipMsg(msg0);
                            //}
                            //else if (resTemp == 2)
                            //{
                            //    string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
                            //    this.ShowTipMsg(msg2);
                            //}
                            //此处删除温居城的常开模式特殊逻辑
                            var resTemp1 = await Shared.Phone.Device.Logic.SkipView.GetLogicAll();
                        }
                        string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
                        this.ShowTipMsg(msg2);
ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
@@ -304,6 +304,21 @@
        }
        /// <summary>
        /// 由设备路径恢复设备对象
        /// </summary>
        /// <returns>The device by file path.</returns>
        /// <param name="deviceFilePath">Device file path.</param>
        public static CommonDevice CommonDeviceByFilePath(string deviceFilePath)
        {
            var v = deviceFilePath.Split('_');
            if (v.Length < 3)
            {
                return null;
            }
            return CommonDeviceByByteString(v[1], System.Text.Encoding.UTF8.GetString(Shared.Common.Global.ReadFileByHomeId(deviceFilePath)));
        }
        /// <summary>
        /// 保存设备
        /// </summary>
        public void Save()
ZigbeeApp/Shared/Shared.projitems
@@ -29,7 +29,6 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceCurtainRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceDoorLockRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceFreshAirRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DevicePmSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceRelayRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DeviceTemperatureRowControl.cs" />
@@ -97,7 +96,6 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceColorLightDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceCurtainDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceFreshAirDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DevicePmSensorDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DeviceRelayDetailCardForm.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceCard\DeviceFreshAirCardControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\Controls\DeviceFunctionUnallocatedControl.cs" />
@@ -478,7 +476,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\ZbGatewayData.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlSafeguardLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Logic\HdlAlarmsLogic.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\DevicePmSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\Category\Controls\DeviceRow\Base\DevicePmSensorRowControl.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Phone\MainPage\ControlForm\DevicePmSensorDetailCardForm.cs" />
  </ItemGroup>
  <ItemGroup>