From df8d4ab0ef17a7fab5dea9c47bbd9f4d4a2a40b0 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期一, 15 三月 2021 14:55:49 +0800 Subject: [PATCH] 合并前上传一个版本 --- HDL_ON/Entity/FunctionList.cs | 678 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 360 insertions(+), 318 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 22da38f..845ab49 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -2,8 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using HDL_ON.Common; using HDL_ON.DAL; using HDL_ON.DAL.Server; +using Shared; namespace HDL_ON.Entity { @@ -18,7 +20,7 @@ { _FunctionList = new FunctionList(); #region 鎭㈠鏁版嵁 - var filePathList = FileUtils.ReadFiles(); + var filePathList = FileUtlis.Files.ReadFiles(); foreach (var filePath in filePathList) { _FunctionList.IniFunctionList(filePath); @@ -28,6 +30,14 @@ return _FunctionList; } } + /// <summary> + /// 鍔熻兘鍒楄〃 + /// </summary> + public List<Function> Functions = new List<Function>(); + + + + /// <summary> /// 绌鸿皟鍒楄〃 @@ -65,10 +75,30 @@ { tVs = new List<TV>(); } + if (airCleaners == null) + { + airCleaners = new List<AirCleaner>(); + } + if (weepRobots == null) + { + weepRobots = new List<WeepRobot>(); + } + if(waterValveList == null) + { + waterValveList = new List<Function>(); + } + if(clothesHangerList == null) + { + clothesHangerList = new List<Function>(); + } var list = new List<Function>(); list.AddRange(fans); list.AddRange(switchSockets); - list.AddRange(tVs); + list.AddRange(tVs); + list.AddRange(airCleaners); + list.AddRange(weepRobots); + list.AddRange(waterValveList); + list.AddRange(clothesHangerList); return list; } } @@ -83,21 +113,43 @@ /// <summary> /// 瀹剁數鍒楄〃 /// </summary> - public List<SwitchSocket> switchSockets = new List<SwitchSocket>(); + public List<SwitchSocket> switchSockets = new List<SwitchSocket>(); + /// <summary> + /// 绌烘皵鍑�鍖栧櫒鍒楄〃 + /// </summary> + public List<AirCleaner> airCleaners = new List<AirCleaner>(); + /// <summary> + /// 鎵湴鏈哄櫒浜哄垪琛� + /// </summary> + public List<WeepRobot> weepRobots = new List<WeepRobot>(); + /// <summary> + /// 姘撮榾鍒楄〃 + /// </summary> + public List<Function> waterValveList = new List<Function>(); + /// <summary> + /// 鍑夐湼鍒楄〃 + /// </summary> + public List<Function> clothesHangerList = new List<Function>(); + /// <summary> + /// 绾㈠瀹濆垪琛� + /// </summary> + public List<Function> irModule = new List<Function>(); + #endregion /// <summary> /// 鐜浼犳劅鍣ㄥ垪琛� /// </summary> public List<Sensor> sensorsEnvironmentalScience = new List<Sensor>(); - /// <summary> - /// 鍦烘櫙鍒楄〃 + /// 瀹夐槻璁惧鍒楄〃 /// </summary> + public List<Sensor> sensorsArm = new List<Sensor>(); + public List<Scene> scenes = new List<Scene>(); /// <summary> /// 鍔熻兘鍒楄〃 /// </summary> - List<Function> deviceFunctionList; + List<Function> deviceFunctionList = new List<Function>(); /// <summary> @@ -107,16 +159,17 @@ /// <param name="filePath"></param> public void IniFunctionList(string filePath) { + // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃 if (filePath.StartsWith("FunctionData_")) { - var functionDataBytes = FileUtils.ReadFile(filePath); + 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.DeleteSign) + if (tempFunction == null) { - //todo 鍒犻櫎浜戠鏁版嵁 20201203--App涓嶈兘鍒犻櫎鍔熻兘鏁版嵁 + FileUtlis.Files.DeleteFile(filePath); + return; } - else { switch (tempFunction.spk) { @@ -125,70 +178,108 @@ case SPK.LightRGB: case SPK.LightRGBW: case SPK.LightCCT: - _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString)); + var light = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(functionDataString); + List.lights.Add(light); + deviceFunctionList.Add(light); break; case SPK.CurtainRoller: case SPK.CurtainShades: case SPK.CurtainSwitch: case SPK.CurtainTrietex: - _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString)); + var curtain = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString); + List.curtains.Add(curtain); + deviceFunctionList.Add(curtain); break; case SPK.AcStandard: - _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString)); + var ac = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString); + List.aCs.Add(ac); + deviceFunctionList.Add(ac); break; case SPK.FloorHeatStandard: - //鎭㈠鍦扮儹鏁版嵁 - _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString)); + var fh = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(functionDataString); + List.floorHeatings.Add(fh); + deviceFunctionList.Add(fh); 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)); + var sensor = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); + List.sensorsEnvironmentalScience.Add(sensor); + deviceFunctionList.Add(sensor); break; case SPK.ElectricSocket: - //鎭㈠鎻掑骇鏁版嵁 - _FunctionList.switchSockets.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString)); + var ele = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString); + List.switchSockets.Add(ele); + deviceFunctionList.Add(ele); break; case SPK.ElectricTV: - //鎭㈠鐢佃鏁版嵁 - _FunctionList.tVs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString)); + var tv = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString); + List.tVs.Add(tv); + deviceFunctionList.Add(tv); break; case SPK.ElectricFan: - //鎭㈠椋庢墖鏁版嵁 - _FunctionList.fans.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString)); + var fan = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString); + List.fans.Add(fan); + deviceFunctionList.Add(fan); + break; + case SPK.ElectricTuyaAirCleaner: + var airCleaner = Newtonsoft.Json.JsonConvert.DeserializeObject<AirCleaner>(functionDataString); + List.airCleaners.Add(airCleaner); + deviceFunctionList.Add(airCleaner); + break; + case SPK.ElectricTuyaFan: + var tuyaFan = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(functionDataString); + List.fans.Add(tuyaFan); + deviceFunctionList.Add(tuyaFan); + break; + case SPK.ElectricTuyaWeepRobot: + var tuyaWeepRobot = Newtonsoft.Json.JsonConvert.DeserializeObject<WeepRobot>(functionDataString); + List.weepRobots.Add(tuyaWeepRobot); + deviceFunctionList.Add(tuyaWeepRobot); + break; + case SPK.ElectricTuyaWaterValve: + var tuyaWaterValve = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); + List.waterValveList.Add(tuyaWaterValve); + deviceFunctionList.Add(tuyaWaterValve); + break; + case SPK.SensorSmoke: + case SPK.SensorWater: + case SPK.SensorDoorWindow: + case SPK.SensorPir: + var ser = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); + List.sensorsArm.Add(ser); + deviceFunctionList.Add(ser); + break; + case SPK.ClothesHanger: + var ch = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); + List.clothesHangerList.Add(ch); + deviceFunctionList.Add(ch); + break; + case SPK.IrModule: + var irm = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString); + List.irModule.Add(irm); + deviceFunctionList.Add(irm); break; } } } if (filePath.StartsWith("SceneData_")) { - var sceneDataBytes = FileUtils.ReadFile(filePath); + var sceneDataBytes = 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> GetAllFunction() - { - var fs = new List<Function>(); - fs.AddRange(GetAllDeviceFunctionList()); - return fs; - } - /// <summary> /// 鑾峰彇璁惧鍔熻兘鍒楄〃 /// </summary> - public List<Function> GetAllDeviceFunctionList() + public List<Function> GetDeviceFunctionList(SPK.BrandType brandType = SPK.BrandType.All) { - //if (deviceFunctionList == null) + if (deviceFunctionList == null || deviceFunctionList.Count == 0) { deviceFunctionList = new List<Function>(); deviceFunctionList.AddRange(aCs); @@ -197,289 +288,98 @@ deviceFunctionList.AddRange(floorHeatings); deviceFunctionList.AddRange(electricals); deviceFunctionList.AddRange(sensorsEnvironmentalScience); + deviceFunctionList.AddRange(sensorsArm); deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList); + try + { + deviceFunctionList = deviceFunctionList.OrderByDescending(o => o.controlCounter).ToList(); + } + catch (Exception ex) + { + MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); + } } - try + + List<Function> resultFunctions = new List<Function>(); + if (brandType == SPK.BrandType.All) { - deviceFunctionList.OrderByDescending(o => o.usageCount).ToList(); } - catch (Exception ex) - { - MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); + else + { + switch (brandType) + { + case SPK.BrandType.Hdl: + foreach (var function in deviceFunctionList) + { + if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(function.spk)) + { + resultFunctions.Add(function); + } + } + break; + + case SPK.BrandType.Tuya: + foreach (var function in deviceFunctionList) + { + if (SPK.Get3tySpk(SPK.BrandType.Tuya).Contains(function.spk)) + { + resultFunctions.Add(function); + } + } + break; + } + return resultFunctions; } + 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>(); - scenes = new List<Scene>(); - deviceFunctionList = null; + List.aCs = new List<AC>(); + List.lights = new List<Light>(); + List.curtains = new List<Curtain>(); + List.floorHeatings = new List<FloorHeating>(); + List.sensorsEnvironmentalScience = new List<Sensor>(); + #region 瀹剁數 + List.fans = new List<Fan>(); + List.switchSockets = new List<SwitchSocket>(); + List.tVs = new List<TV>(); + List.airCleaners = new List<AirCleaner>(); + List.weepRobots = new List<WeepRobot>(); + List.waterValveList = new List<Function>(); + List.clothesHangerList = new List<Function>(); + #endregion + + List.scenes = new List<Scene>(); + List.deviceFunctionList = new List<Function>(); + _FunctionList = null; } /// <summary> - /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� - /// tcp鏂瑰紡 + /// 鍔熻兘缁戝畾鎴块棿 /// </summary> - /// <param name="sidObj"></param> - public void AddDeviceFunction(Function sidObj0) + public string FunctionsBindRooms(List<string> roomIds,List<string> deviceIds) { - switch (sidObj0.functionType) + var pm = new HttpServerRequest(); + var pack = pm.BindDeviceToRoom(deviceIds, roomIds); + if(pack.Code == StateCode.SUCCESS) { - case FunctionType.AC: - var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.aCs.Add(sidObj); - sidObj.SaveFunctionData(false); - break; - case FunctionType.FloorHeating: - var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.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.functionList.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.functionList.curtains.Add(sidObj3 ); - sidObj3.SaveFunctionData(false); - break; - case FunctionType.TV: - var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.tVs.Add(sidObj4); - sidObj4.SaveFunctionData(false); - break; - case FunctionType.Socket: - var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.switchSockets.Add(sidObj5); - sidObj5.SaveFunctionData(false); - break; - case FunctionType.Fan: - var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.fans.Add(sidObj6); - sidObj6.SaveFunctionData(false); - break; - case FunctionType.CO2: - case FunctionType.TVOC: - case FunctionType.PM25: - case FunctionType.Temp: - case FunctionType.Humidity: - var sidObj7 = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.functionList.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) + else { - case FunctionCategory.Thermostat: - switch (f.functionType) - { - case FunctionType.AC: - _FunctionList.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); - break; - case FunctionType.FloorHeating: - _FunctionList.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); - break; - } - break; - case FunctionCategory.Light: - _FunctionList.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); - break; - case FunctionCategory.Curtain: - _FunctionList.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString())); - break; - case FunctionCategory.Electrical: - switch(f.functionType) - { - case FunctionType.TV: - _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString())); - break; - case FunctionType.Socket: - _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); - break; - case FunctionType.Fan: - _FunctionList.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); - break; - } - break; - case FunctionCategory.Sensor: - switch(f.functionType) - { - case FunctionType.TVOC: - case FunctionType.CO2: - case FunctionType.PM25: - case FunctionType.Humidity: - case FunctionType.Temp: - _FunctionList.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); - break; - } - break; + IMessageCommon.Current.ShowErrorInfoAlter(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) - { - ////灏嗕笅杞藉埌鍒版暟鎹叏閮ㄤ繚瀛� - //new Thread(() => { - // foreach (var temp in deviceList.list) - // { - // temp.SaveFunctionData(); - // } - //}) - //{ IsBackground = true }.Start(); - foreach (var localFunction in List.GetAllDeviceFunctionList()) - { - var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId); - if (newFunction == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍 - { - List.DeleteFunction(localFunction); - } - else - { - if (localFunction.modifyTime != 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(); - foreach (var localScene in List.scenes) - { - var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId); - if (newScene == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍 - { - List.DeleteScene(localScene,false); - } - else - { - 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 DelAllFunctionData() - { - var filePathList = FileUtils.ReadFiles(); - foreach (var filePath in filePathList) - { - if (filePath.StartsWith("FunctionData_") && filePath.Length == 13 + 28) - { - FileUtils.DeleteFile(filePath); - } - } - _FunctionList = new FunctionList(); - } /// <summary> /// 鍒犻櫎鍦烘櫙 + /// todo /// </summary> public void DeleteScene(Scene scene,bool upSevser) { @@ -489,22 +389,22 @@ var packCode = pm.DeleteScene(scene.userSceneId); if (packCode == StateCode.SUCCESS) { - FileUtils.DeleteFile(scene.savePath); + FileUtlis.Files.DeleteFile(scene.savePath); List.scenes.Remove(scene); } else { - Utlis.ShowTip(Shared.Language.StringByID(StringId.DeleteSceneFail) + "Code:" + packCode); + IMessageCommon.Current.ShowErrorInfoAlter(packCode); } } else { - FileUtils.DeleteFile(scene.savePath); + FileUtlis.Files.DeleteFile(scene.savePath); List.scenes.Remove(scene); } } /// <summary> - /// 鍒犻櫎鏈湴鍔熻兘鏂囦欢 + /// 鍒犻櫎鏈湴鍔熻兘鍙婃枃浠� /// </summary> public void DeleteFunction(Function delTemp) { @@ -515,41 +415,92 @@ case SPK.LightRGB: case SPK.LightRGBW: case SPK.LightCCT: - _FunctionList.lights.Remove(_FunctionList.lights.Find((obj) => obj.deviceId == delTemp.deviceId)); + List.lights.Remove(List.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)); + List.curtains.Remove(List.curtains.Find((obj) => obj.deviceId == delTemp.deviceId)); break; case SPK.AcStandard: - _FunctionList.aCs.Remove(_FunctionList.aCs.Find((obj) => obj.deviceId == delTemp.deviceId)); + List.aCs.Remove(List.aCs.Find((obj) => obj.deviceId == delTemp.deviceId)); break; case SPK.FloorHeatStandard: - _FunctionList.floorHeatings.Remove(_FunctionList.floorHeatings.Find((obj) => obj.deviceId == delTemp.deviceId)); + List.floorHeatings.Remove(List.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)); + List.sensorsEnvironmentalScience.Remove(List.sensorsEnvironmentalScience.Find((obj) => obj.deviceId == delTemp.deviceId)); break; case SPK.ElectricSocket: - _FunctionList.switchSockets.Remove(_FunctionList.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId)); + List.switchSockets.Remove(List.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId)); break; case SPK.ElectricTV: - _FunctionList.tVs.Remove(_FunctionList.tVs.Find((obj) => obj.deviceId == delTemp.deviceId)); + List.tVs.Remove(List.tVs.Find((obj) => obj.deviceId == delTemp.deviceId)); break; case SPK.ElectricFan: - _FunctionList.fans.Remove(_FunctionList.fans.Find((obj) => obj.deviceId == delTemp.deviceId)); + case SPK.ElectricTuyaFan: + List.fans.Remove(List.fans.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricTuyaAirCleaner: + List.airCleaners.Remove(List.airCleaners.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricTuyaWaterValve: + List.waterValveList.Remove(List.waterValveList.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricTuyaWeepRobot: + List.weepRobots.Remove(List.weepRobots.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ClothesHanger: + List.clothesHangerList.Remove(List.clothesHangerList.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.SensorSmoke: + case SPK.SensorWater: + case SPK.SensorDoorWindow: + case SPK.SensorPir: + List.sensorsArm.Remove(List.sensorsArm.Find((obj)=>obj.deviceId == delTemp.deviceId)); break; } - FileUtils.DeleteFile(delTemp.savePath); + 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 Read3tyFunctionStatus() + { + //璇诲彇娑傞甫璁惧鐘舵�� + if (GetDeviceFunctionList(SPK.BrandType.Tuya).Count > 0) + { + var page = new List<string>(); + int count = 0; + foreach (var function in GetDeviceFunctionList(SPK.BrandType.Tuya)) + { + page.Add(function.deviceId); + count++; + if (count > 9) + { + DriverLayer.Control.Ins.ReadFunctionsInfo(page); + page.Clear(); + count = 0; + } + } + DriverLayer.Control.Ins.ReadFunctionsInfo(page); + } + + } + /// <summary> /// 璇诲彇鍏ㄩ儴鍔熻兘鐨勭姸鎬� /// </summary> @@ -571,18 +522,49 @@ lockReadFunctionStatus = true; try { - foreach (var function in GetAllDeviceFunctionList()) + Read3tyFunctionStatus(); + + if(DriverLayer.Control.Ins.GatewayOnline_Local) { - switch (function.functionCategory) + foreach (var function in GetDeviceFunctionList(SPK.BrandType.Hdl)) { - case FunctionCategory.Light: - case FunctionCategory.Electrical: - case FunctionCategory.SwitchDevice: - case FunctionCategory.Curtain: - case FunctionCategory.Thermostat: - DriverLayer.Control.Ins.SendReadCommand(function); - break; + switch (function.Spk_Prefix) + { + case FunctionCategory.Music: + case FunctionCategory.DryContact: + continue; + } + DriverLayer.Control.Ins.SendReadCommand(function); + //switch (function.Spk_Prefix) + //{ + // case FunctionCategory.Light: + // case FunctionCategory.Electric: + // case FunctionCategory.Curtain: + // case FunctionCategory.AC: + // case FunctionCategory.FloorHeat: + // case FunctionCategory.Sensor: + // DriverLayer.Control.Ins.SendReadCommand(function); + // break; + //} } + } + else + { + var page = new List<string>(); + int count = 0; + + foreach (var function in GetDeviceFunctionList(SPK.BrandType.Hdl)) + { + page.Add(function.deviceId); + count++; + if (count > 9) + { + DriverLayer.Control.Ins.SendApiReadCommand(page); + page.Clear(); + count = 0; + } + } + DriverLayer.Control.Ins.SendApiReadCommand(page); } } catch (Exception ex) @@ -594,10 +576,70 @@ lockReadFunctionStatus = false; MainPage.Log($"缁撴潫--璇诲彇"); } + + }) { IsBackground = true }.Start(); } + #region 鍦烘櫙鐩稿叧 + /// <summary> + /// 娣诲姞鍦烘櫙 + /// </summary> + public string AddScene(Scene scene, out Scene result) + { + Scene tempScene = null; + var pm = new HttpServerRequest(); + var revPack = pm.AddScene(scene); + if (revPack.Code == StateCode.SUCCESS) + { + var sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString()); + tempScene = sceneList.Find((obj) => obj.sid == scene.sid); + var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene)); + FileUtlis.Files.WriteFileByBytes(scene.savePath, ssd); + result = tempScene; + } + else + { + result = tempScene; + } + return revPack.Code; + } + #endregion + #region 鏀惰棌鍔熻兘 + + /// <summary> + /// 鏀惰棌鍦烘櫙 + /// </summary> + public string CollectScene(Scene scene) + { + var result = ""; + if (scene.collect) + { + result = ApiUtlis.Ins.HttpRequest.CollectDevice(scene.userSceneId).Code; + } + else + { + result = ApiUtlis.Ins.HttpRequest.CancelCollectDevice(scene.userSceneId).Code; + } + + //鎻愮ず閿欒 + if (result != StateCode.SUCCESS) + { + IMessageCommon.Current.ShowErrorInfoAlter(result); + } + + return result; + } + + #endregion + + + #region + + + + #endregion } } -- Gitblit v1.8.0