using System; using System.Collections.Generic; using HDL_ON.DAL; namespace HDL_ON.Entity { public class DB_ResidenceData { public DB_ResidenceData() { } /// /// 当前选择的住宅索引 /// public int CurReginIndex = 0; /// /// 住宅基础信息 /// public RegionInfoRes residecenInfo { get { return MainPage.LoginUser.regionList[CurReginIndex]; } } /// /// 楼层列表 /// public List floors = new List(); /// /// 房间列表 /// public List rooms = new List(); /// /// 功能列表 /// public FunctionList functionList = new FunctionList(); /// /// 功能类型列表 /// public List functionTypeList = new List(); static DB_ResidenceData instance; public static DB_ResidenceData residenceData { get { if (instance == null) { try { var residenceDataBytes = FileUtils.ReadFile("DB_ResidenceData"); var userConfigString = CommonPage.MyEncodingUTF8.GetString(residenceDataBytes); DB_ResidenceData temp = null; if (!string.IsNullOrEmpty(userConfigString)) { temp = Newtonsoft.Json.JsonConvert.DeserializeObject(userConfigString); } if (temp == null) { instance = new DB_ResidenceData { }; } else { instance = temp; } if (instance.functionTypeList.Count == 0) { instance.functionTypeList.AddRange(new List { ShowFunction.Light,ShowFunction.AC,ShowFunction.Curtain, ShowFunction.FloorHeating,ShowFunction.DoorLock, ShowFunction.Electric,ShowFunction.EnergyMonitoring, ShowFunction.Environmental, ShowFunction.FreshAir,ShowFunction.Music, ShowFunction.Panel,ShowFunction.SecurityMonitoring, ShowFunction.Sensor,ShowFunction.VideoIntercom }); } #if DEBUG //if (DB_ResidenceData.residenceData.functionList.scenes.Count == 0) //{ // var s0 = new Scene() // { // sid = "12341212345678901234560A0A010001ABCD", // name = "全关场景", // sceneType = SceneType.OrdinaryScenes, // roomIdList = new List() { "0001" }, // bus_SceneData = new Dictionary(), // }; // s0.bus_SceneData.Add("12341212345678901234560202020002ABCD", new byte[] { 1, 0, 0, 0 }); // s0.bus_SceneData.Add("12341212345678901234560202010005ABCD", new byte[] { 1, 0, 0, 0 }); // s0.bus_SceneData.Add("12341212345678901234560202040006ABCD", new byte[] { 1, 0, 254, 0, 0, 3, 255, 0, 0, 0, 0 }); // s0.bus_SceneData.Add("12341212345678901234560604010001ABCD", new byte[] { 1, 0, 32, 32, 32, 32, 32, 0, 0, 0, 1, 28, 0 }); // s0.bus_SceneData.Add("12341212345678901234560303010003ABCD", new byte[] { 1, 2 }); // DB_ResidenceData.residenceData.functionList.scenes.Add(s0); // var s1 = new Scene() // { // sid = "12341212345678901234560A0A00010002ABCD", // name = "全开场景", // sceneType = SceneType.OrdinaryScenes, // roomIdList = new List() { "0001" }, // bus_SceneData = new Dictionary(), // }; // s1.bus_SceneData.Add("12341212345678901234560202020002ABCD", new byte[] { 1, 100, 0, 0 }); // s1.bus_SceneData.Add("12341212345678901234560202010005ABCD", new byte[] { 1, 100, 0, 0 }); // s1.bus_SceneData.Add("12341212345678901234560202040006ABCD", new byte[] { 1, 100, 254, 0, 0, 3, 255, 0, 0, 0, 0 }); // s1.bus_SceneData.Add("12341212345678901234560604010001ABCD", new byte[] { 1, 0, 32, 32, 32, 32, 32, 0, 1, 0, 1, 28, 0 }); // s1.bus_SceneData.Add("12341212345678901234560303010003ABCD", new byte[] { 1, 1 }); // DB_ResidenceData.residenceData.functionList.scenes.Add(s1); // var s2 = new Scene() // { // sid = "12341212345678901234560A0A010004ABCD", // name = "电影场景", // sceneType = SceneType.MovieScene, // roomIdList = new List() { "0001" }, // }; // DB_ResidenceData.residenceData.functionList.scenes.Add(s2); // var s3 = new Scene() // { // sid = "12341212345678901234560A0A010005ABCD", // name = "电影场景2", // sceneType = SceneType.MovieScene, // roomIdList = new List() { "0001" }, // }; // DB_ResidenceData.residenceData.functionList.scenes.Add(s3); //} if (instance.rooms.Count == 0) { //-------------------- var r111 = new Room() { sid = "0001", name = "Room-1", floorIndex = 0, backgroundImage = "Classification/Room/Roombg.png" }; instance.rooms.Add(r111); instance.floors.Add("1 F"); // instance.functionList.aCs.Add(new AC() // { // sid = "12341212345678901234560604010001ABCD", // name = "空调", // propertList = new List() { // new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, // new Trait { attri="mode", max = 2,min =0,value = new List{ "auto", "heat", "cool","dry" } }, // new Trait { attri = "fan",max = 3,min =0,value = new List{ "low", "medium", "high" ,"auto"} }, // new Trait { attri = "temperature", max = 32,min=16,value = new List{"up","down" } }, // }, // roomIdList = new List() { "0001" }, // lastState = "制冷 中风 18°C", // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 8, // LoopID = 1, // }, // }); // instance.functionList.lights.Add(new Light() // { // sid = "12341212345678901234560202020002ABCD", // name = "调光灯", // propertList = new List() { // new Trait { attri="brightness", max=100,min = 0, value= new List { "up","down"} }, // },//"brightness", // roomIdList = new List() { "0001" }, // lastState = "20%", // bus_Data = new BusData // { // SubnetID = 111, // DeviceID = 2, // LoopID = 1, // }, // }); // instance.functionList.curtains.Add(new Curtain() // { // sid = "12341212345678901234560303010003ABCD", // name = "窗帘模块", // roomIdList = new List() { "0001" }, // propertList = new List() { // new Trait { attri="on_off", max=2,min = 0, value= new List { "on","off","stop"} }, // },// "curtain", // lastState = "开", // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 7, // LoopID = 1, // }, // }); // instance.functionList.curtains.Add(new Curtain() // { // sid = "12341212345678901234560303030011ABCD", // name = "开合帘", // roomIdList = new List() { "0001" }, // propertList = new List() { // new Trait { attri="on_off", max=100,min = 0, value= new List { "on","off","stop"} }, // },//"curtaintype", // lastState = "20%", // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 7, // LoopID = 11, // }, // }); // instance.functionList.curtains.Add(new Curtain() // { // sid = "12341212345678901234560503040012ABCD", // name = "卷帘", // roomIdList = new List() { "0001" }, // propertList = new List() { // new Trait { attri="on_off", max=2,min = 0, value= new List { "on","off","stop"} }, // new Trait { attri="openLevel", max=100,min = 0, value= new List { "percent" } }, // },// "rollingshutter", // lastState = "20%", // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 7, // LoopID = 12, // }, // }); // instance.functionList.floorHeatings.Add(new FloorHeating() // { // sid = "12341212345678901234560404020004ABCD", // name = "地热", // roomIdList = new List() { "0001" }, // propertList = new List() { // new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, // new Trait { attri="mode", max = 2,min =0,value = new List{ "ordinary", "day", "night","timer","away" } }, // new Trait { attri = "temperature", max = 32,min=16,value = new List{"up","down" } }, // },// // lastState = "自动 25°C", // bus_Data = new BusData // { // SubnetID = 111, // DeviceID = 12, // LoopID = 1 // } // }); // instance.functionList.lights.Add(new Light() // { // sid = "12341212345678901234560202010005ABCD", // name = "吊灯", // propertList = new List() { // new Trait { attri="on_off", max=100,min = 0, value= new List { "on","off"} }, // },//"on_off", // roomIdList = new List() { "0001" }, // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 6, // LoopID = 1, // }, // }); // instance.functionList.lights.Add(new Light() // { // sid = "12341212345678901234560202040006ABCD", // name = "RGB灯", // propertList = new List() { // new Trait { attri="brightness", max=100,min = 0, value= new List { "on","off"} }, // new Trait { attri="color", max=100,min = 0, value= new List { "255", "255", "255" } }, // },//"brightness,color", // roomIdList = new List() { "0001" }, // bus_Data = new BusData // { // SubnetID = 42, // DeviceID = 4, // LoopID = 1, // }, // }); instance.functionList.fans.Add(new Fan() { sid = "12341212345678901234561010020006ABCD", name = "风扇", propertList = new List() { new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, new Trait { attri="openLevel", max=7,min = 0, value= new List { "percent" } }, },//"brightness,color", roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 142, DeviceID = 4, LoopID = 11, }, }); instance.functionList.tVs.Add(new TV() { sid = "12341212345678901234561010030006ABCD", name = "电视", propertList = new List() { new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, }, roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 142, DeviceID = 4, LoopID = 111, }, }); instance.functionList.switchSockets.Add(new SwitchSocket() { sid = "12341212345678901234560101020006ABCD", name = "插座", propertList = new List() { new Trait { attri="on_off", max=1,min = 0, value= new List { "on","off"} }, },//"brightness,color", roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 42, DeviceID = 6, LoopID = 1, }, }); instance.SaveResidenceData(); } #endif //}) //{ IsBackground = true }.Start(); } catch (Exception ex) { MainPage.Log($"住宅数据初始化失败:{ex.Message}"); } instance.residenceImage = "Classification/Room/Roombg.png"; //初始化住宅功能数据 InitRoomFunction(); } return instance; } } /// /// 住宅图片 /// public string residenceImage; /// /// 住宅数据是否存在变化 /// bool hasChange = false; /// /// 保存住宅数据 /// public void SaveResidenceData() { //if (hasChange) // return; //hasChange = true; //new System.Threading.Thread(() => //{ // System.Threading.Thread.Sleep(5000); if (this == null|| this.residecenInfo==null) return; var ssd = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); FileUtils.WriteFileByBytes("DB_ResidenceData", ssd); MainPage.Log("Save DB_ResidenceData"); // hasChange = false; //}) //{ IsBackground = true }.Start(); } /// /// 刷新住宅里面的搜索设备状态 /// public void RefreshResidenceFunctionStatus() { new System.Threading.Thread(() => { try { foreach (var function in functionList.functions) { System.Threading.Thread.Sleep(100); if (function.bus_Data != null) { switch (function.functionCategory) { case FunctionCategory.Light: case FunctionCategory.Electrical: case FunctionCategory.SwitchDevice: case FunctionCategory.Curtain: case FunctionCategory.Thermostat: Control.Send(CommandType_A.read, function); break; } } else { } } } catch (Exception ex) { MainPage.Log($"Refresh Residence Function Status Error : {ex.Message}"); } }) { IsBackground = true }.Start(); } /// /// 初始化每个房间的功能数据 /// public static void InitRoomFunction() { new System.Threading.Thread(() => { try { //初始化住宅功能数据 instance.functionList.GetAllFunction(); //初始化住宅所有房间功能数据 foreach (var r in instance.rooms) { r.functions.Clear(); foreach (var func in instance.functionList.functions) { MainPage.Log($"init room function sid {func.functionCategory.ToString()}:{r.sid}"); if (func.roomIdList.Contains(r.sid)) { r.functions.Add(func); } } } }catch(Exception ex) { MainPage.Log($"Init room function error : {ex.Message}"); } }) { IsBackground = true }.Start(); } } }