HDL Home App 第二版本 旧平台金堂用 正在使用
请合并最新代码「20200522:添加门锁晚上9点上报常开功能,优化PM2.5测试功能」
13个文件已修改
291 ■■■■ 已修改文件
ZigbeeApp20200519/Home.Ios/Resources/Language.ini 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/Device/Logic/SoneLogicList.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/ShowDoorLockMsgControl.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/ZigBee/Common/Application.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/Phone/ZigBee/Device/DoorLock.cs 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Shared/R.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZigbeeApp20200519/Home.Ios/Resources/Language.ini
@@ -323,6 +323,7 @@
320=中度污染
321=重度污染
322=严重污染 
323=自动化关闭【门锁常开模式】,门锁已关
5097=取消
5098=确定
ZigbeeApp20200519/Shared/Phone/Device/Logic/SoneLogicList.cs
@@ -41,7 +41,6 @@
        public long timeLong = 0;
        public async void Show()
        {
            #region  界面的布局代码
            UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑
            TopView view = new TopView();
ZigbeeApp20200519/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
old mode 100755 new mode 100644
@@ -72,7 +72,7 @@
            btnHumidityText.TextAlignment = TextAlignment.Center;
            frameHumidityPic.AddChidren(btnHumidityText);
            //湿度数据(第1个,listControl【0】)
            //湿度数据
            var btnHumidityStatus = new NormalViewControl(193, 92, true);
            btnHumidityStatus.Y = Application.GetRealHeight(181);
            btnHumidityStatus.Text = "20";
@@ -80,12 +80,11 @@
            btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityStatus.TextAlignment = TextAlignment.CenterRight;
            frameHumidityPic.AddChidren(btnHumidityStatus);
            this.listControl.Add(btnHumidityStatus);
            //湿度单位
            var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
            var btnHumidityUnit = new NormalViewControl(60, 40, true);
            btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
            btnHumidityUnit.X = Application.GetRealWidth(180);
            btnHumidityUnit.X = btnHumidityStatus.Right;
            btnHumidityUnit.Text = "%";
            btnHumidityUnit.TextSize = 14;
            btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
@@ -109,7 +108,7 @@
            btnTemperatureText.TextAlignment = TextAlignment.Center;
            frameTemperaturePic.AddChidren(btnTemperatureText);
            //温度数据(第2个,listControl【1】)
            //温度数据
            var btnTemperatureStatus = new NormalViewControl(193, 92, true);
            btnTemperatureStatus.Y = Application.GetRealHeight(181);
            btnTemperatureStatus.Text = "20";
@@ -117,12 +116,11 @@
            btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureStatus.TextAlignment = TextAlignment.CenterRight;
            frameTemperaturePic.AddChidren(btnTemperatureStatus);
            this.listControl.Add(btnTemperatureStatus);
            //温度单位
            var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
            var btnTemperatureUnit = new NormalViewControl(50, 40, true);
            btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
            btnTemperatureUnit.X = Application.GetRealWidth(180);
            btnTemperatureUnit.X = btnTemperatureStatus.Right;
            btnTemperatureUnit.Text = "℃";
            btnTemperatureUnit.TextSize = 14;
            btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
@@ -146,7 +144,7 @@
            btnPmText.TextAlignment = TextAlignment.Center;
            framePmPic.AddChidren(btnPmText);
            //PM2.5数据(第3个,listControl【2】)
            //PM2.5数据
            var btnPmStatus = new NormalViewControl(162, 92, true);
            btnPmStatus.Y = Application.GetRealHeight(181);
            btnPmStatus.Text = "155";
@@ -154,18 +152,24 @@
            btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmStatus.TextAlignment = TextAlignment.CenterRight;
            framePmPic.AddChidren(btnPmStatus);
            this.listControl.Add(btnPmStatus);
            //PM2.5单位  (第4个,listControl【3】) 
            var btnPmUnit = new NormalViewControl(120 + 26, 43, true);
            var btnPmUnit = new NormalViewControl(144, 43, true);
            btnPmUnit.Y = Application.GetRealHeight(181 + 46);
            btnPmUnit.X = Application.GetRealWidth(153);
            btnPmUnit.X = btnPmStatus.Right;
            btnPmUnit.Text = "μg/m³";
            btnPmUnit.TextSize = 14;
            btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmUnit.TextAlignment = TextAlignment.CenterLeft;
            framePmPic.AddChidren(btnPmUnit);
            this.listControl.Add(btnPmUnit);
            this.listControl.Add(btnHumidityStatus);//(第1个,listControl【0】)
            this.listControl.Add(btnTemperatureStatus);//(第2个,listControl【1】)
            this.listControl.Add(btnPmStatus);//(第3个,listControl【2】)
            this.listControl.Add(btnPmUnit);//(第4个,listControl【3】)
            this.listControl.Add(btnHumidityUnit);//(第5个,listControl【4】)
            this.listControl.Add(btnTemperatureUnit);//(第6个,listControl【5】)
        }
        #endregion
