From 9c8baf7e7e1169ebdf7d5f7ed33ab29dd5fcbf18 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期一, 14 十二月 2020 17:45:17 +0800 Subject: [PATCH] 2020-12-14 1.解锁设置问题修复,增加面容ID验证。2.错误码对接增加。 --- HDL_ON/Entity/FunctionList.cs | 517 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 465 insertions(+), 52 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 4b0b5bb..0610a77 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -1,11 +1,34 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; +using System.Threading; +using HDL_ON.DAL; +using HDL_ON.DAL.Server; namespace HDL_ON.Entity { - public class FunctionList + public class FunctionList { + static FunctionList _FunctionList; + public static FunctionList List + { + get + { + if(_FunctionList == null) + { + _FunctionList = new FunctionList(); + #region 鎭㈠鏁版嵁 + var filePathList = Common.FileUtlis.Files.ReadFiles(); + foreach (var filePath in filePathList) + { + _FunctionList.IniFunctionList(filePath); + } + #endregion + } + return _FunctionList; + } + } + /// <summary> /// 绌鸿皟鍒楄〃 /// </summary> @@ -22,6 +45,7 @@ /// 鍦扮儹鍒楄〃 /// </summary> public List<FloorHeating> floorHeatings = new List<FloorHeating>(); + #region 瀹剁數鍒楄〃 electricals /// <summary> /// 瀹剁數鍒楄〃 /// </summary> @@ -29,6 +53,18 @@ { get { + if(fans == null) + { + fans = new List<Fan>(); + } + if(switchSockets == null) + { + switchSockets = new List<SwitchSocket>(); + } + if(tVs == null) + { + tVs = new List<TV>(); + } var list = new List<Function>(); list.AddRange(fans); list.AddRange(switchSockets); @@ -48,6 +84,7 @@ /// 瀹剁數鍒楄〃 /// </summary> public List<SwitchSocket> switchSockets = new List<SwitchSocket>(); + #endregion /// <summary> /// 鐜浼犳劅鍣ㄥ垪琛� /// </summary> @@ -57,55 +94,144 @@ /// 鍦烘櫙鍒楄〃 /// </summary> public List<Scene> scenes = new List<Scene>(); + /// <summary> + /// 鍔熻兘鍒楄〃 + /// </summary> + List<Function> deviceFunctionList = new List<Function>(); - - [Newtonsoft.Json.JsonIgnore] - public List<Function> functions = new List<Function>(); /// <summary> - /// 鑾峰彇鎵�鏈夊姛鑳藉垪琛� + /// 鍔犺浇鍔熻兘鍒楄〃 + /// todo 闇�瑕佷紭鍖栵紝鍚庢湡涓嶈兘淇濊瘉鑳戒娇鐢╯id瑙f瀽鍑烘槸浠�涔堢被鍨嬬殑璁惧 /// </summary> - public void GetAllFunction() + /// <param name="filePath"></param> + public void IniFunctionList(string filePath) { - functions.Clear(); - functions.AddRange(GetAllDeviceFunctionList()); - functions.AddRange(scenes); + if (filePath.StartsWith("FunctionData_")) + { + var functionDataBytes = Common.FileUtlis.Files.ReadFile(filePath); + var functionDataString = System.Text.Encoding.UTF8.GetString(functionDataBytes); + var tempFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); + if (tempFunction == null) + { + Common.FileUtlis.Files.DeleteFile(filePath); + return; + } + if (tempFunction.DeleteSign) + { + //todo 鍒犻櫎浜戠鏁版嵁 20201203--App涓嶈兘鍒犻櫎鍔熻兘鏁版嵁 + } + else + { + switch (tempFunction.spk) + { + case SPK.LightSwitch: + case SPK.LightDimming: + case SPK.LightRGB: + case SPK.LightRGBW: + case SPK.LightCCT: + _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString)); + break; + case SPK.CurtainRoller: + case SPK.CurtainShades: + case SPK.CurtainSwitch: + case SPK.CurtainTrietex: + _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString)); + break; + case SPK.AcStandard: + _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString)); + break; + case SPK.FloorHeatStandard: + //鎭㈠鍦扮儹鏁版嵁 + _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString)); + break; + case SPK.SensorPm25: + case SPK.SensorCO2: + case SPK.SensorTVOC: + case SPK.SensorTemperature: + case SPK.SensorHumidity: + //鎭㈠鐜鏁版嵁 + _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString)); + break; + case SPK.ElectricSocket: + //鎭㈠鎻掑骇鏁版嵁 + _FunctionList.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString)); + break; + case SPK.ElectricTV: + //鎭㈠鐢佃鏁版嵁 + _FunctionList.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString)); + break; + case SPK.ElectricFan: + //鎭㈠椋庢墖鏁版嵁 + _FunctionList.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString)); + deviceFunctionList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString)); + break; + } + } + } + if (filePath.StartsWith("SceneData_")) + { + var sceneDataBytes = Common.FileUtlis.Files.ReadFile(filePath); + var sceneDataString = System.Text.Encoding.UTF8.GetString(sceneDataBytes); + var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(sceneDataString); + List.scenes.Add(tempScene); + } } /// <summary> /// 鑾峰彇璁惧鍔熻兘鍒楄〃 /// </summary> - public List<Function> GetAllDeviceFunctionList() + public List<Function> GetDeviceFunctionList() { - var deviceFunctionList = new List<Function>(); - deviceFunctionList.AddRange(aCs); - deviceFunctionList.AddRange(lights); - deviceFunctionList.AddRange(curtains); - deviceFunctionList.AddRange(floorHeatings); - deviceFunctionList.AddRange(electricals); - deviceFunctionList.AddRange(sensorsEnvironmentalScience); - deviceFunctionList.AddRange(HDL_ON.UI.Music.A31MusicModel.A31MusicModelList); - - return deviceFunctionList.OrderByDescending(o => o.usageCount).ToList(); + if (deviceFunctionList == null || deviceFunctionList.Count == 0) + { + deviceFunctionList = new List<Function>(); + deviceFunctionList.AddRange(aCs); + deviceFunctionList.AddRange(lights); + deviceFunctionList.AddRange(curtains); + deviceFunctionList.AddRange(floorHeatings); + deviceFunctionList.AddRange(electricals); + deviceFunctionList.AddRange(sensorsEnvironmentalScience); + deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList); + } + try + { + deviceFunctionList.OrderByDescending(o => o.usageCount).ToList(); + } + catch (Exception ex) + { + MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); + } + return deviceFunctionList; } /// <summary> /// 娓呯┖璁惧鍔熻兘鍒楄〃 /// </summary> - public void ClearAllDeviceFunctionList() + public void Clear() { - aCs = new List<AC>(); - lights = new List<Light>(); - curtains = new List<Curtain>(); - floorHeatings = new List<FloorHeating>(); - tVs = new List<TV>(); - switchSockets = new List<SwitchSocket>(); - fans = new List<Fan>(); - sensorsEnvironmentalScience = new List<Sensor>(); - functions = new List<Function>(); + _FunctionList.aCs = new List<AC>(); + _FunctionList.lights = new List<Light>(); + _FunctionList.curtains = new List<Curtain>(); + _FunctionList.floorHeatings = new List<FloorHeating>(); + _FunctionList.tVs = new List<TV>(); + _FunctionList.switchSockets = new List<SwitchSocket>(); + _FunctionList.fans = new List<Fan>(); + _FunctionList.sensorsEnvironmentalScience = new List<Sensor>(); + _FunctionList.scenes = new List<Scene>(); + _FunctionList.deviceFunctionList = null; + _FunctionList = null; } /// <summary> - /// 娣诲姞鍔熻兘 + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// tcp鏂瑰紡 /// </summary> /// <param name="sidObj"></param> public void AddDeviceFunction(Function sidObj0) @@ -114,33 +240,42 @@ { case FunctionType.AC: var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.aCs.Add(sidObj); + List.aCs.Add(sidObj); + sidObj.SaveFunctionData(false); break; case FunctionType.FloorHeating: var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.floorHeatings.Add(sidObj1); + List.floorHeatings.Add(sidObj1); + sidObj1.SaveFunctionData(false); break; case FunctionType.Dimmer: case FunctionType.RGB: case FunctionType.Relay: var sidObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.lights.Add(sidObj2); + List.lights.Add(sidObj2); + sidObj2.SaveFunctionData(false); break; case FunctionType.Curtain: + case FunctionType.RollingShutter: + case FunctionType.MotorCurtain: var sidObj3 = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.curtains.Add(sidObj3 ); + List.curtains.Add(sidObj3 ); + sidObj3.SaveFunctionData(false); break; case FunctionType.TV: var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.tVs.Add(sidObj4); + List.tVs.Add(sidObj4); + sidObj4.SaveFunctionData(false); break; case FunctionType.Socket: var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.switchSockets.Add(sidObj5); + List.switchSockets.Add(sidObj5); + sidObj5.SaveFunctionData(false); break; case FunctionType.Fan: var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.fans.Add(sidObj6); + List.fans.Add(sidObj6); + sidObj6.SaveFunctionData(false); break; case FunctionType.CO2: case FunctionType.TVOC: @@ -148,45 +283,51 @@ case FunctionType.Temp: case FunctionType.Humidity: var sidObj7 = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience.Add(sidObj7); + List.sensorsEnvironmentalScience.Add(sidObj7); + sidObj7.SaveFunctionData(false); break; } } - + /// <summary> + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// http udp + /// </summary> + /// <param name="obj"></param> public void AddFunction(object obj) { var f = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(obj.ToString()); - + if (f == null) + return; switch (f.functionCategory) { case FunctionCategory.Thermostat: switch (f.functionType) { case FunctionType.AC: - aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); + _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); break; case FunctionType.FloorHeating: - floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); + _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); break; } break; case FunctionCategory.Light: - lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); + _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); break; case FunctionCategory.Curtain: - curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString())); + _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString())); break; case FunctionCategory.Electrical: switch(f.functionType) { case FunctionType.TV: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString())); + _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString())); break; - case FunctionType.WindPower: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); + case FunctionType.Socket: + _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); break; case FunctionType.Fan: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); + _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); break; } break; @@ -197,14 +338,286 @@ case FunctionType.CO2: case FunctionType.PM25: case FunctionType.Humidity: - //case FunctionType.Noise: - sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); + case FunctionType.Temp: + _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); break; } break; } } + /// <summary> + /// 鍔熻兘缁戝畾鎴块棿 + /// </summary> + public string FunctionsBindRooms(List<string> roomIds,List<string> deviceIds) + { + var pm = new HttpServerRequest(); + var pack = pm.BindDeviceToRoom(deviceIds, roomIds); + if(pack.Code == StateCode.SUCCESS) + { + + } + else + { + Utlis.ShowTip(Shared.Language.StringByID(StringId.EditFunctionInfoFail) + "\r\nCode:" + pack.Code); + } + return pack.Code; + } + + /// <summary> + /// 涓嬫潵浜戠璁惧鏁版嵁 + /// </summary> + public void DownloadFunctionList() + { + new Thread(() => + { + var pm = new HttpServerRequest(); + var pack = pm.GetDeviceList(); + if (pack.Code == StateCode.SUCCESS) + { + var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(pack.Data.ToString()); + if (deviceList != null) + { + for (int i =0;i < List.GetDeviceFunctionList().Count;) + { + var localFunction = List.GetDeviceFunctionList()[i]; + var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId); + if (newFunction == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍 + { + List.DeleteFunction(localFunction); + } + else + { + i++; + if (localFunction.modifyTime != newFunction.modifyTime) + { + MainPage.Log($"local:{localFunction.modifyTime}\r\n server:{newFunction.modifyTime}"); + localFunction.name = newFunction.name; + localFunction.collect = newFunction.collect; + localFunction.modifyTime = newFunction.modifyTime; + localFunction.roomIds = newFunction.roomIds; + localFunction.bus_Data = newFunction.bus_Data; + localFunction.SaveFunctionData(false); + } + deviceList.list.Remove(newFunction);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘 + } + } + //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳� + foreach (var newFunction in deviceList.list) + { + newFunction.SaveFunctionData(false); + List.IniFunctionList(newFunction.savePath); + } + } + //MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁:\r\n{ pack.Data.ToString()}"); + } + else + { + MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:\r\nCode:{pack.Code}; Msg:{pack.message}"); + } + }) + { IsBackground = true }.Start(); + } + + /// <summary> + /// 涓嬭浇浜戠鍦烘櫙鏁版嵁 + /// </summary> + public void DownloadSceneList() + { + new Thread(() => + { + var pm = new HttpServerRequest(); + var pack = pm.GetSceneList(); + if(pack.Code == StateCode.SUCCESS) + { + //MainPage.Log($"璇诲彇浜戠鍦烘櫙鏁版嵁:\r\n{pack.Data.ToString()}"); + var sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(pack.Data.ToString()); + if (sceneList != null) + { + ////灏嗕笅杞藉埌鍒版暟鎹叏閮ㄤ繚瀛� + //new Thread(() => { + // foreach (var temp in sceneList) + // { + // temp.SaveSceneData(); + // } + //}) + //{ IsBackground = true }.Start(); + for(int i=0;i<List.scenes.Count;) + { + var localScene = List.scenes[i]; + var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId); + if (newScene == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍 + { + List.DeleteScene(localScene,false); + } + else + { + i++; + if (localScene.modifyTime != newScene.modifyTime) + { + localScene.name = newScene.name; + localScene.collect = newScene.collect; + localScene.modifyTime = newScene.modifyTime; + localScene.roomIds = newScene.roomIds; + localScene.SaveSceneData(false); + } + sceneList.Remove(newScene);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘 + } + } + //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳� + foreach (var newScene in sceneList) + { + newScene.SaveSceneData(false); + List.scenes.Add(newScene); + } + } + } + else + { + MainPage.Log($"璇诲彇浜戠鍦烘櫙鏁版嵁澶辫触:\r\nCode:{pack.Code}; Msg:{pack.message}"); + } + }) + { IsBackground = true }.Start(); + } + + + /// <summary> + /// 鍒犻櫎鍦烘櫙 + /// </summary> + public void DeleteScene(Scene scene,bool upSevser) + { + if (upSevser) + { + var pm = new HttpServerRequest(); + var packCode = pm.DeleteScene(scene.userSceneId); + if (packCode == StateCode.SUCCESS) + { + Common.FileUtlis.Files.DeleteFile(scene.savePath); + List.scenes.Remove(scene); + } + else + { + Utlis.ShowTip(Shared.Language.StringByID(StringId.DeleteSceneFail) + "Code:" + packCode); + } + } + else + { + Common.FileUtlis.Files.DeleteFile(scene.savePath); + List.scenes.Remove(scene); + } + } + /// <summary> + /// 鍒犻櫎鏈湴鍔熻兘鏂囦欢 + /// </summary> + public void DeleteFunction(Function delTemp) + { + switch (delTemp.spk) + { + case SPK.LightSwitch: + case SPK.LightDimming: + case SPK.LightRGB: + case SPK.LightRGBW: + case SPK.LightCCT: + _FunctionList.lights.Remove(_FunctionList.lights.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.CurtainRoller: + case SPK.CurtainShades: + case SPK.CurtainSwitch: + case SPK.CurtainTrietex: + _FunctionList.curtains.Remove(_FunctionList.curtains.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.AcStandard: + _FunctionList.aCs.Remove(_FunctionList.aCs.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.FloorHeatStandard: + _FunctionList.floorHeatings.Remove(_FunctionList.floorHeatings.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.SensorPm25: + case SPK.SensorCO2: + case SPK.SensorTVOC: + case SPK.SensorTemperature: + case SPK.SensorHumidity: + _FunctionList.sensorsEnvironmentalScience.Remove(_FunctionList.sensorsEnvironmentalScience.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricSocket: + _FunctionList.switchSockets.Remove(_FunctionList.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricTV: + _FunctionList.tVs.Remove(_FunctionList.tVs.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricFan: + _FunctionList.fans.Remove(_FunctionList.fans.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + } + var removeTemp = deviceFunctionList.Find((obj) => obj.deviceId == delTemp.deviceId); + if(removeTemp!= null) + { + deviceFunctionList.Remove(removeTemp); + } + Common.FileUtlis.Files.DeleteFile(delTemp.savePath); + } + + bool lockReadFunctionStatus = false; + /// <summary> + /// 璇诲彇鍏ㄩ儴鍔熻兘鐨勭姸鎬� + /// </summary> + public void ReadAllFunctionStatus() + { + if (lockReadFunctionStatus) + { + MainPage.Log($"澶氭杩涘叆--杩斿洖"); + return; + } + new Thread(() => + { + if (lockReadFunctionStatus) + { + MainPage.Log($"澶氭杩涘叆--杩斿洖"); + return; + } + MainPage.Log($"杩涘叆--璇诲彇"); + lockReadFunctionStatus = true; + try + { + if (DriverLayer.Control.Ins.IsRemote) + { + var functionIds = new List<string>(); + foreach (var function in GetDeviceFunctionList()) + { + functionIds.Add(function.deviceId); + } + DriverLayer.Control.Ins.SendApiReadCommand(functionIds); + } + else + { + foreach (var function in GetDeviceFunctionList()) + { + switch (function.functionCategory) + { + case FunctionCategory.Light: + case FunctionCategory.Electrical: + case FunctionCategory.SwitchDevice: + case FunctionCategory.Curtain: + case FunctionCategory.Thermostat: + DriverLayer.Control.Ins.SendReadCommand(function); + break; + } + } + } + } + catch (Exception ex) + { + MainPage.Log($"Refresh Residence Function Status Error : {ex.Message}"); + } + finally + { + lockReadFunctionStatus = false; + MainPage.Log($"缁撴潫--璇诲彇"); + } + }) + { IsBackground = true }.Start(); + } + } - + } -- Gitblit v1.8.0