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
|
{
|
/// <summary>
|
/// 读取服务器空间信息返回到数据包
|
/// </summary>
|
public class DevcieApiPack
|
{
|
public List<Function> list = new List<Function>();
|
|
public string totalCount = "0";
|
|
public string totalPage = "0";
|
|
public string pageNo = "0";
|
|
public string pageSize = "0";
|
|
}
|
/// <summary>
|
/// 属性状态
|
/// </summary>
|
public class AttrState
|
{
|
/// <summary>
|
/// 属性键名
|
/// </summary>
|
public string key;
|
/// <summary>
|
/// 属性的值列表
|
/// </summary>
|
public List<string> value = new List<string>();
|
/// <summary>
|
/// 最大值
|
/// </summary>
|
public int max = 100;
|
/// <summary>
|
/// 最小值
|
/// </summary>
|
public int min = 0;
|
/// <summary>
|
/// 数据类型
|
/// </summary>
|
public string data_type = "";
|
/// <summary>
|
/// 当前值
|
/// </summary>
|
public string curValue = "";
|
}
|
|
/// <summary>
|
/// 功能类能满足数据使用要求,子类只是为了方便使用属性
|
/// </summary>
|
public class Function
|
{
|
public Function()
|
{
|
}
|
|
#region 优化区域 2021-02-25
|
/// <summary>
|
/// 更新的最后时间
|
/// </summary>
|
public string time_stamp = "1615261019796";
|
|
public string GeteTime()
|
{
|
try
|
{
|
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区
|
return startTime.AddMilliseconds(Convert.ToDouble(time_stamp)).ToString("s");
|
}
|
catch {
|
return DateTime.MinValue.ToString("s");
|
}
|
}
|
/// <summary>
|
/// 获取属性列表
|
/// </summary>
|
/// <returns></returns>
|
public List<string> GetAttributes()
|
{
|
var attrs = new List<string>();
|
|
foreach (var attr in attributes)
|
{
|
attrs.Add(attr.key);
|
}
|
return attrs;
|
}
|
/// <summary>
|
/// 获取指定属性
|
/// </summary>
|
/// <returns></returns>
|
public FunctionAttributes GetAttribute(string key)
|
{
|
var attr = attributes.Find((a) => a.key == key);
|
return attr;
|
}
|
|
/// <summary>
|
/// 获取属性当前状态
|
/// </summary>
|
/// <param name="key"></param>
|
/// <returns></returns>
|
public string GetAttrState(string key , string defaultValue = "0")
|
{
|
//一级查询keyValue值
|
var attrState = attributes.Find((s) => s.key == key.ToString());
|
if (attrState == null)
|
{
|
return defaultValue;
|
}
|
if (string.IsNullOrEmpty(attrState.state))
|
{
|
//二级查询keyValue值
|
return GetOriginalState(key);
|
}
|
return attrState.state;
|
}
|
|
/// <summary>
|
/// 获取初始状态
|
/// 默认值:0
|
/// </summary>
|
/// <param name="key">语雀定义的属性值</param>
|
/// <returns></returns>
|
public string GetOriginalState(string key)
|
{
|
var originalState = status.Find((s) => s.key == key.ToString());
|
if (originalState == null || string.IsNullOrEmpty(originalState.value))
|
{
|
return "0";
|
}
|
return originalState.value;
|
}
|
/// <summary>
|
/// 设置属性状态
|
/// </summary>
|
/// <param name="key"></param>
|
/// <param name="value"></param>
|
/// <returns>修改结果</returns>
|
public bool SetAttrState(string key, object value)
|
{
|
var attr = attributes.Find((s) => s.key == key);
|
if (attr == null)
|
{
|
return false;
|
}
|
else
|
{
|
attr.state = value.ToString();
|
attr.curValue = value.ToString();
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// icon文件名称
|
/// </summary>
|
public string IconName
|
{
|
get
|
{
|
string iconPath = spk.Replace(".", "");
|
switch (spk)
|
{
|
case SPK.PanelSocket:
|
iconPath = "electricalsocket";
|
break;
|
case SPK.SenesorMegahealth2:
|
iconPath = "sensormegahealth";
|
break;
|
case SPK.SensorEnvironmentHailin:
|
iconPath = "sensorenvironment";
|
break;
|
case SPK.HvacAirFresh:
|
iconPath = "airFreshstandard";
|
break;
|
case SPK.HvacAirFreshJinmao:
|
iconPath = "airFreshjinmao";
|
break;
|
case SPK.HvacAC:
|
iconPath = "acstandard";
|
break;
|
case SPK.HvacFan:
|
iconPath = "electricalfan";
|
break;
|
case SPK.HvacFloorHeat:
|
iconPath = "floorHeatstandard";
|
break;
|
case SPK.ElectricTuyaFan2:
|
iconPath = "electricaltyqborgovyzytytz";
|
break;
|
case SPK.ElectricTuyaAirCleaner2:
|
iconPath = "electricalQ1RsefNf91tIXyyQ";
|
break;
|
case SPK.ElectricTuyaWaterValve2:
|
iconPath = "electricalkoiGhMKwLf2ZP81g";
|
break;
|
case SPK.ElectricTuyaWeepRobot2:
|
iconPath = "electricalai6HtccKFIw3dxo3";
|
break;
|
case SPK.AvMusic:
|
iconPath = "musicstandard";
|
break;
|
|
}
|
return iconPath;
|
}
|
}
|
|
|
/// <summary>
|
/// 版本数据列表
|
/// </summary>
|
public List<VersionInfo> versions = new List<VersionInfo>();
|
|
/// <summary>
|
/// 上一次打开的亮度
|
/// 灯光私有属性
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public int lastBrightness = 100;
|
|
/// <summary>
|
/// 工作模式对应的工作温度
|
/// 地热私有属性
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public Dictionary<string, byte> Fh_Mode_Temp = new Dictionary<string, byte>();
|
#endregion
|
|
|
#region base info
|
public string sid = "0301011234567801012301230123";
|
/// <summary>
|
/// 备注
|
/// </summary>
|
public string name = "";
|
/// <summary>
|
/// 设备绑定的homeId
|
/// </summary>
|
private string _homeId = "";
|
public string homeId
|
{
|
get
|
{
|
if (string.IsNullOrEmpty(_homeId))
|
{
|
return DB_ResidenceData.Instance.CurrentRegion.id;
|
}
|
else
|
{
|
return _homeId;
|
}
|
}
|
set
|
{
|
_homeId = value;
|
}
|
}
|
|
/// <summary>
|
/// 设备ID
|
/// 云端负责生成
|
/// </summary>
|
public string deviceId = "0";
|
/// <summary>
|
/// 第三方设备扩展id
|
/// </summary>
|
public string extDevId = string.Empty;
|
/// <summary>
|
/// 物理设备(模块)型号
|
/// </summary>
|
public string omodel =string.Empty;
|
/// <summary>
|
/// 设备spk
|
/// </summary>
|
public string spk = "";
|
|
private string _SpkCategory = string.Empty;
|
/// <summary>
|
/// spk 产品的品类
|
/// </summary>
|
public string SpkCategory
|
{
|
get
|
{
|
if (string.IsNullOrEmpty(_SpkCategory))
|
{
|
var arr = spk.Split(".");
|
if (arr.Length > 0)
|
{
|
_SpkCategory = arr[0];
|
}
|
}
|
return _SpkCategory;
|
}
|
}
|
|
private string _SpkClassification = string.Empty;
|
/// <summary>
|
/// spk 产品品类下的分类
|
/// </summary>
|
public string SpkClassification
|
{
|
get
|
{
|
if (string.IsNullOrEmpty(_SpkClassification))
|
{
|
var arr = spk.Split(".");
|
if (arr.Length > 1)
|
{
|
_SpkClassification = arr[1];
|
}
|
}
|
return _SpkClassification;
|
}
|
}
|
|
string _SpkManufacturer = string.Empty;
|
/// <summary>
|
/// spk 产品的厂商
|
/// </summary>
|
public string SpkManufacturer
|
{
|
get
|
{
|
if (string.IsNullOrEmpty(_SpkManufacturer))
|
{
|
var arr = spk.Split(".");
|
if (arr.Length > 2)
|
{
|
_SpkManufacturer = arr[2];
|
}
|
}
|
return _SpkManufacturer;
|
}
|
}
|
|
|
//string spk_Prefix;
|
///// <summary>
|
///// spk前缀
|
///// 大类
|
///// 功能类别
|
///// 如:空调类、灯光类、窗帘类
|
///// </summary>
|
//public string Spk_Prefix
|
//{
|
// get
|
// {
|
// if (string.IsNullOrEmpty(spk_Prefix))
|
// {
|
// spk_Prefix = spk.Split(".")[0];
|
// }
|
// return spk_Prefix;
|
// }
|
//}
|
|
|
/// <summary>
|
/// A协议功能的特性
|
/// 如:是AC功能:特性:on_off,mode,fan,temperature
|
/// attri
|
/// </summary>
|
public List<FunctionAttributes> attributes = new List<FunctionAttributes>();
|
|
/// <summary>
|
/// 房间ID列表
|
/// 该功能添加到到房间列表
|
/// </summary>
|
public List<string> roomIds = new List<string>();
|
|
/// <summary>
|
/// 存储属性配置
|
/// 环境传感器的等级
|
/// </summary>
|
public List<AttrKeyConfig> attrKeyConfigs = new List<AttrKeyConfig>();
|
|
public List<AttrKeyConfig> GetAttrKeyConfigs(string key)
|
{
|
if (attrKeyConfigs.Count == 0)
|
{
|
switch (key)
|
{
|
case "pm2.5":
|
//
|
break;
|
}
|
}
|
return attrKeyConfigs;
|
}
|
|
/// <summary>
|
/// bus协议数据格式
|
/// 使用A协议控制时,改属性为空
|
/// </summary>
|
public BusData bus;
|
/// <summary>
|
/// 是否收藏
|
/// </summary>
|
public bool collect = false;
|
|
private bool _online = false;
|
/// <summary>
|
/// 是否在线
|
/// </summary>
|
public bool online
|
{
|
get
|
{
|
return true;
|
}
|
set
|
{
|
_online = value;
|
}
|
}
|
|
/// <summary>
|
/// 环境面板 绑定的 设备目标sid列表
|
/// </summary>
|
public List<string> targetSids = new List<string>();
|
/// <summary>
|
/// 云端数据创建的时间
|
/// </summary>
|
public string createTime = "";
|
/// <summary>
|
/// 云端数据修改的最后时间
|
/// </summary>
|
public string modifyTime = "";
|
|
/// <summary>
|
/// 扩展信息
|
/// </summary>
|
public ExtSet extSet = new ExtSet();
|
|
#endregion
|
|
|
//public void
|
|
|
/// <summary>
|
/// 延时
|
/// </summary>
|
public int delay = 0;
|
/// <summary>
|
/// 最后控制的一次状态
|
/// </summary>
|
[Newtonsoft.Json.JsonIgnore]
|
public string lastState = "";
|
/// <summary>
|
/// 获取状态显示文本
|
/// </summary>
|
/// <returns></returns>
|
public string GetLastStateText()
|
{
|
var text = "";
|
switch (spk)
|
{
|
case SPK.HvacCac:
|
switch (GetAttrState(FunctionAttributeKey.Mode))
|
{
|
case "cool":
|
text = Language.StringByID(StringId.Cool);
|
break;
|
case "heat":
|
text = Language.StringByID(StringId.Heat);
|
break;
|
}
|
|
break;
|
|
}
|
return text;
|
}
|
|
FunctionAttributes _trait_on_off;
|
[Newtonsoft.Json.JsonIgnore]
|
public FunctionAttributes trait_on_off
|
{
|
get
|
{
|
if (_trait_on_off == null)
|
{
|
_trait_on_off = attributes.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
|
//找不到属性需要声明一个,防止报错闪退
|
if (_trait_on_off == null)
|
{
|
_trait_on_off = new FunctionAttributes()
|
{
|
key = "on_off",
|
value = new List<string> { "on", "off" },
|
max = 1,
|
min = 0,
|
};
|
_trait_on_off.curValue = "off";
|
}
|
}
|
if (_trait_on_off.curValue.ToString() != "on" && _trait_on_off.curValue.ToString() != "off" && _trait_on_off.curValue.ToString() != "stop")
|
{
|
_trait_on_off.curValue = "off";
|
}
|
return _trait_on_off;
|
}
|
}
|
/// <summary>
|
/// 功能的属性状态列表
|
/// </summary>
|
public List<AttributesStatus> status = new List<AttributesStatus>();
|
/// <summary>
|
/// 通过状态列表组装属性里面的状态
|
/// </summary>
|
public void AssembleStatus()
|
{
|
foreach (var sta in status)
|
{
|
SetAttrState(sta.key, sta.value);
|
}
|
}
|
/// <summary>
|
/// 功能列表排序
|
/// </summary>
|
public int FunctionOrderNumber = 9999;
|
/// <summary>
|
/// 房间列表排序
|
/// </summary>
|
public int RoomOrderNumber = 9999;
|
|
|
/// <summary>
|
/// 使用次数
|
/// </summary>
|
public double controlCounter = 0;
|
/// <summary>
|
/// 使用频率
|
/// </summary>
|
public double usageFrequency
|
{
|
get
|
{
|
return controlCounter / 7;
|
}
|
}
|
/// <summary>
|
/// 固定的序号
|
/// </summary>
|
public int fixedSerialNumber = int.MaxValue;
|
|
/// <summary>
|
/// 收藏功能
|
/// </summary>
|
public void CollectFunction()
|
{
|
var result = "";
|
|
new System.Threading.Thread(() =>
|
{
|
if (spk == SPK.GroupControl) {
|
var groupControl = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
|
if (collect)
|
{
|
result = ApiUtlis.Ins.HttpRequest.CollectGroupControl(groupControl.userDeviceGroupControlId).Code;
|
}
|
else
|
{
|
result = ApiUtlis.Ins.HttpRequest.CancelCollectGroupControl(groupControl.userDeviceGroupControlId).Code;
|
}
|
}
|
else
|
{
|
if (collect)
|
{
|
result = ApiUtlis.Ins.HttpRequest.CollectDevice(deviceId).Code;
|
}
|
else
|
{
|
result = ApiUtlis.Ins.HttpRequest.CancelCollectDevice(deviceId).Code;
|
}
|
}
|
//提示错误
|
if (result != StateCode.SUCCESS)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
collect = !collect;
|
IMessageCommon.Current.ShowErrorInfoAlter(result);
|
});
|
} else
|
{
|
Application.RunOnMainThread(() =>
|
{
|
UI.HomePage.RefreshFunctionView();
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
/// <summary>
|
/// 编辑功能绑定房间信息
|
/// </summary>
|
public void EditBindRoomInfo(string roomId)
|
{
|
var result = "";
|
|
new System.Threading.Thread(() =>
|
{
|
if (collect)
|
{
|
result = ApiUtlis.Ins.HttpRequest.BindDeviceToRoom(new List<string>() { deviceId }, new List<string>() { roomId }).Code;
|
}
|
else
|
{
|
result = ApiUtlis.Ins.HttpRequest.UnbindDeviceToRoom(deviceId, roomId);
|
}
|
//提示错误
|
if (result != StateCode.SUCCESS)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
collect = !collect;
|
IMessageCommon.Current.ShowErrorInfoAlter(result);
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
public string GetBusId()
|
{
|
string busId = "";
|
if (bus != null)
|
{
|
busId = bus.SubnetID + "_" + bus.DeviceID + "_" + bus.LoopId;
|
}
|
return busId;
|
}
|
|
/// <summary>
|
/// 获取设备添加到房间的房间名称
|
/// </summary>
|
/// <returns></returns>
|
public string GetRoomListName()
|
{
|
string roomNameList = "";
|
foreach (var roomId in roomIds)
|
{
|
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>
|
[Newtonsoft.Json.JsonIgnore]
|
public string savePath
|
{
|
get
|
{
|
return "FunctionData_" + sid;
|
}
|
}
|
|
/// <summary>
|
/// 保存功能文件
|
/// </summary>
|
public void SaveFunctionFile()
|
{
|
var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
|
FileUtlis.Files.WriteFileByBytes(savePath, ssd);
|
}
|
/// <summary>
|
/// 保存房间绑定信息
|
/// </summary>
|
public void UpdataRoomIds()
|
{
|
new System.Threading.Thread(() =>
|
{
|
var pack = ApiUtlis.Ins.HttpRequest.UpdataDevcieBindRoomInfo(this);
|
//直接保存本地,
|
SaveFunctionFile();
|
if (pack.Code == StateCode.SUCCESS)
|
{
|
if (UI.RoomPage.bodyView != null)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
UI.RoomPage.bodyView.ReLoadPage();
|
});
|
}
|
}
|
else
|
{
|
IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
/// <summary>
|
/// 更新功能信息
|
/// </summary>
|
public void UpdataFuncitonInfo()
|
{
|
new System.Threading.Thread(() =>
|
{
|
var pm = new HttpServerRequest();
|
var pack = pm.UpdataDevcieInfo(this);
|
SaveFunctionFile();
|
if (pack.Code == StateCode.SUCCESS)
|
{
|
}
|
else
|
{
|
IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
/// <summary>
|
/// 更新功能名称
|
/// </summary>
|
public void UpdataFunctionName()
|
{
|
new System.Threading.Thread(() =>
|
{
|
var pm = new HttpServerRequest();
|
var pack = pm.UpdataDevcieInfo(this);
|
SaveFunctionFile();
|
if (pack.Code == StateCode.SUCCESS)
|
{
|
}
|
else
|
{
|
IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
/// <summary>
|
/// 转换成场景功能对象
|
/// </summary>
|
/// <returns></returns>
|
public SceneFunction ConvertSceneFunction()
|
{
|
var sFunc = new SceneFunction();
|
foreach (var attr in attributes)
|
{
|
//窗帘同时发送开关跟百分比会有问题,
|
if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex || spk == SPK.CurtainDream)
|
{
|
if (attr.key == FunctionAttributeKey.OnOff)
|
{
|
if (attributes.Find((obj) => obj.key == FunctionAttributeKey.Percent) != null)
|
{
|
continue;
|
}
|
}
|
}
|
|
switch (attr.key)
|
{
|
case FunctionAttributeKey.OnOff:
|
case FunctionAttributeKey.Brightness:
|
case FunctionAttributeKey.Mode:
|
case FunctionAttributeKey.SetTemp:
|
case FunctionAttributeKey.FanSpeed:
|
case FunctionAttributeKey.Percent:
|
case FunctionAttributeKey.CCT:
|
case FunctionAttributeKey.RGB:
|
case FunctionAttributeKey.Angle:
|
case "security":
|
//case FunctionAttributeKey.FadeTime:
|
if (attr.curValue.ToString() == "{}")
|
{
|
if (attr.key == FunctionAttributeKey.OnOff)
|
{
|
attr.curValue = "off";
|
}
|
else if (attr.key == FunctionAttributeKey.Mode)
|
{
|
if (DB_ResidenceData.Instance.GatewayType == 0)
|
{
|
attr.curValue = "0";
|
}
|
else
|
{
|
if (SPK.AcSpkList().Contains(spk))
|
{
|
attr.curValue = "cool";
|
}
|
else if (SPK.FhSpkList().Contains(spk))
|
{
|
attr.curValue = "day";
|
}
|
}
|
}
|
else if(attr.key == "security")
|
{
|
attr.curValue = "false";
|
}
|
else
|
{
|
attr.curValue = "0";
|
}
|
}
|
if (attr.key == FunctionAttributeKey.SetTemp)
|
{
|
double vv = 16;
|
Double.TryParse(attr.curValue.ToString(), out vv);
|
if (vv == 0)
|
{
|
vv = 26;
|
}
|
sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min });
|
}
|
else
|
{
|
sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
|
}
|
|
break;
|
}
|
}
|
sFunc.sid = this.sid;
|
return sFunc;
|
}
|
|
/// <summary>
|
/// 更新时间
|
/// </summary>
|
public DateTime refreshTime = DateTime.MinValue;
|
|
/// <summary>
|
/// 获取本地控制数据
|
/// </summary>
|
public AlinkFunctionStatusObj GetGatewayAlinkControlData(Dictionary<string, string> commandDictionary)
|
{
|
var sendDataObj = new AlinkFunctionStatusObj();
|
sendDataObj.id = Control.Ins.msg_id.ToString();
|
sendDataObj.time_stamp = Utlis.GetTimestamp();
|
var acd = new AlinkStatusData();
|
acd.sid = sid;
|
foreach (var dic in commandDictionary)
|
{
|
var aca = new AttributesStatus();
|
aca.key = dic.Key;
|
aca.value = dic.Value;
|
acd.status.Add(aca);
|
}
|
sendDataObj.objects.Add(acd);
|
return sendDataObj;
|
}
|
|
public AlinkDoorlockObj GetGatewayAlinkDoorlockData(string userId, string extStr)
|
{
|
var sendDataObj = new AlinkDoorlockObj();
|
sendDataObj.id = Control.Ins.msg_id.ToString();
|
sendDataObj.time_stamp = Utlis.GetTimestamp();
|
var acd = new AlinkDoorlockStatus();
|
acd.sid = sid;
|
acd.user_id = extStr;
|
acd.ext_str = extStr;
|
sendDataObj.objects.Add(acd);
|
return sendDataObj;
|
}
|
|
/// <summary>
|
/// 获取Api控制数据
|
/// </summary>
|
/// <returns></returns>
|
public ApiAlinkControlActionObj GetApiControlData(Dictionary<string, string> keyValues)
|
{
|
ApiAlinkControlActionObj aaao = new ApiAlinkControlActionObj();
|
aaao.deviceId = this.deviceId;
|
aaao.spk = this.spk;
|
aaao.bus = this.bus;
|
foreach (var kv in keyValues)
|
{
|
aaao.attributes.Add(new AttributesStatus()
|
{
|
key = kv.Key,
|
value = kv.Value,
|
});
|
}
|
return aaao;
|
}
|
}
|
|
/// <summary>
|
/// 远程控制
|
/// api a协议控制动作对象
|
/// </summary>
|
public class ApiAlinkControlActionObj
|
{
|
/// <summary>
|
/// 设备ID
|
/// </summary>
|
public string deviceId = "0";
|
/// <summary>
|
/// spk
|
/// 列:light.switch
|
/// </summary>
|
public string spk = "";
|
|
public List<AttributesStatus> attributes = new List<AttributesStatus>();
|
//[Newtonsoft.Json.JsonIgnore]
|
public BusData bus = new BusData();
|
}
|
|
/// <summary>
|
/// A协议控制数据的对象
|
/// </summary>
|
public class AlinkFunctionStatusObj
|
{
|
public List<AlinkStatusData> objects = new List<AlinkStatusData>();
|
|
public string time_stamp = "";
|
public string id = "";
|
}
|
/// <summary>
|
/// 门锁通讯数据
|
/// </summary>
|
public class AlinkDoorlockObj
|
{
|
public List<AlinkDoorlockStatus> objects = new List<AlinkDoorlockStatus>();
|
public string time_stamp = "";
|
public string id = "";
|
}
|
|
public class AlinkDoorlockStatus
|
{
|
public string sid;
|
public string user_id;
|
public string ext_str;
|
}
|
|
|
/// <summary>
|
/// 本地状态读取
|
/// A协议状态读取格式对象
|
/// </summary>
|
public class AlinkReadFunctionStatusObj
|
{
|
public string id = "0";
|
public List<Dictionary<string, string>> objects = new List<Dictionary<string, string>>();
|
public string time_stamp = "";
|
}
|
/// <summary>
|
/// A协议状态数据
|
/// </summary>
|
public class AlinkStatusData
|
{
|
/*
|
mqtt接收的状态数据没有deviceId
|
接口反馈的数据有
|
*/
|
/// <summary>
|
///
|
/// </summary>
|
public string sid = "";
|
/// <summary>
|
/// 设备ID
|
/// 云端负责生成
|
/// </summary>
|
public string deviceId = "0";
|
public List<AttributesStatus> status = new List<AttributesStatus>();
|
}
|
/// <summary>
|
/// 功能属性状态
|
/// </summary>
|
public class AttributesStatus
|
{
|
/// <summary>
|
/// 属性名
|
/// 列:on_off
|
/// </summary>
|
public string key = "";
|
/// <summary>
|
/// 属性值
|
/// 列:on
|
/// </summary>
|
public string value = "";
|
}
|
|
/// <summary>
|
/// 功能属性
|
/// 属性字段解析:attri :属性内容,value 属性的值,max 最大值 min 最小值
|
/// </summary>
|
[Serializable]
|
public class FunctionAttributes
|
{
|
/// <summary>
|
/// 属性键名
|
/// </summary>
|
public string key;
|
/// <summary>
|
/// 属性的值列表
|
/// </summary>
|
public List<string> value = new List<string>();
|
/// <summary>
|
/// 步进
|
/// 空调温度控制 0.5 1
|
/// </summary>
|
public string step = "1";
|
/// <summary>
|
/// 最大值
|
/// </summary>
|
public int max = 100;
|
/// <summary>
|
/// 最小值
|
/// </summary>
|
public int min = 0;
|
/// <summary>
|
/// 数据类型
|
/// </summary>
|
public string data_type = "";
|
/// <summary>
|
/// 当前状态
|
/// </summary>
|
public string state = "";
|
/// <summary>
|
/// 当前值
|
/// </summary>
|
public object curValue = new object();
|
}
|
|
/// <summary>
|
/// 功能属性键名列表
|
/// </summary>
|
public static class FunctionAttributeKey
|
{
|
public const string _null = "";
|
/// <summary>
|
/// 安防布防状态
|
/// </summary>
|
public const string Security = "security";
|
/// <summary>
|
/// 开关
|
/// </summary>
|
public const string OnOff = "on_off";
|
/// <summary>
|
/// 亮度
|
/// </summary>
|
public const string Brightness = "brightness";
|
/// <summary>
|
/// 颜色
|
/// </summary>
|
public const string RGB = "rgb";
|
public const string RGBW = "rgbw";
|
/// <summary>
|
/// 渐变时间
|
/// </summary>
|
public const string FadeTime = "fade_time";
|
/// <summary>
|
/// 模式
|
/// </summary>
|
public const string Mode = "mode";
|
/// <summary>
|
/// 扫风
|
/// </summary>
|
public const string Swing = "swing";
|
/// <summary>
|
/// 工作模式
|
/// 地热/地冷/功率地热/功率地冷
|
/// </summary>
|
public const string WorkMode = "mode_work";
|
/// <summary>
|
/// 风速
|
/// </summary>
|
public const string FanSpeed = "fan";
|
/// <summary>
|
/// 手动风向
|
/// </summary>
|
public const string FanManual = "fan_manual";
|
/// <summary>
|
/// 自动风向
|
/// </summary>
|
public const string FanAuto = "fan_auto";
|
|
/// <summary>
|
/// 设置温度
|
/// </summary>
|
public const string SetTemp = "set_temp";
|
/// <summary>
|
/// 温度加减
|
/// </summary>
|
public const string SetTempStep = "set_temp_step";
|
/// <summary>
|
/// 温度模式
|
/// 空调、地热//app自加
|
/// </summary>
|
public const string TempType = "temperature_type";
|
|
/// <summary>
|
/// 时间标记
|
/// 地热//app自加
|
/// </summary>
|
public const string TimeFlag = "time_flag";
|
/// <summary>
|
/// 延时
|
/// </summary>
|
public const string Delay = "delay";
|
/// <summary>
|
/// 色温
|
/// </summary>
|
public const string CCT = "cct";
|
/// <summary>
|
/// 百分比
|
/// </summary>
|
public const string Percent = "percent";
|
/// <summary>
|
/// 角度
|
/// </summary>
|
public const string Angle = "angle";
|
/// <summary>
|
/// 室内温度
|
/// </summary>
|
public const string RoomTemp = "room_temp";
|
/// <summary>
|
/// 室内湿度
|
/// </summary>
|
public const string RoomHumidity = "room_humidity";
|
/// <summary>
|
/// 露点温度
|
/// </summary>
|
public const string dew_point_temp = "dew_point_temp";
|
/// <summary>
|
/// 表面温度
|
/// </summary>
|
public const string surface_temp = "surface_temp";
|
/// <summary>
|
/// 室内湿度补偿值
|
/// </summary>
|
public const string room_humidity_cc = "room_humidity_cc";
|
/// <summary>
|
/// 室内温度补偿值
|
/// </summary>
|
public const string room_temp_cc = "room_temp_cc";
|
/// <summary>
|
/// 毛细阀门
|
/// </summary>
|
public const string cac_valve = "cac_valve";
|
/// <summary>
|
/// 地暖阀门
|
/// </summary>
|
public const string fh_valve = "fh_valve";
|
|
/// <summary>
|
/// value
|
/// </summary>
|
public const string Value = "value";
|
|
public const string Co2 = "co2";
|
public const string Temperature = "temperature";
|
public const string Hcho = "hcho";
|
public const string Humidity = "humidity";
|
public const string Pm25 = "pm25";
|
public const string Tvoc = "tvoc";
|
/// <summary>
|
/// 状态,传感器
|
/// </summary>
|
public const string Status = "status";
|
/// <summary>
|
/// 状态(有无人)
|
/// </summary>
|
public const string PeopleStatus = "people_status";
|
/// <summary>
|
/// 状态(报警)
|
/// </summary>
|
public const string AlarmStatus = "alarm_status";
|
/// <summary>
|
/// 状态(闭合、打开)
|
/// </summary>
|
public const string ContactStatus = "contact_status";
|
/// <summary>
|
/// 毫米波传感器,动作状态
|
/// </summary>
|
public const string ActionStatus = "action_state";
|
/// <summary>
|
///
|
/// </summary>
|
public const string PeopleNum = "people_num";
|
public const string PeopleId = "people_id";
|
/// <summary>
|
/// 毫米波传感器 人物动作
|
/// </summary>
|
public const string TargetStatus = "target_status";//0空,1走,2跑,3坐,4跌倒,5站
|
|
/// <summary>
|
/// 电量状态
|
/// </summary>
|
public const string BatteryState = "battery_state";
|
/// <summary>
|
/// 烘干
|
/// </summary>
|
public const string HotDry = "hot_dry";
|
/// <summary>
|
/// 风干
|
/// </summary>
|
public const string WindDry = "wind_dry";
|
/// <summary>
|
/// 消毒
|
/// </summary>
|
public const string Disinfect = "disinfect";
|
/// <summary>
|
/// 上升下降
|
/// </summary>
|
public const string Position = "position";
|
/// <summary>
|
/// 进度
|
/// </summary>
|
public const string PositionPercent = "position_percent";
|
/// <summary>
|
/// 烘干时间
|
/// </summary>
|
public const string HotDryTime = "hot_dry_time";
|
/// <summary>
|
/// 烘干剩余时间
|
/// </summary>
|
public const string HotDryTimeLeft = "hot_dry_time_surplus";
|
/// <summary>
|
/// 风干时间
|
/// </summary>
|
public const string WindDryTime = "wind_dry_time";
|
/// <summary>
|
/// 风干剩余时间
|
/// </summary>
|
public const string WindDryTimeLeft = "wind_dry_time_surplus";
|
/// <summary>
|
/// 消毒时间
|
/// </summary>
|
public const string DisinfectTime = "disinfect_time";
|
/// <summary>
|
/// 消毒剩余时间
|
/// </summary>
|
public const string DisinfectTimeLeft = "disinfect_time_surplus";
|
/// <summary>
|
/// 负离子
|
/// </summary>
|
public const string Anion = "anion";
|
/// <summary>
|
/// 负离子时间
|
/// </summary>
|
public const string AnionTime = "anion_time";
|
/// <summary>
|
/// 负离子剩余时间
|
/// </summary>
|
public const string AnionTimeLeft = "anion_time_surplus";
|
/// <summary>
|
/// 打开等级(风扇)
|
/// </summary>
|
public const string OpenLevel = "openLevel";
|
public const string fan_speed_percent = "fan_speed_percent";
|
/// <summary>
|
/// 红外按键
|
/// </summary>
|
public const string Key = "key";
|
|
/// <summary>
|
/// 节能
|
/// </summary>
|
public const string Energy = "energy";
|
/// <summary>
|
/// 室内温度
|
/// </summary>
|
public const string IndoorTemp = "indoor_temp";
|
/// <summary>
|
/// 室内湿度
|
/// </summary>
|
public const string IndoorHumidity = "indoor_humidity";
|
/// <summary>
|
/// 过滤网剩余量
|
/// </summary>
|
public const string FilterRemain = "filter_remain";
|
/// <summary>
|
/// 过滤网是否超时警告
|
/// </summary>
|
public const string FilterTimeout = "filter_timeout";
|
|
#region tuya
|
/// <summary>
|
/// 涂鸦水阀开启时间
|
/// </summary>
|
public const string TuyaWaterTime = "countdown_1";
|
#endregion
|
/// <summary>
|
/// 功率
|
/// </summary>
|
public const string Power = "power";
|
/// <summary>
|
/// 总电量
|
/// </summary>
|
public const string TotalElectricity = "total_electricity";
|
|
|
}
|
/// <summary>
|
/// 设备功能oid
|
/// </summary>
|
public class FunctionOid
|
{
|
public string oid;
|
public string name;
|
public string machine_id;
|
public string net_id;
|
public string dev_id;
|
public string channels;
|
}
|
|
/// <summary>
|
/// 兼容旧协议控制
|
/// </summary>
|
public class BusData
|
{
|
public string addresses = "FFFF";
|
[Newtonsoft.Json.JsonIgnore]
|
public byte SubnetID
|
{
|
get
|
{
|
return Convert.ToByte(addresses.Substring(0, 2), 16);
|
}
|
}
|
[Newtonsoft.Json.JsonIgnore]
|
public byte DeviceID
|
{
|
get
|
{
|
return Convert.ToByte(addresses.Substring(2, 2), 16);
|
}
|
}
|
public byte LoopId
|
{
|
get
|
{
|
try
|
{
|
return Convert.ToByte(loopId, 16);
|
} catch
|
{
|
return 0;
|
}
|
}
|
}
|
|
public string loopId;
|
}
|
/// <summary>
|
/// Tag 功能SPK
|
/// </summary>
|
public static class SPK
|
{
|
/// <summary>
|
/// 群控(自定义)
|
/// </summary>
|
public const string GroupControl = "GroupControl";
|
/// <summary>
|
/// 通用开关
|
/// </summary>
|
public const string OtherCommon = "other.common";
|
/// <summary>
|
/// 大华摄像头
|
/// </summary>
|
public const string IpCam_Imou = "security.ipcam.imou";
|
/// <summary>
|
/// 机械手
|
/// </summary>
|
public const string MechanicalArm = "electrical.mechanical_arm";
|
/// <summary>
|
/// 空调科技系统(绿建)
|
/// 总控
|
/// </summary>
|
public const string AcstParent = "acst.parent";
|
/// <summary>
|
/// 空调科技系统(绿建)
|
/// 子控
|
/// </summary>
|
public const string AcstSub = "acst.sub";
|
|
/// <summary>
|
/// 门锁
|
/// </summary>
|
public const string DoorLock = "security.door";
|
|
/// <summary>
|
/// 门锁spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> GetDoorLockSPKList()
|
{
|
var list = new List<string>();
|
list.Add(DoorLock);
|
return list;
|
}
|
|
|
/// <summary>
|
/// 猫眼
|
/// </summary>
|
public const string Peephole = "peephole";
|
/// <summary>
|
/// 萤石视频门锁
|
/// </summary>
|
public const string VideoDoorLock="security.door.ezviz";
|
/// <summary>
|
/// 萤石摄像头
|
/// </summary>
|
public const string Ev_Ipcam = "security.ipcam.ez";
|
/// <summary>
|
/// 萤石视频门锁spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> GetVideoDoorLockSPKList()
|
{
|
var list = new List<string>();
|
list.Add(VideoDoorLock);
|
return list;
|
}
|
|
/// <summary>
|
/// 萤石摄像头spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> GetEvIpcamSPKList()
|
{
|
var list = new List<string>();
|
list.Add(Ev_Ipcam);
|
return list;
|
}
|
|
#region 灯光
|
/// <summary>
|
/// (开关灯)
|
/// </summary>
|
public const string LightSwitch = "light.switch";
|
/// <summary>
|
/// (调光灯)
|
/// </summary>
|
public const string LightDimming = "light.dimming";
|
/// <summary>
|
/// (RGB灯)
|
/// </summary>
|
public const string LightRGB = "light.rgb";
|
/// <summary>
|
/// (RGBW灯)
|
/// </summary>
|
public const string LightRGBW = "light.rgbw";
|
/// <summary>
|
/// (CCT灯)
|
/// </summary>
|
public const string LightCCT = "light.cct";
|
|
/// <summary>
|
/// 灯光spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> LightSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(LightCCT);
|
spkList.Add(LightDimming);
|
spkList.Add(LightRGB);
|
spkList.Add(LightRGBW);
|
spkList.Add(LightSwitch);
|
return spkList;
|
}
|
#endregion
|
|
#region 窗帘
|
/// <summary>
|
/// (开关窗帘)
|
/// </summary>
|
public const string CurtainSwitch = "curtain.switch";
|
/// <summary>
|
/// (开合帘)
|
/// </summary>
|
public const string CurtainTrietex = "curtain.trietex";
|
/// <summary>
|
/// (百叶帘)
|
/// </summary>
|
public const string CurtainShades = "curtain.shades";
|
/// <summary>
|
/// (卷帘)
|
/// </summary>
|
public const string CurtainRoller = "curtain.roller";
|
/// <summary>
|
/// 梦幻帘
|
/// </summary>
|
public const string CurtainDream = "curtain.dream";
|
|
/// <summary>
|
/// 窗帘spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> CurtainSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(CurtainRoller);
|
spkList.Add(CurtainSwitch);
|
spkList.Add(CurtainShades);
|
spkList.Add(CurtainTrietex);
|
spkList.Add(CurtainDream);
|
return spkList;
|
}
|
#endregion
|
|
#region 空调
|
/// <summary>
|
/// (空调)
|
/// </summary>
|
public const string AcStandard = "ac.standard";
|
/// <summary>
|
/// (红外空调)
|
/// </summary>
|
public const string AcIr = "ir.ac";
|
/// <summary>
|
/// 空调
|
/// </summary>
|
public const string HvacAC = "hvac.ac";
|
/// <summary>
|
/// 毛细管空调
|
/// </summaryc
|
public const string HvacCac = "hvac.cac";
|
|
/// <summary>
|
/// 空调spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> AcSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(AcStandard);
|
spkList.Add(HvacAC);
|
spkList.Add(AcIr);
|
spkList.Add(HvacCac);
|
return spkList;
|
}
|
#endregion
|
|
#region 地热
|
/// <summary>
|
/// (地热)
|
/// </summary>
|
public const string FloorHeatStandard = "floorHeat.standard";
|
/// <summary>
|
/// 地暖
|
/// </summary>
|
public const string HvacFloorHeat = "hvac.floorHeat";
|
|
/// <summary>
|
/// 地热spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> FhSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(FloorHeatStandard);
|
spkList.Add(HvacFloorHeat);
|
return spkList;
|
}
|
#endregion
|
|
#region 新风
|
/// <summary>
|
/// (新风)
|
/// </summary>
|
public const string AirFreshStandard = "airFresh.standard";
|
/// <summary>
|
/// 新风
|
/// </summary>
|
public const string HvacAirFresh = "hvac.airFresh";
|
/// <summary>
|
/// 新风 ——金茂定制
|
/// </summary>
|
public const string AirFreshJinmao = "airFresh.jinmao";
|
/// <summary>
|
/// 新风 ——金茂定制
|
/// </summary>
|
public const string HvacAirFreshJinmao = "hvac.airFresh.jinmao";
|
|
/// <summary>
|
/// 新风spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> AirFreshSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(AirFreshStandard);
|
spkList.Add(AirFreshJinmao);
|
spkList.Add(HvacAirFresh);
|
spkList.Add(HvacAirFreshJinmao);
|
return spkList;
|
}
|
#endregion
|
|
#region 能源
|
/// <summary>
|
/// 逆变器
|
/// </summary>
|
public const string Inverter = "energy.inverter";
|
/// <summary>
|
/// 三相逆变器
|
/// </summary>
|
public const string InverterRst = "energy.inverter_rst";
|
/// <summary>
|
/// 能源模块
|
/// </summary>
|
public const string EnergyStandard = "energy.standard";
|
|
/// <summary>
|
/// 能源-电能
|
/// </summary>
|
public const string ElectricEnergy = "energy.electric";
|
/// <summary>
|
/// 能源spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> EnergySpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(ElectricEnergy);
|
return spkList;
|
}
|
#endregion
|
|
#region 音乐
|
/// <summary>
|
/// (音乐)
|
/// </summary>
|
public const string MusicStandard = "music.standard";
|
/// <summary>
|
/// 音乐
|
/// </summary>
|
public const string AvMusic = "av.music";
|
|
/// <summary>
|
/// 音乐spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> MusicSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(MusicStandard);
|
spkList.Add(AvMusic);
|
return spkList;
|
}
|
#endregion
|
|
#region 传感器
|
|
#region 安防传感器
|
/// <summary>
|
/// (亮度传感器)
|
/// </summary>
|
public const string SensorLight = "sensor.light";
|
/// <summary>
|
/// (红外移动传感器)
|
/// </summary>
|
public const string SensorPir = "sensor.pir";
|
/// <summary>
|
/// 人体存在传感器
|
/// </summary>
|
public const string SensorPirHold = "sensor.pir_hold";
|
/// <summary>
|
/// (门窗传感器)
|
/// </summary>
|
public const string SensorDoorWindow = "sensor.doorwindow";
|
/// <summary>
|
/// 烟雾传感器
|
/// </summary>
|
public const string SensorSmoke = "sensor.smoke";
|
/// <summary>
|
/// 水浸传感器
|
/// </summary>
|
public const string SensorWater = "sensor.water";
|
/// <summary>
|
/// 燃气传感器
|
/// </summary>
|
public const string SensorGas = "sensor.gas";
|
/// <summary>
|
/// 红外珊栏传感器
|
/// </summary>
|
public const string SensorShanLan = "sensor.shanlan";
|
/// <summary>
|
/// 红外对射传感器
|
/// </summary>
|
public const string SensorDuiShe = "sensor.duishe";
|
/// <summary>
|
/// 超声波传感器
|
/// </summary>
|
public const string SensorUtrasonic = "sensor.ultrasonic";
|
/// <summary>
|
/// (干接点)
|
/// </summary>
|
public const string SensorDryContact = "sensor.dryContact";
|
public const string SensorDryContact2 = "dryContact.standard";
|
/// <summary>
|
/// 毫米波传感器
|
/// </summary>
|
public const string SenesorMegahealth = "sensor.megahealth";
|
public const string SenesorMegahealth2 = "sensor.megahealth.zg";
|
/// <summary>
|
/// 毫米波传感器(姿态版)
|
/// </summary>
|
public const string SensorMmvPose = "sensor.mmv_pose";
|
/// <summary>
|
/// 紧急呼叫
|
/// </summary>
|
public const string SensorHelp = "sensor.help";
|
/// <summary>
|
/// 安防传感器spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> ArmSensorSpkList()
|
{
|
var spkList = new List<string>();
|
//spkList.Add(SensorLight);
|
spkList.Add(SensorPir);
|
spkList.Add(SensorPirHold);
|
spkList.Add(SensorHelp);
|
spkList.Add(SensorDoorWindow);
|
spkList.Add(SensorSmoke);
|
spkList.Add(SensorWater);
|
spkList.Add(SensorGas);
|
//spkList.Add(SensorShanLan);
|
//spkList.Add(SensorDuiShe);
|
//spkList.Add(SensoruUtrasonic);
|
spkList.Add(SensorDryContact);
|
spkList.Add(SensorDryContact2);
|
spkList.Add(SenesorMegahealth);
|
spkList.Add(SenesorMegahealth2);
|
spkList.Add(SensorMmvPose);
|
return spkList;
|
}
|
#endregion
|
|
public const string PanelEnvironment = "screen.panel";
|
/// <summary>
|
/// 面板spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> PanelSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(SensorHelp);
|
spkList.Add(PanelEnvironment);
|
return spkList;
|
}
|
|
#region 环境传感器
|
/// <summary>
|
/// (PM10传感器)
|
/// </summary>
|
public const string SensorPm10 = "sensor.pm10";
|
/// <summary>
|
/// (温度传感器)
|
/// </summary>
|
public const string SensorTemperature = "sensor.temperature";
|
/// <summary>
|
/// (PM2.5传感器)
|
/// </summary>
|
public const string SensorPm25 = "sensor.pm25";
|
/// <summary>
|
/// co2传感器
|
/// </summary>
|
public const string SensorCO2 = "sensor.co2";
|
/// <summary>
|
/// tvoc传感器
|
/// </summary>
|
public const string SensorTVOC = "sensor.tvoc";
|
/// <summary>
|
/// 湿度传感器
|
/// </summary>
|
public const string SensorHumidity = "sensor.humidity";
|
/// <summary>
|
/// 环境传感器
|
/// 环境检测传感器
|
/// 特殊类spk
|
/// 该spk功能是环境传感器功能的集成
|
/// </summary>
|
public const string SensorEnvironment = "sensor.environment";
|
/// <summary>
|
/// 青萍环境传感器
|
/// </summary>
|
public const string SensorEnvironment2 = "sensor.environment2";
|
/// <summary>
|
/// 青萍环境传感器
|
/// </summary>
|
public const string SensorEnvironment3 = "sensor.environment3";
|
public const string SensorEnvironmentHailin = "sensor.environment.hailin";
|
/// <summary>
|
/// 甲醛
|
/// </summary>
|
public const string SensorHcho = "sensor.hcho";
|
|
/// <summary>
|
/// 环境传感器设备spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> EnvironDeviceSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(SensorTemperature);
|
spkList.Add(SensorPm10);
|
spkList.Add(SensorPm25);
|
spkList.Add(SensorCO2);
|
spkList.Add(SensorTVOC);
|
spkList.Add(SensorHumidity);
|
spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
|
spkList.Add(SensorEnvironment2);
|
spkList.Add(SensorEnvironment3);
|
spkList.Add(SensorHcho);
|
return spkList;
|
}
|
/// <summary>
|
/// 环境传感器spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> EnvironSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(SensorTemperature);
|
spkList.Add(SensorPm10);
|
spkList.Add(SensorPm25);
|
spkList.Add(SensorCO2);
|
spkList.Add(SensorTVOC);
|
spkList.Add(SensorHumidity);
|
spkList.Add(SensorHcho);
|
return spkList;
|
}
|
|
/// <summary>
|
/// 环境传感器设备列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> EvironmentSensorList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin);
|
spkList.Add(SensorEnvironment2);
|
spkList.Add(SensorEnvironment3);
|
return spkList;
|
}
|
|
#endregion
|
#endregion
|
|
#region 家电
|
/// <summary>
|
/// 家电、插座
|
/// </summary>
|
public const string ElectricSocket = "electrical.socket";
|
/// <summary>
|
/// 面板、插座、面板
|
/// </summary>
|
public const string PanelSocket = "panel.socket";
|
/// <summary>
|
/// 家电、电视
|
/// </summary>
|
public const string ElectricTV = "electrical.tv";
|
/// <summary>
|
/// 红外、电视
|
/// </summary>
|
public const string TvIr = "ir.tv";
|
/// <summary>
|
/// 红外、小米电视
|
/// </summary>
|
public const string TvXmIr = "ir.tvxm";
|
/// <summary>
|
/// 家电、风扇
|
/// </summary>
|
public const string ElectricFan = "electrical.fan";
|
public const string HvacFan = "hvac.fan";
|
/// <summary>
|
/// 凉霸
|
/// </summary>
|
public const string ClothesHanger = "electrical.racks";
|
/// <summary>
|
/// 红外遥控器
|
/// </summary>
|
public const string IrLearn = "ir.learn";
|
/// <summary>
|
/// 红外投影仪
|
/// </summary>
|
public const string PjtIr = "ir.pjt";
|
/// <summary>
|
/// 红外机顶盒
|
/// </summary>
|
public const string StbIr = "ir.stb";
|
/// <summary>
|
/// 红外影碟机
|
/// </summary>
|
public const string DvDIr = "ir.dvd";
|
/// <summary>
|
/// 红外空气净化器
|
/// </summary>
|
public const string PurifierIr = "ir.air_purifier";
|
/// <summary>
|
/// 红外热水器
|
/// </summary>
|
public const string HeaterIr = " ir.water_heater";
|
/// <summary>
|
/// 红外风扇
|
/// </summary>
|
public const string FanIr = "ir.fan";
|
/// <summary>
|
/// 智能空开
|
/// </summary>
|
public const string AirSwitch = "electrical.breaker";
|
|
#region 涂鸦
|
/// <summary>
|
/// 家电、涂鸦空气净化器
|
/// </summary>
|
public const string ElectricTuyaAirCleaner = "electrical.Q1RsefNf91tIXyyQ";
|
public const string ElectricTuyaAirCleaner2 = "hvac.air.tuya_epi345";
|
/// <summary>
|
/// 家电、涂鸦电风扇
|
/// </summary>
|
public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
|
public const string ElectricTuyaFan2 = "hvac.fan.tuya_ef101";
|
/// <summary>
|
/// 家电、涂鸦扫地机器人
|
/// </summary>
|
public const string ElectricTuyaWeepRobot = "electrical.ai6HtccKFIw3dxo3";
|
public const string ElectricTuyaWeepRobot2 = "electrical.sweep.tuya";
|
/// <summary>
|
/// 家电、涂鸦水阀
|
/// </summary>
|
public const string ElectricTuyaWaterValve = "electrical.koiGhMKwLf2ZP81g";
|
public const string ElectricTuyaWaterValve2 = "electrical.watervalve.tuya_aw713";
|
#endregion
|
|
|
/// <summary>
|
/// 家电spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> ElectricalSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(ElectricSocket);
|
spkList.Add(PanelSocket);
|
spkList.Add(ElectricTV);
|
spkList.Add(TvIr);
|
spkList.Add(TvXmIr);
|
spkList.Add(ElectricFan);
|
spkList.Add(HvacFan);
|
spkList.Add(FanIr);
|
spkList.Add(ClothesHanger);
|
spkList.Add(IrLearn);
|
spkList.Add(PjtIr);
|
spkList.Add(StbIr);
|
spkList.Add(ElectricTuyaAirCleaner);
|
spkList.Add(ElectricTuyaAirCleaner2);
|
spkList.Add(ElectricTuyaFan);
|
spkList.Add(ElectricTuyaFan2);
|
spkList.Add(ElectricTuyaWeepRobot);
|
spkList.Add(ElectricTuyaWeepRobot2);
|
spkList.Add(ElectricTuyaWaterValve);
|
spkList.Add(ElectricTuyaWaterValve2);
|
spkList.Add(AirSwitch);
|
return spkList;
|
}
|
|
|
#endregion
|
|
#region 设备类
|
/// <summary>
|
/// 红外宝
|
/// </summary>
|
public const string IrModule = "ir.module";
|
|
/// <summary>
|
/// 设备类spk列表
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> DeviceSpkList()
|
{
|
var spkList = new List<string>();
|
spkList.Add(IrModule);
|
return spkList;
|
}
|
#endregion
|
|
#region 可视对讲
|
/// <summary>
|
/// HDL可视对讲
|
/// </summary>
|
public const string doorgate="door.gate";
|
#endregion
|
|
#region 第三方spk列表
|
/// <summary>
|
/// 获取所有第三方品牌功能的spk
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> GetAll3tySPK()
|
{
|
var spkList = new List<string>();
|
spkList.Add(ElectricTuyaAirCleaner);
|
spkList.Add(ElectricTuyaAirCleaner2);
|
spkList.Add(ElectricTuyaFan);
|
spkList.Add(ElectricTuyaFan2);
|
spkList.Add(ElectricTuyaWaterValve);
|
spkList.Add(ElectricTuyaWaterValve2);
|
spkList.Add(ElectricTuyaWeepRobot);
|
spkList.Add(ElectricTuyaWeepRobot2);
|
spkList.Add(SensorMmvPose);
|
spkList.Add(SenesorMegahealth);
|
spkList.Add(SenesorMegahealth2);
|
return spkList;
|
}
|
/// <summary>
|
/// 获取第三方设备spk
|
/// </summary>
|
/// <returns></returns>
|
public static List<string> Get3tySpk(BrandType brandType)
|
{
|
var list = new List<string>();
|
|
switch (brandType)
|
{
|
case BrandType.Tuya:
|
list.Add(ElectricTuyaAirCleaner);
|
list.Add(ElectricTuyaFan);
|
list.Add(ElectricTuyaWaterValve);
|
list.Add(ElectricTuyaWeepRobot);
|
list.Add(ElectricTuyaAirCleaner2);
|
list.Add(ElectricTuyaFan2);
|
list.Add(ElectricTuyaWaterValve2);
|
list.Add(ElectricTuyaWeepRobot2);
|
break;
|
case BrandType.All3tyBrand:
|
list.Add(SenesorMegahealth2);//兆观
|
break;
|
}
|
return list;
|
}
|
#endregion
|
|
/// <summary>
|
/// 没有状态显示的功能spk列表
|
/// </summary>
|
public static List<string> NotStatusSpkList = new List<string> {
|
ElectricTV, FanIr, TvIr, TvXmIr, StbIr, PjtIr, IrLearn
|
};
|
|
/// <summary>
|
/// 第三方品牌列表
|
/// </summary>
|
public enum BrandType
|
{
|
All = 0,
|
Hdl = 1,
|
Tuya = 2,
|
/// <summary>
|
/// 兆观
|
/// </summary>
|
Megahealth = 3,
|
|
|
All3tyBrand = 999,
|
}
|
|
|
}
|
|
|
///// <summary>
|
///// 功能类别
|
///// </summary>
|
//public static class FunctionCategory
|
//{
|
// /// <summary>
|
// ///(灯)
|
// /// </summary>
|
// public const string Light = "light";
|
// /// <summary>
|
// /// (窗帘)
|
// /// </summary>
|
// public const string Curtain = "curtain";
|
// /// <summary>
|
// /// (空调)
|
// /// </summary>
|
// public const string AC = "ac";
|
// /// <summary>
|
// /// (地热)
|
// /// </summary>
|
// public const string FloorHeat = "floorHeat";
|
// /// <summary>
|
// /// (新风)
|
// /// </summary>
|
// public const string AirFresh = "airFresh";
|
// /// <summary>
|
// /// (音乐)
|
// /// </summary>
|
// public const string Music = "music";
|
// /// <summary>
|
// /// (传感器)
|
// /// </summary>
|
// public const string Sensor = "sensor";
|
// /// <summary>
|
// /// (干接点)
|
// /// </summary>
|
// public const string DryContact = "dryContact";
|
// /// <summary>
|
// /// 家电
|
// /// </summary>
|
// public const string Electric = "electrical";
|
// /// <summary>
|
// /// 红外设备
|
// /// </summary>
|
// public const string IR = "ir";
|
|
|
|
|
//}
|
|
|
public class VersionInfo
|
{
|
public string module = "";
|
public string version = "";
|
}
|
|
/// <summary>
|
/// 功能属性相关配置信息
|
/// 环境传感器等级使用
|
/// </summary>
|
public class AttrKeyConfig
|
{
|
public string key = string.Empty;
|
/// <summary>
|
/// 配置类型
|
/// interval 区间
|
/// 目前只支持:interval
|
/// </summary>
|
public string type = string.Empty;
|
|
public string unit = string.Empty;
|
|
public List<AttrKeyInfo> configs = new List<AttrKeyInfo>();
|
|
}
|
|
public class AttrKeyInfo
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public string start = string.Empty;
|
/// <summary>
|
///
|
/// </summary>
|
public string end = string.Empty;
|
/// <summary>
|
///
|
/// </summary>
|
public string color = string.Empty;
|
/// <summary>
|
/// 描述
|
/// </summary>
|
public string desc = string.Empty;
|
}
|
|
/// <summary>
|
/// 扩展信息设置
|
/// </summary>
|
public class ExtSet
|
{
|
/// <summary>
|
/// 是否开启实验室模式
|
/// </summary>
|
public bool labModel = false;
|
}
|
}
|