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";
|
}
|
/// <summary>
|
/// 群控ID
|
/// </summary>
|
public string userDeviceGroupControlId = string.Empty;
|
/// <summary>
|
/// 群控sid
|
/// </summary>
|
//public string sid = string.Empty;
|
/// <summary>
|
/// 生成群控sid
|
/// </summary>
|
public string NewGroupControlSid()
|
{
|
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 = Guid.NewGuid().ToString().Substring(0, 8);
|
//sTimeSpan = "00000000";
|
}
|
|
sceneId = sOidBeginsWith + sTimeSpan;
|
|
sceneId += "AA";
|
sceneId += "AA01";
|
int maxId = 1;
|
|
Random random = new Random(Guid.NewGuid().GetHashCode());
|
maxId = random.Next(10);
|
|
sceneId += (maxId + 1).ToString("X4");
|
sceneId += "0000";
|
}
|
catch
|
{
|
return sceneId;
|
}
|
return sceneId;
|
}
|
/// <summary>
|
/// 群控名称
|
/// </summary>
|
//public string name = string.Empty;
|
/// <summary>
|
/// 群控类型
|
/// </summary>
|
public string type = string.Empty;
|
/// <summary>
|
/// 房间uid
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public List<string> uids = new List<string>();
|
//public List<String> roomIds = new List<string>();
|
/// <summary>
|
/// 群控功能sid配置
|
/// </summary>
|
public List<GroupControlFunction> sids = new List<GroupControlFunction>();
|
|
/// <summary>
|
/// 获取设备添加到房间的房间名称
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 群控控制
|
/// </summary>
|
/// <param name="pairs"></param>
|
public void Control(Dictionary<string,object> pairs)
|
{
|
try
|
{
|
|
if (DriverLayer.Control.Ins.GatewayOnline_Local)
|
{
|
var controlValues = new Dictionary<string, string>();
|
foreach (var p in pairs)
|
{
|
controlValues.Add("key", p.Key);
|
controlValues.Add("value", p.Value.ToString());
|
}
|
var functionControlDataObj = GetGatewayAlinkControlData(controlValues);
|
var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
|
var sendBytes = DriverLayer.Control.Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
|
new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, 3);
|
MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
|
}
|
else
|
{
|
|
var controlValues = new Dictionary<string, object>();
|
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 class GroupControlFunction
|
{
|
/// <summary>
|
/// 功能sid
|
/// </summary>
|
public string sid = string.Empty;
|
/// <summary>
|
/// 功能spk
|
/// </summary>
|
public string spk = string.Empty;
|
|
|
}
|
|
|
public class GroupControlType
|
{
|
/// <summary>
|
/// 类型
|
/// </summary>
|
public string type = string.Empty;
|
/// <summary>
|
/// 类型名称
|
/// </summary>
|
public string typeName = string.Empty;
|
/// <summary>
|
/// 群控支持的spk
|
/// </summary>
|
public List<string> spks = new List<string>();
|
/// <summary>
|
/// 群控支持的spk属性
|
/// </summary>
|
public List<string> spkAttrs = new List<string>();
|
}
|
}
|