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.csold 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.csold 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.csold 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.csold 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.csold 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.csold mode 100755 new mode 100644
ZigbeeApp20200519/Shared/Phone/ZigBee/Device/DoorLock.csold mode 100755 new mode 100644
ZigbeeApp20200519/Shared/R.csold 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;