@@ -244,12 +248,46 @@
        private void UpdateStatus()
        {
            //设置状态文字
            this.listControl[0].Text = pMSensor.currentTemperature.ToString();
            this.listControl[1].Text = pMSensor.currentHumidity.ToString();
            this.listControl[0].Text = pMSensor.currentHumidity.ToString();
            this.listControl[1].Text = pMSensor.currentTemperature.ToString();
            this.listControl[2].Text = pMSensor.currentPmData.ToString();
            //设置状态文字
            var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType();
            this.SetStatuText(curText);
            if (pMSensor.currentHumidity <= 9 && pMSensor.currentHumidity >= 0)
            {
                this.listControl[0].Width = Application.GetRealWidth(168);
                this.listControl[4].X = this.listControl[0].Right;
            }
            else if (pMSensor.currentHumidity < 100 && pMSensor.currentHumidity >= 10)
            {
                this.listControl[0].Width = Application.GetRealWidth(184);
                this.listControl[4].X = this.listControl[0].Right;
            }
            else
            {
                this.listControl[0].Width = Application.GetRealWidth(188 + 30);
                this.listControl[4].X = this.listControl[0].Right;
            }
            if (pMSensor.currentTemperature <= 9 && pMSensor.currentTemperature >= 0)
            {
                this.listControl[1].Width = Application.GetRealWidth(168);
                this.listControl[5].X = this.listControl[1].Right;
            }
            else if (pMSensor.currentTemperature < 100 && pMSensor.currentTemperature >= 10)
            {
                this.listControl[1].Width = Application.GetRealWidth(190);
                this.listControl[5].X = this.listControl[1].Right;
            }
            else
            {
                this.listControl[1].Width = Application.GetRealWidth(188 + 30);
                this.listControl[5].X = this.listControl[1].Right;
            }
        }
        /// <summary>
