using System; using System.Collections.Generic; namespace Shared { #region ■ 场景列表相关___________________________ #endregion /// /// /// public class HDLLinkScene { /// /// 场景sid /// public string sid = ""; /// /// 场景名称 /// public string name = ""; /// /// 网关ID /// public string gatewayId = ""; /// /// 云端oss存储图片的路径 /// public string image = ""; /// /// 所属房间列表 /// public List roomIds = new List (); /// /// 延时 /// public string delay = "0"; /// /// 场景分组 /// public string group = "1"; /// /// 场景类型 /// public SceneType sceneType = SceneType.OrdinaryScenes; /// /// 收藏标记 /// public bool collect = false; /// /// 场景功能列表 /// public List functions = new List (); /// /// 场景推送配置列表 /// public List pushConfigs = new List (); /// /// 生成逻辑sid方法 /// public string NewSid () { string sceneId = ""; 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 = "00000000"; } sceneId = sOidBeginsWith + sTimeSpan; sceneId += "0A"; sceneId += "0A01"; int maxId = 1; Random random = new Random (Guid.NewGuid ().GetHashCode ()); maxId = random.Next (1000); //for (int i = 0; i < FunctionList.List.scenes.Count; i++) { // string s = FunctionList.List.scenes [i].sid.Substring (20, 4); // int iThisSceneId = Convert.ToInt16 (s, 16); // if (iThisSceneId > maxId) // maxId = iThisSceneId; //} sceneId += (maxId + 1).ToString ("X4"); sceneId += "0000"; } catch { return sceneId; } return sceneId; } } /// /// 场景功能对象 /// public class SceneFunction { public string sid = ""; public List status = new List (); /// /// 功能延时 /// public string delay = "0"; //Function _localFunction; ///// ///// 本地对应的功能 ///// //[Newtonsoft.Json.JsonIgnore] //public Function localFunction { // get { // if (_localFunction == null) { // _localFunction = ConvertFunctionObject (); // } // return _localFunction; // } //} ///// ///// 转换成功能对象 ///// ///// //Function ConvertFunctionObject () //{ // var localFunction = FunctionList.List.GetDeviceFunctionList ().Find ((obj) => obj.sid == sid); // return localFunction; //} } /// /// 场景功能属性 /// public class SceneFunctionStatus { public string key = ""; public string value = ""; } /// /// 场景推送配置 /// public class ScenePushConfig { /// /// 推送方式 /// public string pushMethod = ""; /// /// 推送内容 /// public string pushContent = ""; /// /// 推送目标集合 /// public List pushTarget = new List (); } }