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 floors = new List(); /// /// 房间列表 /// public List rooms = new List(); /// /// 功能列表 /// public FunctionList functionList = new FunctionList(); 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(() => { #if DEBUG if (DB_ResidenceData.residenceData.functionList.scenes.Count == 0) { var s1 = new Scene() { name = "场景", scene_id = "0001", sceneType = SceneType.OrdinaryScenes, roomIdList = new List() { "0001" }, }; DB_ResidenceData.residenceData.functionList.scenes.Add(s1); var s2 = new Scene() { name = "电影场景", scene_id = "0002", sceneType = SceneType.MovieScene, roomIdList = new List() { "0001" }, }; DB_ResidenceData.residenceData.functionList.scenes.Add(s2); } if (DB_ResidenceData.residenceData.functionList.scenes.Count == 2) { var s3 = new Scene() { name = "电影场景2", scene_id = "0003", sceneType = SceneType.MovieScene, roomIdList = new List() { "0001" }, }; DB_ResidenceData.residenceData.functionList.scenes.Add(s3); } #endif //初始化住宅功能数据 instance.functionList.GetAllFunction(); //初始化住宅所有房间功能数据 foreach (var r in instance.rooms) { foreach (var func in instance.functionList.functions) { if (func.roomIdList.Contains(r.sid)) { r.functionData.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", floorIndex = 1, backgroundImage = "Classification/Room/Roombg.png" }; instance.rooms.Add(r111); instance.functionList.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.functionList.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.functionList.curtains.Add(new Curtain() { sid = "12341212345678901234560500000003", name = "窗帘模块", roomIdList = new List() { "0001" }, trait = "curtain", lastState = "开", bus_Data = new BusData { SubnetID = 42, DeviceID = 7, LoopID = 1, }, }); instance.functionList.curtains.Add(new Curtain() { sid = "12341212345678901234560500000011", name = "开合帘", roomIdList = new List() { "0001" }, trait = "curtaintype", lastState = "20%", bus_Data = new BusData { SubnetID = 42, DeviceID = 7, LoopID = 11, }, }); instance.functionList.curtains.Add(new Curtain() { sid = "12341212345678901234560500000012", name = "卷帘", roomIdList = new List() { "0001" }, trait = "rollingshutter", lastState = "20%", bus_Data = new BusData { SubnetID = 42, DeviceID = 7, LoopID = 12, }, }); instance.functionList.floorHeatings.Add(new FloorHeating() { sid = "12341212345678901234560700000004", name = "地热", roomIdList = new List() { "0001" }, lastState = "" }); instance.functionList.lights.Add(new Light() { sid = "12341212345678901234560400000005", name = "客厅大灯", trait = "switch", roomIdList = new List() { "0001" }, bus_Data = new BusData { SubnetID = 111, DeviceID = 6, LoopID = 1, }, }); instance.functionList.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.SaveResidenceData(); } #endif } return instance; } } /// /// 住宅数据是否存在变化 /// bool hasChange = false; /// /// 保存住宅数据 /// public void SaveResidenceData() { if (hasChange) return; hasChange = true; new System.Threading.Thread(() => { 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"); hasChange = false; }) { IsBackground = true }.Start(); } /// /// 刷新住宅里面的搜索设备状态 /// public void RefreshResidenceFunctionStatus() { new System.Threading.Thread(() => { foreach (var function in functionList.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.functionList.GetAllFunction(); //初始化住宅所有房间功能数据 foreach (var r in instance.rooms) { foreach (var func in instance.functionList.functions) { if (func.roomIdList.Contains(r.sid)) { r.functionData.Add(func); } } } }) { IsBackground = true }.Start(); } } }