@@ -265,60 +303,60 @@
                if (pMSensor.currentPmData < 10)
                {
                    this.listControl[2].Width = Application.GetRealWidth(188 - 70);
                    this.listControl[3].X = Application.GetRealWidth(180 - 70);
                    this.listControl[2].Width = Application.GetRealWidth(125);
                    this.listControl[3].X = this.listControl[2].Right;
                }
                else
                {
                    this.listControl[2].Width = Application.GetRealWidth(193 - 40);
                    this.listControl[3].X = Application.GetRealWidth(137);
                    this.listControl[2].Width = Application.GetRealWidth(145);
                    this.listControl[3].X = this.listControl[2].Right;
                }
            }
            else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
                this.listControl[2].Width = Application.GetRealWidth(193 - 40);
                this.listControl[3].X = Application.GetRealWidth(137);
                curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
                this.listControl[2].Width = Application.GetRealWidth(145);
                this.listControl[3].X = this.listControl[2].Right;
            }
            else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
                curQuality = Language.StringByID(R.MyInternationalizationString.LightPollution);
                if (pMSensor.currentPmData < 100)
                {
                    this.listControl[2].Width = Application.GetRealWidth(193 - 40);
                    this.listControl[3].X = Application.GetRealWidth(137);
                    this.listControl[2].Width = Application.GetRealWidth(145);
                    this.listControl[3].X = this.listControl[2].Right;
                }
                else
                {
                    this.listControl[2].Width = Application.GetRealWidth(162);
                    this.listControl[3].X = Application.GetRealWidth(153);
                    this.listControl[3].X = this.listControl[2].Right;
                }
            }
            else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
                curQuality = Language.StringByID(R.MyInternationalizationString.Moderatelyolluted);
                this.listControl[2].Width = Application.GetRealWidth(162);
                this.listControl[3].X = Application.GetRealWidth(153);
                this.listControl[3].X = this.listControl[2].Right;
            }
            else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
                this.listControl[2].Width = Application.GetRealWidth(162);
                this.listControl[3].X = Application.GetRealWidth(153);
                curQuality = Language.StringByID(R.MyInternationalizationString.HeavyPollution);
                this.listControl[2].Width = Application.GetRealWidth(176);
                this.listControl[3].X = this.listControl[2].Right;
            }
            else if (pMSensor.currentPmData > 250)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
                this.listControl[2].Width = Application.GetRealWidth(162);
                this.listControl[3].X = Application.GetRealWidth(153);
                curQuality = Language.StringByID(R.MyInternationalizationString.SeriousPollution);
                this.listControl[2].Width = Application.GetRealWidth(176);
                this.listControl[3].X = this.listControl[2].Right;
            }
            else
            {
                curQuality = "";
                this.listControl[2].Width = Application.GetRealWidth(162);
                this.listControl[3].X = Application.GetRealWidth(153);
                this.listControl[3].X = this.listControl[2].Right;
            }
            //设置状态文字
            return curQuality;
ZigbeeApp20200519/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
old mode 100755 new mode 100644
@@ -1295,7 +1295,7 @@
        /// <summary>
        /// 自动化常开时间变更为分钟,而不是小时 1->强制变更为分钟
        /// </summary>
        public int DoorLockNomallyOpenTimeMode = 0;
        public int DoorLockNomallyOpenTimeMode = 1;
    }
    #endregion
ZigbeeApp20200519/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json.Linq;
using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter
@@ -840,13 +841,20 @@
                        HdlThreadLogic.Current.RunThread(async () =>
                        {
                            var result = await Shared.Phone.Device.Logic.SkipView.Exist(3, (ZigBee.Device.DoorLock)device[0]);
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                //弹出徐梅的那个窗口
                                DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)device[0], DoorLock.DoorLockCommonInfo.DoorLockMessType.ServicePush,
                                    result != 0 ? true : false, ControlCommonResourse.UpdateDoorLockStatusAction);
                                //提示门锁已经失效
                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NormallyClosed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                            });
                            //更新门锁的深度控制页
                            ControlCommonResourse.UpdateDoorLockStatusAction?.Invoke(false);
                            //逻辑执行的失效要更新状态
                            if (DoorLock.DoorLockCommonInfo.LogicAction != null)
                            {
                                DoorLock.DoorLockCommonInfo.LogicAction(false);
                            }
                        });
                    }
                }
