using System;
|
using System.Collections.Generic;
|
using HDL_ON.DAL;
|
|
namespace HDL_ON.Entity
|
{
|
public class DB_ResidenceData
|
{
|
public DB_ResidenceData()
|
{
|
}
|
/// <summary>
|
/// 住宅名称
|
/// </summary>
|
public string residenceName;
|
/// <summary>
|
/// 住宅图片
|
/// </summary>
|
public string residenceImage;
|
|
/// <summary>
|
/// 楼层列表
|
/// </summary>
|
public List<string> floors = new List<string>();
|
|
/// <summary>
|
/// 房间列表
|
/// </summary>
|
public List<Room> rooms = new List<Room>();
|
|
/// <summary>
|
/// 功能列表
|
/// </summary>
|
//[Newtonsoft.Json.JsonIgnore]
|
public FunctionList functions = new FunctionList();
|
|
/// <summary>
|
/// 场景列表
|
/// </summary>
|
public List<Scene> scenes = new List<Scene>();
|
|
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<DB_ResidenceData>(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", floorIndex = 1, 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<string>() { "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<string>() { "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<string>() { "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<string>() { "0001" },
|
lastState = ""
|
});
|
instance.functions.lights.Add(new Light()
|
{
|
sid = "12341212345678901234560400000005",
|
name = "客厅大灯",
|
trait = "switch",
|
roomIdList = new List<string>() { "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<string>() { "0001" },
|
bus_Data = new BusData
|
{
|
SubnetID = 214,
|
DeviceID = 8,
|
LoopID = 1,
|
},
|
});
|
|
//初始化住宅功能数据
|
instance.InitRoomFunction();
|
}
|
#endif
|
}
|
return instance;
|
}
|
}
|
|
/// <summary>
|
/// 住宅数据是否存在变化
|
/// </summary>
|
bool hasChange = false;
|
/// <summary>
|
/// 保存住宅数据
|
/// </summary>
|
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();
|
}
|
|
/// <summary>
|
/// 刷新住宅里面的搜索设备状态
|
/// </summary>
|
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();
|
}
|
|
/// <summary>
|
/// 初始化每个房间的功能数据
|
/// </summary>
|
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();
|
|
}
|
}
|
}
|