using System; using System.Collections.Generic; using HDL_ON.Common; using HDL_ON.DAL.Server; using HDL_ON.DriverLayer; using Shared; namespace HDL_ON.Entity { public class GroupControl : Function { public GroupControl() { spk = "groupControl"; } /// /// 群控ID /// public string userDeviceGroupControlId = string.Empty; /// /// 群控sid /// //public string sid = string.Empty; /// /// 生成群控sid /// public string NewGroupControlSid() { string Id = ""; try { string sOidBeginsWith = "000101";//厂商 + 通讯方式 DateTime dt = DateTime.Now; DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1)); long m = (long)((dt - startTime).TotalMilliseconds / 10); string sTimeSpan = "00000000"; byte[] arry = new byte[4]; arry[0] = (byte)(m & 0xFF); arry[1] = (byte)((m & 0xFF00) >> 8); arry[2] = (byte)((m & 0xFF0000) >> 16); arry[3] = (byte)((m >> 24) & 0xFF); sTimeSpan = arry[0].ToString("X2") + arry[1].ToString("X2") + arry[2].ToString("X2") + arry[3].ToString("X2"); if (sTimeSpan.Length >= 8) { sTimeSpan = sTimeSpan.Substring(0, 8); } else { sTimeSpan = Guid.NewGuid().ToString().Substring(0, 8); //sTimeSpan = "00000000"; } Id = sOidBeginsWith + sTimeSpan; Id += "AA"; Id += "AA01"; int maxId = 1; Random random = new Random(Guid.NewGuid().GetHashCode()); maxId = random.Next(10); Id += (maxId + 1).ToString("X4"); Id += "0000"; } catch { return Id; } return Id; } /// /// 群控名称 /// //public string name = string.Empty; /// /// 群控类型 /// public string type = string.Empty; /// /// 房间uid /// [Newtonsoft.Json.JsonIgnore] public List uids = new List(); //public List roomIds = new List(); /// /// 群控功能sid配置 /// public List sids = new List(); /// /// 获取设备添加到房间的房间名称 /// /// public string GetUidListName() { string roomNameList = ""; foreach (var roomId in uids) { var findRoom = SpatialInfo.CurrentSpatial.RoomList.Find(obj => obj.roomId == roomId); if (findRoom == null) { continue; } if (roomNameList != "") { roomNameList += ","; } roomNameList += findRoom.floorName + "-" + findRoom.roomName; } if (roomNameList == "") { roomNameList = Language.StringByID(StringId.WholeZone); } return roomNameList; } /// /// 群控控制 /// /// public void Control(Dictionary pairs) { try { if (DriverLayer.Control.Ins.GatewayOnline_Local) { var functionControlDataObj = GetGatewayAlinkControlData(pairs); var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj); var sendBytes = DriverLayer.Control.Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlGroupControlTopic, functionControlDataJson); new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, 3); MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}"); } else { var controlValues = new Dictionary(); foreach (var p in pairs) { controlValues.Add("key", p.Key); controlValues.Add("value", p.Value); } var pack = ApiUtlis.Ins.HttpRequest.ControlGroupControl(userDeviceGroupControlId, controlValues); if (pack != null) { if (pack.Code == StateCode.SUCCESS) { //DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl. } else { MainPage.Log($"群控控制失败,Code: {pack.Code}"); } } } } catch (Exception ex){ MainPage.Log($"群控控制失败: {ex.Message}"); } } public new List attributes { get { var list = new List(); foreach (var temp in sids) { var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid); if (light != null) { foreach(var attr in light.attributes) { if(list.Find((obj)=>obj.key == attr.key) == null) { list.Add(attr); } } } } return list; } } } public class GroupControlFunction { /// /// 功能sid /// public string sid = string.Empty; /// /// 功能spk /// public string spk = string.Empty; } public class GroupControlType { /// /// 类型 /// public string type = string.Empty; /// /// 类型名称 /// public string typeName = string.Empty; /// /// 群控支持的spk /// public List spks = new List(); /// /// 群控支持的spk属性 /// public List spkAttrs = new List(); } }