ZigbeeApp20200519/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
old mode 100755 new mode 100644
@@ -261,7 +261,7 @@
                        }
                        if (string.IsNullOrEmpty(bDev.ESName))
                        {
                            bindFreshAirName = device.DeviceEpointName;
                            bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                        }
                        else
                        {
@@ -277,7 +277,7 @@
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindTemperatureName = device.DeviceEpointName;
                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
@@ -289,7 +289,7 @@
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindHumidityName = device.DeviceEpointName;
                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
@@ -303,7 +303,7 @@
                    {
                        if (string.IsNullOrEmpty(bDev.ESName))
                        {
                            bindHumidityName = device.DeviceEpointName;
                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                        }
                        else
                        {
@@ -328,7 +328,7 @@
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindPmName = device.DeviceEpointName;
                                bindPmName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
ZigbeeApp20200519/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
old mode 100755 new mode 100644
@@ -1080,7 +1080,8 @@
                                var delDevice = DelBindDevice(bd);
                                var delResult = new DelDeviceBindResponseAllData();
                                delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice);
                                if (delResult == null || delResult.removeBindResultResponseData == null)
                                if (delResult == null)
                                {
                                    Application.RunOnMainThread(() =>
                                    {
@@ -1090,6 +1091,29 @@
                                        CommonPage.Loading.Hide();
                                    });
                                    return;
                                }
                                else
                                {
                                    if (delResult.removeBindResultResponseData == null)
                                    {
                                        if (delResult.delDeviceBindResponseData != null)
                                        {
                                            foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList)
                                            {
                                                if (d.Result != 1)
                                                {
                                                    Application.RunOnMainThread(() =>
                                                    {
                                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                                                        btnFinifh.Enable = true;
                                                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                                        CommonPage.Loading.Hide();
                                                    });
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                }
                                if (delResult != null && delResult.removeBindResultResponseData != null)
                                {
@@ -1116,7 +1140,8 @@
                                var delDevice = DelBindDevice(curBindDevice);
                                var delResult = new DelDeviceBindResponseAllData();
                                delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice);
                                if (delResult == null || delResult.removeBindResultResponseData == null)
                                if (delResult == null)
                                {
                                    Application.RunOnMainThread(() =>
                                    {
@@ -1126,6 +1151,29 @@
                                        CommonPage.Loading.Hide();
                                    });
                                    return;
                                }
                                else
                                {
                                    if (delResult.removeBindResultResponseData == null)
                                    {
                                        if (delResult.delDeviceBindResponseData != null)
                                        {
                                            foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList)
                                            {
                                                if (d.Result != 1)
                                                {
                                                    Application.RunOnMainThread(() =>
                                                    {
                                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
                                                        btnFinifh.Enable = true;
                                                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                                        CommonPage.Loading.Hide();
                                                    });
                                                    return;
                                                }
                                            }
                                        }
                                    }
                                }
                                if (delResult != null && delResult.removeBindResultResponseData != null)
                                {
@@ -1171,7 +1219,7 @@
                            addBindInfo.BindType = 0;
                            addBindInfo.BindMacAddr = de.DeviceAddr;
                            addBindInfo.BindEpoint = de.DeviceEpoint;
                            addBindeDev.BindName = de.DeviceEpointName;
                            addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de);
                            switch (curDeviceBindType)
                            {
                                case 2:
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -23,6 +23,12 @@
        /// </summary>
        public static DateTime DoorlockZoneTime = DateTime.Now;
        /// <summary>
        /// 所有门锁中的常开模式值[用于推送查询,提示门锁失效)
        /// keys:门锁mac+epoint value:是否常开模式
        /// ture:常开; false:关闭
        /// </summary>
        public static Dictionary<string, bool?> DoorLockNormallyMode = new Dictionary<string, bool?> { };
        /// <summary>
        /// 常开模式执行时间
        /// </summary>
        public static int NormallyOpenModeInvalidTime = 12;
@@ -155,6 +161,14 @@
        public static void NormallyOpenModeValue(ZigBee.Device.DoorLock doorLock, bool value)
        {
            doorLock.IsDoorLockNormallyMode = value;
            if (DoorLockCommonInfo.DoorLockNormallyMode.ContainsKey(doorLock.DeviceAddr + doorLock.DeviceEpoint))
            {
                DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] = value;
            }
            else
            {
                DoorLockCommonInfo.DoorLockNormallyMode.Add(doorLock.DeviceAddr + doorLock.DeviceEpoint, value);
            }
        }
        /// <summary>
@@ -164,7 +178,8 @@
        /// <param name="doorLockMessType">导致门锁失效的操作类型</param>
        /// <param name="haveLogic">网关中是否存在逻辑常开模式</param>
        /// <param name="action">回调处理更新内容</param>
        public static async void NomallyOpenModeInvalidDialog(ZigBee.Device.DoorLock doorLock, DoorLockMessType doorLockMessType, bool haveLogic, Action<bool> action = null)
        /// <param name="type">1:确认常开模式已经开启;0:常开模式失效提示</param>
        public static async void NomallyOpenModeInvalidDialog(ZigBee.Device.DoorLock doorLock, DoorLockMessType doorLockMessType, bool haveLogic, Action<bool> action = null, int type = 0)
        {
            //常开模式只能主人操作
            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/ShowDoorLockMsgControl.cs
old mode 100755 new mode 100644
ZigbeeApp20200519/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -705,6 +705,20 @@
                        CommonPage.Loading.Start("");
                    });
                    //放在设备启动的地方
                    //HdlGatewayReceiveLogic
                    //1、启动获取门锁设备对象,
                    //2、再获取当前门锁对象的常开模式
                    var res = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
                    if (DoorLockCommonInfo.DoorLockNormallyMode.ContainsKey(doorLock.DeviceAddr + doorLock.DeviceEpoint))
                    {
                        DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] = res;
                    }
                    else
                    {
                        DoorLockCommonInfo.DoorLockNormallyMode.Add(doorLock.DeviceAddr + doorLock.DeviceEpoint, res);
                    }
                    //是否支持常开
                    canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
                    if (canOpenNormallyMode)
@@ -734,18 +748,18 @@
                            }
                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
                            //Application.RunOnMainThread(async () =>
                            //{
                            //var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3, doorLock);
                            //if (resTemp == 1)
                            //{
                            //    haveLogicNormallyOpenMode = true;
                            //}
                            //else if (resTemp == 0)
                            //{
                            //    haveLogicNormallyOpenMode = false;
                            //}
                            //});
                            Application.RunOnMainThread(async () =>
                            {
                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3, doorLock);
                                if (resTemp == 0)
                                {
                                    haveLogicNormallyOpenMode = false;
                                }
                                else
                                {
                                    haveLogicNormallyOpenMode = true;
                                }
                            });
                        }
                    }
                    else
