using System; using System.Collections.Generic; using HDL_ON.DAL; namespace HDL_ON.Entity { public class DB_ResidenceData { public DB_ResidenceData() { } /// /// 住宅名称 /// public string residenceName; /// /// 住宅图片 /// public string residenceImage; /// /// 房间列表 /// public List rooms = new List(); /// /// 功能列表 /// //[Newtonsoft.Json.JsonIgnore] public FunctionList functions = new FunctionList(); /// /// 场景列表 /// public List scenes = 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 (userConfigString != null) { temp = Newtonsoft.Json.JsonConvert.DeserializeObject(userConfigString); } if (temp == null) { instance = new DB_ResidenceData { }; } else { instance = temp; } new System.Threading.Thread(() => { //初始化住宅功能数据 instance.functions.GetAllFunction(); //初始化住宅所有房间功能数据 foreach (var r in instance.rooms) { foreach (var func in instance.functions.functions) { if (func.roomIdList.Contains(r.sid)) { r.functions.Add(func); } } } }) { IsBackground = true }.Start(); } catch { } instance.residenceName = "妮儿的家"; instance.residenceImage = "Classification/Room/Roombg.png"; #if DEBUG if (instance.rooms.Count == 0) { //-------------------- var r111 = new Room() { sid = "0001", name = "Room-1", floor = "1F", backgroundImage = "Classification/Room/Roombg.png" }; instance.rooms.Add(r111); instance.functions.aCs.Add(new AC() { sid = "12341212345678901234560600000001", name = "空调", trait = "Switch,mode,fan,temperature", roomIdList = new List() { "0001" }, lastState = "制冷 中风 18°C", bus_Data = new BusData { SubnetID = 4, DeviceID = 8, LoopID = 1, }, }); instance.functions.lights.Add(new Light() { sid = "12341212345678901234560400000002", name = "客厅灯", trait = "brightness", roomIdList = new List() { "0001" }, lastState = "20%", bus_Data = new BusData { SubnetID = 14, DeviceID = 8, LoopID = 1, }, }); instance.functions.curtains.Add(new Curtain() { sid = "12341212345678901234560500000003", name = "窗帘", roomIdList = new List() { "0001" }, lastState = "20%", bus_Data = new BusData { SubnetID = 42, DeviceID = 7, LoopID = 1, }, }); instance.functions.floorHeatings.Add(new FloorHeating() { sid = "12341212345678901234560700000004", name = "地热", roomIdList = new List() { "0001" }, lastState = "" }); instance.functions.lights.Add(new Light() { sid = "12341212345678901234560400000005", name = "客厅大灯", trait = "switch", roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 111, DeviceID = 6, LoopID = 1, }, }); instance.functions.lights.Add(new Light() { sid = "12341212345678901234560400000006", name = "客厅RGB灯", trait = "brightness,color", roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 214, DeviceID = 8, LoopID = 1, }, }); //初始化住宅功能数据 instance.InitRoomFunction(); } #endif } return instance; } } /// /// 住宅数据是否存在变化 /// bool hasChange = false; /// /// 保存住宅数据 /// public void SaveResidenceData() { hasChange = true; new System.Threading.Thread(() => { while (hasChange) { hasChange = false; System.Threading.Thread.Sleep(5000); } var ssd = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); FileUtils.WriteFileByBytes("DB_ResidenceData", ssd); MainPage.Log("Save DB_ResidenceData"); }) { IsBackground = true }.Start(); } /// /// 刷新住宅里面的搜索设备状态 /// public void RefreshResidenceFunctionStatus() { new System.Threading.Thread(() => { foreach (var function in functions.functions) { System.Threading.Thread.Sleep(100); if (function.bus_Data!= null) { if (function.functionCategory == FunctionType.Light) { Control.Send("read", function, 3); } } else { } } }) { IsBackground = true }.Start(); } /// /// 初始化每个房间的功能数据 /// public void InitRoomFunction() { new System.Threading.Thread(() => { //初始化住宅功能数据 instance.functions.GetAllFunction(); //初始化住宅所有房间功能数据 foreach (var r in instance.rooms) { foreach (var func in instance.functions.functions) { if (func.roomIdList.Contains(r.sid)) { r.functions.Add(func); } } } }) { IsBackground = true }.Start(); } } }