using System; using System.Collections.Generic; using HDL_ON.DAL; namespace HDL_ON.Entity { public class DB_ResidenceData { public DB_ResidenceData() { } /// /// 0:A协议网关 /// 1:bus网关 /// 2:knx网关 /// public int GatewayType = 0; /// /// 住宅基础信息 /// public RegionInfoRes residecenInfo { get { if (MainPage.LocalMode) { return new RegionInfoRes() { Name = "本地模式" }; } else { return MainPage.LoginUser.regionList.Find((obj) => obj.RegionID == CurReginID); } } } /// /// 当前选择的住宅索引 /// public string CurReginID = ""; /// /// 楼层列表 /// public List floors = new List(); /// /// 房间列表 /// public List rooms = new List(); /// /// 功能列表 /// public FunctionList functionList = new FunctionList(); /// /// 功能oid列表 /// public List functionOidList = new List(); /// /// 功能类型列表 /// 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 }); } } catch (Exception ex) { MainPage.Log($"住宅数据初始化失败:{ex.Message}"); } instance.residenceImage = "Classification/Room/Roombg.png"; //初始化住宅功能数据 InitRoomFunction(); } return instance; } } /// /// 退出账号清空数据 /// public void EixtAccount() { instance = null; } /// /// 住宅图片 /// public string residenceImage; /// /// 住宅数据是否存在变化 /// bool hasChange = false; /// /// 当前住宅的网关MAC /// public string residenceGatewayMAC = "4E47323347591243"; /// /// 保存住宅数据 /// public void SaveResidenceData() { 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"); } /// /// 刷新住宅里面的搜索设备状态 /// 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.SendReadCommand(function); break; } } } } 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(); } } }