@@ -811,6 +825,43 @@
                        CommonPage.Loading.Hide();
                    });
                }
                //定时检测时间变化
                var curDateNow = DateTime.Now;
                var curDateDelay = DateTime.MinValue;
                new System.Threading.Thread(async () =>
                {
                    while (true)
                    {
                        try
                        {
                            curDateNow = DateTime.Now;
                            if (curDateNow > curDateDelay)
                            {
                                //晚上9点提示用户门锁是否还开着
                                if (DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] == true)
                                {
                                    if (curDateNow.Hour == 21)
                                    {
                                        curDateDelay = curDateNow;
                                        curDateDelay = curDateDelay.AddHours(+1);
                                        var result = await Shared.Phone.Device.Logic.SkipView.Exist(3, (ZigBee.Device.DoorLock)doorLock);
                                        HdlThreadLogic.Current.RunMain(() =>
                                        {
                                            //弹出徐梅的那个窗口
                                            DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)doorLock, DoorLock.DoorLockCommonInfo.DoorLockMessType.AppOperate,
                                             result != 0 ? true : false, ControlCommonResourse.UpdateDoorLockStatusAction);
                                        });
                                    }
                                }
                            }
                        }
                        catch { }
                        System.Threading.Thread.Sleep(1000 * 60);
                    }
                })
                { IsBackground = true }.Start();
            });
        }
@@ -1122,7 +1173,7 @@
                addLogicPage.Show();
                addLogicPage.action += (w) =>
                {
                    doorLock.IsDoorLockNormallyMode = w;
                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, w);
                    UpdateNomallyOpenStatus();
                    //返回按键清空当前逻辑定义的LogicAction
                    UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
ZigbeeApp20200519/Shared/Phone/ZigBee/Common/Application.cs
old mode 100755 new mode 100644
ZigbeeApp20200519/Shared/Phone/ZigBee/Device/DoorLock.cs
old mode 100755 new mode 100644
ZigbeeApp20200519/Shared/R.cs
old mode 100755 new mode 100644
@@ -602,7 +602,10 @@
        /// 严重污染
        /// </summary>
        public const int SeriousPollution = 322;
        /// <summary>
        /// 门锁常开模式已关
        /// </summary>
        public const int NormallyClosed = 323;
        public readonly static int cancel = 5097;
        public readonly static int confrim = 5098;