| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using Newtonsoft.Json.Linq; |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | public class Function |
| | | public class Function : A_Protocol_FunctionInfo |
| | | { |
| | | /* |
| | | HDL统一协议格式:16bytes
|
| | | 厂商代号:2bytes
|
| | | 通讯方式:有线/无线/ZIGBEE等1bytes
|
| | | 产品识别码:以添加设备的年月日时分秒 + 随机数8bytes
|
| | | 功能类别:1bytes
|
| | | 数据表索引地址:2bytes
|
| | | 回路:2bytes
|
| | | 举例: 0001-00-201910120900002567-01-0001-0001 |
| | | */ |
| | | |
| | | public Function() |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// 当前设备类型 |
| | | /// 功能附带的属性与值的列表 |
| | | /// </summary> |
| | | public FunctionType funcType = FunctionType.UnKown; |
| | | /// <summary> |
| | | /// 功能分类 |
| | | /// </summary> |
| | | public string funcClassification; |
| | | public Dictionary<string, byte> dicPropert = new Dictionary<string, byte>(); |
| | | /// <summary> |
| | | /// 是否收藏 |
| | | /// </summary> |
| | | public bool collection = false; |
| | | /// <summary> |
| | | /// 功能ID |
| | | /// </summary> |
| | | public string sid; |
| | | /// <summary> |
| | | /// 备注 |
| | | /// </summary> |
| | | public string name; |
| | | /// <summary> |
| | | /// 保存数据时的文件名 |
| | | /// </summary> |
| | | public string savePath = ""; |
| | | /// <summary> |
| | | /// A协议数据格式 |
| | | /// </summary> |
| | | public string a_Protocol_Namespace = "HDL"; |
| | | /// <summary> |
| | | /// bus协议数据格式 |
| | | /// </summary> |
| | | public string bus_Data; |
| | | /// <summary> |
| | | /// 房间ID列表 |
| | | /// 该功能添加到到房间列表 |
| | |
| | | /// </summary> |
| | | public string lastState = ""; |
| | | |
| | | /// <summary> |
| | | /// 功能类型: |
| | | /// 如:灯下面的继电器/调光器/RGB属于同一种功能不同类型的灯 |
| | | /// </summary> |
| | | public string functionType { |
| | | get |
| | | { |
| | | return GetFunctionType(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// bus协议数据格式 |
| | | /// </summary> |
| | | public BusData bus_Data; |
| | | |
| | | /// <summary> |
| | | /// 使用次数 |
| | | /// </summary> |
| | | public double usageCount = 0; |
| | | /// <summary> |
| | | /// 使用频率 |
| | | /// </summary> |
| | | public double usageFrequency = 0; |
| | | /// <summary> |
| | | /// 固定的序号 |
| | | /// </summary> |
| | | public int fixedSerialNumber = int.MaxValue; |
| | | |
| | | /// <summary> |
| | | /// A协议数据 |
| | | /// </summary> |
| | | public List<string> PropertyArray |
| | | { |
| | | get |
| | | { |
| | | var proArr = trait.Split(',').ToList(); |
| | | foreach(var pro in proArr) |
| | | { |
| | | if (!dicPropert.ContainsKey(pro)) |
| | | { |
| | | dicPropert.TryAdd(pro, 0); |
| | | } |
| | | } |
| | | return proArr; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取A协议控制字符串 |
| | |
| | | { |
| | | var sendJob = new JObject { { "Namespace", a_Protocol_Namespace }, { "Command", command }, { "Type", "device" }, }; |
| | | var data = new JObject { { "sid", sid } }; |
| | | sendJob.Add("", data); |
| | | sendJob.Add("objects", data); |
| | | return sendJob; |
| | | } |
| | | /// <summary> |
| | | /// bus旧数据的子网ID |
| | | /// </summary> |
| | | public byte bus_SubnetId |
| | | { |
| | | get |
| | | { |
| | | var sss = JObject.Parse(bus_Data); |
| | | var subnetId = Convert.ToByte(sss.GetValue("SubnetID").ToString()); |
| | | return subnetId; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// bus旧数据的设备ID |
| | | /// 返回功能类型 |
| | | /// </summary> |
| | | public byte bus_DeviceId |
| | | protected virtual string GetFunctionType() |
| | | { |
| | | get |
| | | { |
| | | var sss = JObject.Parse(bus_Data); |
| | | var deviceId = Convert.ToByte(sss.GetValue("DeviceID").ToString()); |
| | | return deviceId; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// bus旧数据的回路ID |
| | | /// </summary> |
| | | public byte bus_LoopId |
| | | { |
| | | get |
| | | { |
| | | var sss = JObject.Parse(bus_Data); |
| | | var loopId = Convert.ToByte(sss.GetValue("LoopID").ToString()); |
| | | return loopId; |
| | | } |
| | | return functionCategory.ToString(); |
| | | } |
| | | |
| | | public string bus_DeviceType = ""; |
| | | |
| | | public string GetBusId () |
| | | { |
| | | string busId = ""; |
| | | if(!string.IsNullOrEmpty(bus_Data)) |
| | | if(bus_Data!=null) |
| | | { |
| | | var sss = JObject.Parse(bus_Data); |
| | | var subnetId = sss.GetValue("SubnetID").ToString(); |
| | | var deviceId = sss.GetValue("DeviceID").ToString(); |
| | | var loopId = sss.GetValue("LoopID").ToString(); |
| | | busId = subnetId + "_" + deviceId + "_" + loopId; |
| | | busId = bus_Data.SubnetID + "_" + bus_Data.DeviceID + "_" + bus_Data.LoopID; |
| | | } |
| | | return busId; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取设备添加到房间的房间名称 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public string GetRoomListName() |
| | | { |
| | | string roomNameList = ""; |
| | | foreach(var roomId in roomIdList) |
| | | { |
| | | var findRoom = DB_ResidenceData.residenceData.rooms.Find(obj => obj.sid == roomId); |
| | | if(roomNameList != "") |
| | | { |
| | | roomNameList += ","; |
| | | } |
| | | roomNameList += findRoom.floor + "·" + findRoom.name; |
| | | } |
| | | return roomNameList; |
| | | } |
| | | } |
| | | } |