From 1a0a7f736c6d2e7129e7591d40bed67ec7c0f09a Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期五, 05 二月 2021 10:47:42 +0800 Subject: [PATCH] 2021-02-05 1.编译冲突修改 --- HDL_ON/Entity/FunctionList.cs | 870 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 787 insertions(+), 83 deletions(-) diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs index 4b0b5bb..d15b97e 100644 --- a/HDL_ON/Entity/FunctionList.cs +++ b/HDL_ON/Entity/FunctionList.cs @@ -1,11 +1,36 @@ 锘縰sing System; 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 { - 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 +47,7 @@ /// 鍦扮儹鍒楄〃 /// </summary> public List<FloorHeating> floorHeatings = new List<FloorHeating>(); + #region 瀹剁數鍒楄〃 electricals /// <summary> /// 瀹剁數鍒楄〃 /// </summary> @@ -29,10 +55,37 @@ { get { + if(fans == null) + { + fans = new List<Fan>(); + } + if(switchSockets == null) + { + switchSockets = new List<SwitchSocket>(); + } + if(tVs == null) + { + 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>(); + } 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); return list; } } @@ -47,164 +100,815 @@ /// <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>(); + + #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> - public List<Scene> scenes = new List<Scene>(); + //public List<Scene> Scenes + //{ + // get + // { + // List.scenes = List.scenes.OrderByDescending(o => o.createTime).ToList(); + // return List.scenes; + // } + //} + /// <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); + // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃 + 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: + 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: + var curtain = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(functionDataString); + List.curtains.Add(curtain); + deviceFunctionList.Add(curtain); + break; + case SPK.AcStandard: + var ac = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(functionDataString); + List.aCs.Add(ac); + deviceFunctionList.Add(ac); + break; + case SPK.FloorHeatStandard: + 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: + var sensor = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); + List.sensorsEnvironmentalScience.Add(sensor); + deviceFunctionList.Add(sensor); + break; + case SPK.ElectricSocket: + var ele = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(functionDataString); + List.switchSockets.Add(ele); + deviceFunctionList.Add(ele); + break; + case SPK.ElectricTV: + var tv = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(functionDataString); + List.tVs.Add(tv); + deviceFunctionList.Add(tv); + break; + case SPK.ElectricFan: + 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.SensorGas: + var ser = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(functionDataString); + List.sensorsArm.Add(ser); + deviceFunctionList.Add(ser); + break; + } + } + } + if (filePath.StartsWith("SceneData_")) + { + 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> GetAllDeviceFunctionList() + public List<Function> GetDeviceFunctionList(SPK.BrandType brandType = SPK.BrandType.All) { - 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); + 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(sensorsArm); + deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList); + try + { + deviceFunctionList = deviceFunctionList.OrderByDescending(o => o.controlCounter).ToList(); + } + catch (Exception ex) + { + MainPage.Log($"璁惧鍔熻兘鎺掑簭寮傚父锛歿ex.Message}"); + } + } - return deviceFunctionList.OrderByDescending(o => o.usageCount).ToList(); + List<Function> resultFunctions = new List<Function>(); + if (brandType == SPK.BrandType.All) + { + } + 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>(); - functions = new List<Function>(); + List.aCs = new List<AC>(); + List.lights = new List<Light>(); + List.curtains = new List<Curtain>(); + List.floorHeatings = new List<FloorHeating>(); + List.tVs = new List<TV>(); + List.switchSockets = new List<SwitchSocket>(); + List.fans = new List<Fan>(); + List.sensorsEnvironmentalScience = new List<Sensor>(); + List.scenes = new List<Scene>(); + List.deviceFunctionList = null; + _FunctionList = null; } /// <summary> - /// 娣诲姞鍔熻兘 + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// tcp鏂瑰紡 /// </summary> /// <param name="sidObj"></param> public void AddDeviceFunction(Function sidObj0) { - switch (sidObj0.functionType) + switch (sidObj0.spk) { - case FunctionType.AC: + case SPK.AcStandard: var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.aCs.Add(sidObj); + List.aCs.Add(sidObj); + sidObj.SaveFunctionFile(); break; - case FunctionType.FloorHeating: + case SPK.FloorHeatStandard: var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.floorHeatings.Add(sidObj1); + List.floorHeatings.Add(sidObj1); + sidObj1.SaveFunctionFile(); break; - case FunctionType.Dimmer: - case FunctionType.RGB: - case FunctionType.Relay: + case SPK.LightDimming: + case SPK.LightRGB: + case SPK.LightSwitch: var sidObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.lights.Add(sidObj2); + List.lights.Add(sidObj2); + sidObj2.SaveFunctionFile(); break; - case FunctionType.Curtain: + case SPK.CurtainSwitch: + case SPK.CurtainRoller: + case SPK.CurtainTrietex: var sidObj3 = Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.curtains.Add(sidObj3 ); + List.curtains.Add(sidObj3 ); + sidObj3.SaveFunctionFile(); break; - case FunctionType.TV: + case SPK.ElectricTV: var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.tVs.Add(sidObj4); + List.tVs.Add(sidObj4); + sidObj4.SaveFunctionFile(); break; - case FunctionType.Socket: + case SPK.ElectricSocket: var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.switchSockets.Add(sidObj5); + List.switchSockets.Add(sidObj5); + sidObj5.SaveFunctionFile(); break; - case FunctionType.Fan: + case SPK.ElectricFan: var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.fans.Add(sidObj6); + List.fans.Add(sidObj6); + sidObj6.SaveFunctionFile(); break; - case FunctionType.CO2: - case FunctionType.TVOC: - case FunctionType.PM25: - case FunctionType.Temp: - case FunctionType.Humidity: + case SPK.SensorCO2: + case SPK.SensorTVOC: + case SPK.SensorPm25: + case SPK.SensorTemperature: + case SPK.SensorHumidity: var sidObj7 = Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0)); - DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience.Add(sidObj7); + List.sensorsEnvironmentalScience.Add(sidObj7); + sidObj7.SaveFunctionFile(); break; } } - + /// <summary> + /// 鎺ユ敹bus杞欢涓婁紶鐨勫姛鑳� + /// http udp + /// </summary> + /// <param name="obj"></param> public void AddFunction(object obj) { var f = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(obj.ToString()); - - switch (f.functionCategory) + if (f == null) + return; + switch (f.Spk_Prefix) { - case FunctionCategory.Thermostat: - switch (f.functionType) + case FunctionCategory.AC: + switch (f.spk) { - case FunctionType.AC: - aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); + case SPK.AcStandard: + List.aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(obj.ToString())); break; - case FunctionType.FloorHeating: - floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); + } + break; + case FunctionCategory.FloorHeat: + switch (f.spk) + { + case SPK.FloorHeatStandard: + List.floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(obj.ToString())); break; } break; case FunctionCategory.Light: - lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); + List.lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Light>(obj.ToString())); break; case FunctionCategory.Curtain: - curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString())); + List.curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Curtain>(obj.ToString())); break; - case FunctionCategory.Electrical: - switch(f.functionType) + case FunctionCategory.Electric: + switch(f.spk) { - case FunctionType.TV: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString())); + case SPK.ElectricTV: + List.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<TV>(obj.ToString())); break; - case FunctionType.WindPower: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); + case SPK.ElectricSocket: + List.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<SwitchSocket>(obj.ToString())); break; - case FunctionType.Fan: - electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); + case SPK.ElectricFan: + List.electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Fan>(obj.ToString())); break; } break; case FunctionCategory.Sensor: - switch(f.functionType) + switch (f.spk) { - case FunctionType.TVOC: - case FunctionType.CO2: - case FunctionType.PM25: - case FunctionType.Humidity: - //case FunctionType.Noise: - sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); + case SPK.SensorTVOC: + case SPK.SensorCO2: + case SPK.SensorPm25: + case SPK.SensorHumidity: + case SPK.SensorTemperature: + List.sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Sensor>(obj.ToString())); + break; + case SPK.SensorWater: + case SPK.SensorSmoke: + case SPK.SensorGas: + case SPK.SensorDryContact: + case SPK.SensorShanLan: + case SPK.SensorDuiShe: + case SPK.SensorPir: + case SPK.SensorDoorWindow: + case SPK.SensoruUtrasonic: + List.sensorsArm.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 + { + IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); + } + return pack.Code; + } + + /// <summary> + /// 鍒犻櫎鍦烘櫙 + /// todo + /// </summary> + public void DeleteScene(Scene scene,bool upSevser) + { + if (upSevser) + { + var pm = new HttpServerRequest(); + var packCode = pm.DeleteScene(scene.userSceneId); + if (packCode == StateCode.SUCCESS) + { + FileUtlis.Files.DeleteFile(scene.savePath); + List.scenes.Remove(scene); + } + else + { + IMessageCommon.Current.ShowErrorInfoAlter(packCode); + } + } + else + { + 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: + List.lights.Remove(List.lights.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.CurtainRoller: + case SPK.CurtainShades: + case SPK.CurtainSwitch: + case SPK.CurtainTrietex: + List.curtains.Remove(List.curtains.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.AcStandard: + List.aCs.Remove(List.aCs.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.FloorHeatStandard: + 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: + List.sensorsEnvironmentalScience.Remove(List.sensorsEnvironmentalScience.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricSocket: + List.switchSockets.Remove(List.switchSockets.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricTV: + List.tVs.Remove(List.tVs.Find((obj) => obj.deviceId == delTemp.deviceId)); + break; + case SPK.ElectricFan: + List.fans.Remove(List.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 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> + public void ReadAllFunctionStatus() + { + if (lockReadFunctionStatus) + { + MainPage.Log($"澶氭杩涘叆--杩斿洖"); + return; + } + new Thread(() => + { + if (lockReadFunctionStatus) + { + MainPage.Log($"澶氭杩涘叆--杩斿洖"); + return; + } + MainPage.Log($"杩涘叆--璇诲彇"); + lockReadFunctionStatus = true; + try + { + Read3tyFunctionStatus(); + + if (DriverLayer.Control.Ins.IsRemote) + { + 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); + } + else + { + foreach (var function in GetDeviceFunctionList(SPK.BrandType.Hdl)) + { + switch (function.Spk_Prefix) + { + case FunctionCategory.Light: + case FunctionCategory.Electric: + case FunctionCategory.Curtain: + case FunctionCategory.AC: + case FunctionCategory.FloorHeat: + 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(); + } + #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 鍔熻兘鏂囨湰鐩稿叧 + /// <summary> + /// 灞炴�у悕绉版樉绀烘枃鏈� + /// 涓嫳鏂囨樉绀� + /// </summary> + public string GetNameText(string key) + { + string text = ""; + switch (key) + { + case FunctionAttributeKey.OnOff: + text = Language.StringByID(StringId.OnOff); + break; + case FunctionAttributeKey.Brightness: + text = Language.StringByID(StringId.Brightness); + break; + case FunctionAttributeKey.RGB: + text = Language.StringByID(StringId.ColorValue); + break; + case FunctionAttributeKey.Mode: + text = Language.StringByID(StringId.Mode); + break; + case FunctionAttributeKey.FanSpeed: + text = Language.StringByID(StringId.FanSpeed); + break; + case FunctionAttributeKey.SetTemp: + text = Language.StringByID(StringId.Temp); + break; + case FunctionAttributeKey.IndoorTemp: + text = Language.StringByID(StringId.IndoorTemp); + break; + case FunctionAttributeKey.Delay: + text = Language.StringByID(StringId.Delay); + break; + case FunctionAttributeKey.CCT: + text = "CCT"; + break; + case FunctionAttributeKey.Percent: + text = Language.StringByID(StringId.PercentAdjustment); + break; + case FunctionAttributeKey.FadeTime: + text = Language.StringByID(StringId.FadeSpeed); + break; + } + return text; + } + + /// <summary> + /// 灞炴�у�煎崟浣� + /// </summary> + public string GetUintString(string key) + { + var us = ""; + switch (key) + { + case FunctionAttributeKey.SetTemp: + case FunctionAttributeKey.IndoorTemp: + us = "掳C"; + break; + case FunctionAttributeKey.Percent: + case FunctionAttributeKey.Brightness: + us = "%"; + break; + } + return us; + } + + /// <summary> + /// 鑾峰彇鎸囧畾灞炴�х殑鏄剧ず鏂囨湰 + /// 涓嫳鏂囨樉绀� + /// </summary> + public string GetValueText(string key, string value) + { + string text = ""; + switch (key) + { + case FunctionAttributeKey.OnOff: + text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF); + break; + case FunctionAttributeKey.SetTemp: + case FunctionAttributeKey.IndoorTemp: + case FunctionAttributeKey.Brightness: + case FunctionAttributeKey.Percent: + if (value == "") + { + value = "0"; + } + text = value; + break; + case FunctionAttributeKey.Mode: + switch (value) + { + //----绌鸿皟 + case "auto": + text = Language.StringByID(StringId.Auto); + break; + case "cool": + text = Language.StringByID(StringId.Cool); + break; + case "heat": + text = Language.StringByID(StringId.Heat); + break; + case "dry": + text = Language.StringByID(StringId.Dry); + break; + case "fan": + text = Language.StringByID(StringId.AirSupply); + break; + //-----鍦扮儹 + case "day": + text = Language.StringByID(StringId.Day); + break; + case "night": + text = Language.StringByID(StringId.Night); + break; + case "away": + text = Language.StringByID(StringId.Away); + break; + case "normal": + text = Language.StringByID(StringId.Normal); + break; + case "timer": + text = Language.StringByID(StringId.Timer); + break; + } + break; + case FunctionAttributeKey.FanSpeed: + switch (value) + { + case "high": + text = Language.StringByID(StringId.HighWindSpeed); + break; + case "medium": + text = Language.StringByID(StringId.MiddleWindSpeed); + break; + case "low": + text = Language.StringByID(StringId.LowWindSpeed); + break; + case "auto": + text = Language.StringByID(StringId.Auto); + break; + default: + text = "low"; + break; + } + break; + case "high": + text = Language.StringByID(StringId.HighWindSpeed); + break; + case "medium": + text = Language.StringByID(StringId.MiddleWindSpeed); + break; + case "low": + text = Language.StringByID(StringId.LowWindSpeed); + break; + case "auto": + text = Language.StringByID(StringId.Auto); + break; + } + return text; + } + + + /// <summary> + /// 寤舵椂鏄剧ず鐨勬枃鏈� + /// </summary> + public string GetDelayText(string delay) + { + string text = ""; + switch (delay) + { + case "0": + text = Language.StringByID(StringId.NoDelay); + break; + case "30": + text = "30s"; + break; + case "60": + text = "1min"; + break; + case "120": + text = "2min"; + break; + case "300": + text = "5min"; + break; + } + return text; + } + + #endregion } - + } -- Gitblit v1.8.0