using System;
|
using System.Collections.Generic;
|
|
namespace Shared
|
{
|
|
|
#region ■ 场景列表相关___________________________
|
|
#endregion
|
|
/// <summary>
|
///
|
/// </summary>
|
public class HDLLinkScene
|
{
|
/// <summary>
|
/// 场景sid
|
/// </summary>
|
public string sid = "";
|
/// <summary>
|
/// 场景名称
|
/// </summary>
|
public string name = "";
|
/// <summary>
|
/// 网关ID
|
/// </summary>
|
public string gatewayId = "";
|
/// <summary>
|
/// 云端oss存储图片的路径
|
/// </summary>
|
public string image = "";
|
/// <summary>
|
/// 所属房间列表
|
/// </summary>
|
public List<string> roomIds = new List<string> ();
|
/// <summary>
|
/// 延时
|
/// </summary>
|
public string delay = "0";
|
/// <summary>
|
/// 场景分组
|
/// </summary>
|
public string group = "1";
|
/// <summary>
|
/// 场景类型
|
/// </summary>
|
public SceneType sceneType = SceneType.OrdinaryScenes;
|
/// <summary>
|
/// 收藏标记
|
/// </summary>
|
public bool collect = false;
|
/// <summary>
|
/// 场景功能列表
|
/// </summary>
|
public List<SceneFunction> functions = new List<SceneFunction> ();
|
/// <summary>
|
/// 场景推送配置列表
|
/// </summary>
|
public List<ScenePushConfig> pushConfigs = new List<ScenePushConfig> ();
|
|
/// <summary>
|
/// 生成逻辑sid方法
|
/// </summary>
|
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;
|
}
|
}
|
|
|
/// <summary>
|
/// 场景功能对象
|
/// </summary>
|
public class SceneFunction
|
{
|
public string sid = "";
|
|
public List<SceneFunctionStatus> status = new List<SceneFunctionStatus> ();
|
/// <summary>
|
/// 功能延时
|
/// </summary>
|
public string delay = "0";
|
|
//Function _localFunction;
|
///// <summary>
|
///// 本地对应的功能
|
///// </summary>
|
//[Newtonsoft.Json.JsonIgnore]
|
//public Function localFunction {
|
// get {
|
// if (_localFunction == null) {
|
// _localFunction = ConvertFunctionObject ();
|
// }
|
// return _localFunction;
|
// }
|
//}
|
|
///// <summary>
|
///// 转换成功能对象
|
///// </summary>
|
///// <returns></returns>
|
//Function ConvertFunctionObject ()
|
//{
|
// var localFunction = FunctionList.List.GetDeviceFunctionList ().Find ((obj) => obj.sid == sid);
|
// return localFunction;
|
//}
|
|
}
|
|
/// <summary>
|
/// 场景功能属性
|
/// </summary>
|
public class SceneFunctionStatus
|
{
|
public string key = "";
|
public string value = "";
|
}
|
/// <summary>
|
/// 场景推送配置
|
/// </summary>
|
public class ScenePushConfig
|
{
|
/// <summary>
|
/// 推送方式
|
/// </summary>
|
public string pushMethod = "";
|
/// <summary>
|
/// 推送内容
|
/// </summary>
|
public string pushContent = "";
|
/// <summary>
|
/// 推送目标集合
|
/// </summary>
|
public List<string> pushTarget = new List<string> ();
|
}
|
}
|