| | |
| | | DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区 |
| | | return startTime.AddMilliseconds(Convert.ToDouble(time_stamp)).ToString("s"); |
| | | } |
| | | catch { |
| | | catch |
| | | { |
| | | return DateTime.MinValue.ToString("s"); |
| | | } |
| | | } |
| | |
| | | /// <returns></returns> |
| | | public FunctionAttributes GetAttribute(string key) |
| | | { |
| | | var attr = attributes.Find((a) => a.key == key); |
| | | var attr = GetFunctionAttributes().Find((a) => a.key == key); |
| | | return attr; |
| | | } |
| | | |
| | |
| | | /// 获取属性当前状态 |
| | | /// </summary> |
| | | /// <param name="key"></param> |
| | | /// <param name="defaultValue">默认值</param> |
| | | /// <returns></returns> |
| | | public string GetAttrState(string key , string defaultValue = "0") |
| | | public string GetAttrState(string key, string defaultValue = "0") |
| | | { |
| | | //一级查询keyValue值 |
| | | var attrState = attributes.Find((s) => s.key == key.ToString()); |
| | |
| | | if (string.IsNullOrEmpty(attrState.state)) |
| | | { |
| | | //二级查询keyValue值 |
| | | return GetOriginalState(key); |
| | | return GetOriginalState(key, defaultValue); |
| | | } |
| | | return attrState.state; |
| | | } |
| | |
| | | /// 默认值:0 |
| | | /// </summary> |
| | | /// <param name="key">语雀定义的属性值</param> |
| | | /// <param name="defaultValue">默认值</param> |
| | | /// <returns></returns> |
| | | public string GetOriginalState(string key) |
| | | public string GetOriginalState(string key, string defaultValue) |
| | | { |
| | | var originalState = status.Find((s) => s.key == key.ToString()); |
| | | if (originalState == null || string.IsNullOrEmpty(originalState.value)) |
| | | { |
| | | return "0"; |
| | | return defaultValue; |
| | | } |
| | | return originalState.value; |
| | | } |
| | | /// <summary> |
| | | /// 设置属性状态 |
| | | /// </summary> |
| | | /// <param name="key"></param> |
| | | /// <param name="value"></param> |
| | | /// <param name="setKey"></param> |
| | | /// <param name="setValues"></param> |
| | | /// <returns>修改结果</returns> |
| | | public bool SetAttrState(string key, object value) |
| | | public bool SetAttrState(string setKey, object setValues) |
| | | { |
| | | var attr = attributes.Find((s) => s.key == key); |
| | | var attr = attributes.Find((s) => s.key == setKey); |
| | | if (attr == null) |
| | | { |
| | | switch (setKey) |
| | | { |
| | | case FunctionAttributeKey.CoolTemperatrue: |
| | | case FunctionAttributeKey.HeatTemperatrue: |
| | | case FunctionAttributeKey.AutoTemperatrue: |
| | | case FunctionAttributeKey.DehumiTemperatrue: |
| | | attributes.Add(new FunctionAttributes() |
| | | { |
| | | key = setKey, |
| | | state = setValues.ToString(), |
| | | curValue = setValues.ToString(), |
| | | }); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | attr.state = value.ToString(); |
| | | attr.curValue = value.ToString(); |
| | | attr.state = setValues.ToString(); |
| | | attr.curValue = setValues.ToString(); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | string iconPath = spk.Replace(".", ""); |
| | | switch (spk) |
| | | { |
| | | case SPK.SensorDryContact2: |
| | | case SPK.OtherCommon: |
| | | iconPath = "sensordryContact"; |
| | | break; |
| | | //case SPK.SensorLight: |
| | | // iconPath = "lightswitch"; |
| | | // break; |
| | | case SPK.AirSwitchP3: |
| | | iconPath = "electricalbreaker"; |
| | | break; |
| | | case SPK.PanelSocket: |
| | | iconPath = "electricalsocket"; |
| | | break; |
| | |
| | | case SPK.HvacAirFresh: |
| | | iconPath = "airFreshstandard"; |
| | | break; |
| | | case SPK.HvacAirFreshJinmao: |
| | | iconPath = "airFreshjinmao"; |
| | | break; |
| | | case SPK.HvacAC: |
| | | case SPK.HvacAcPanel: |
| | | iconPath = "acstandard"; |
| | | break; |
| | | case SPK.HvacFan: |
| | | iconPath = "electricalfan"; |
| | | break; |
| | | case SPK.HvacFloorHeat: |
| | | case SPK.HvacFloorHeatPanel: |
| | | iconPath = "floorHeatstandard"; |
| | | break; |
| | | case SPK.ElectricTuyaFan2: |
| | |
| | | public Dictionary<string, byte> Fh_Mode_Temp = new Dictionary<string, byte>(); |
| | | #endregion |
| | | |
| | | |
| | | #region base info |
| | | public string sid = "0301011234567801012301230123"; |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public string extDevId = string.Empty; |
| | | /// <summary> |
| | | /// 物理设备(模块)型号 |
| | | /// </summary> |
| | | public string omodel = string.Empty; |
| | | /// <summary> |
| | | /// 设备spk |
| | | /// </summary> |
| | | public string spk = ""; |
| | | /// <summary> |
| | | /// 扩展信息 |
| | | /// 字符串 |
| | | /// </summary> |
| | | public string extend = ""; |
| | | |
| | | private string _SpkCategory = string.Empty; |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public List<FunctionAttributes> attributes = new List<FunctionAttributes>(); |
| | | |
| | | public List<FunctionAttributes> GetFunctionAttributes() |
| | | { |
| | | if (spk == SPK.GroupControl) |
| | | { |
| | | var list = new List<FunctionAttributes>(); |
| | | var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid); |
| | | if (gc != null) |
| | | { |
| | | foreach (var temp in gc.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; |
| | | } |
| | | else |
| | | { |
| | | return attributes; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 房间ID列表 |
| | | /// 该功能添加到到房间列表 |
| | |
| | | /// </summary> |
| | | public bool collect = false; |
| | | |
| | | private bool _online = false; |
| | | /// <summary> |
| | | /// 是否在线 |
| | | /// </summary> |
| | | private bool _online; |
| | | public bool online |
| | | { |
| | | get |
| | | { |
| | | if (spk == SPK.AirSwitchP3 || spk == SPK.ElectricalTvHisense) |
| | | { |
| | | return _online; |
| | | } |
| | | return true; |
| | | } |
| | | set |
| | | { |
| | | _online = value; |
| | | } |
| | | } |
| | | ///// <summary> |
| | | ///// 是否在线 |
| | | ///// </summary> |
| | | //public bool online |
| | | //{ |
| | | // get |
| | | // { |
| | | // if(spk == SPK.AirSwitchP3) |
| | | // { |
| | | // return _online; |
| | | // } |
| | | // return true; |
| | | // } |
| | | // set |
| | | // { |
| | | // _online = value; |
| | | // } |
| | | //} |
| | | |
| | | public bool isOnline() |
| | | { |
| | | if (spk == SPK.AirSwitchP3) |
| | | { |
| | | return online; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | public void setOnine(bool isOnline) |
| | | { |
| | | online = isOnline; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | #endregion |
| | | |
| | | |
| | | //public void |
| | | |
| | | |
| | | /// <summary> |
| | | /// 延时 |
| | | /// </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] |
| | |
| | | SetAttrState(sta.key, sta.value); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 功能列表排序 |
| | | /// </summary> |
| | | public int FunctionOrderNumber = 9999; |
| | | /// <summary> |
| | | /// 房间列表排序 |
| | | /// </summary> |
| | | public int RoomOrderNumber = 9999; |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | if (collect) |
| | | if (spk == SPK.GroupControl) |
| | | { |
| | | result = ApiUtlis.Ins.HttpRequest.CollectDevice(deviceId).Code; |
| | | 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 |
| | | { |
| | | result = ApiUtlis.Ins.HttpRequest.CancelCollectDevice(deviceId).Code; |
| | | 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(); |
| | | }); |
| | | } |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | this.SaveFunctionFile(); |
| | | UI.HomePage.RefreshFunctionView(); |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | |
| | | /// <summary> |
| | | /// 保存房间绑定信息 |
| | | /// </summary> |
| | | public void UpdataRoomIds() |
| | | public async void UpdataRoomIds() |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | |
| | | public SceneFunction ConvertSceneFunction() |
| | | { |
| | | var sFunc = new SceneFunction(); |
| | | foreach (var attr in attributes) |
| | | |
| | | var list = new List<FunctionAttributes>(); |
| | | if (spk == SPK.GroupControl) |
| | | { |
| | | lock (list) |
| | | { |
| | | var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid); |
| | | if (gc != null) |
| | | { |
| | | foreach (var temp in gc.sids) |
| | | { |
| | | var tempDevice = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid); |
| | | if (tempDevice != null) |
| | | { |
| | | foreach (var attr in tempDevice.attributes) |
| | | { |
| | | if (list.Find((obj) => obj.key == attr.key) == null) |
| | | { |
| | | list.Add(attr); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else if (spk == SPK.MusicStandard || spk == SPK.AvMusic) |
| | | { |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.OnOff, |
| | | curValue = string.Empty, |
| | | }); |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.Volume, |
| | | curValue = string.Empty, |
| | | }); |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.SongName, |
| | | curValue = string.Empty, |
| | | }); |
| | | |
| | | } |
| | | else if (spk == SPK.ElectricalTvHisense) |
| | | { |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.OnOff, |
| | | curValue = string.Empty, |
| | | }); |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.SetVolume, |
| | | curValue = string.Empty, |
| | | }); |
| | | list.Add(new FunctionAttributes |
| | | { |
| | | key = FunctionAttributeKey.Signal, |
| | | curValue = string.Empty, |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | list.AddRange(attributes); |
| | | } |
| | | |
| | | foreach (var attr in list) |
| | | { |
| | | if (attr.key == FunctionAttributeKey.ColorfulBegin || attr.key == FunctionAttributeKey.ColorfulEnd || attr.key == FunctionAttributeKey.ColorfulTime) |
| | | { |
| | | continue; |
| | | } |
| | | //窗帘同时发送开关跟百分比会有问题, |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | else if (spk == SPK.GroupControl) |
| | | { |
| | | sFunc.type = "5"; |
| | | } |
| | | |
| | | switch (attr.key) |
| | | { |
| | | case FunctionAttributeKey.SetTemp: |
| | | var tt = GetAttribute(FunctionAttributeKey.TempType); |
| | | if (tt == null) |
| | | { |
| | | attr.unit = "°C"; |
| | | } |
| | | else |
| | | { |
| | | if (tt.unit == string.Empty) |
| | | { |
| | | attr.unit = "°C"; |
| | | } |
| | | else |
| | | { |
| | | if (tt.unit == "C") |
| | | { |
| | | attr.unit = "°C"; |
| | | } |
| | | else if (tt.unit == "F") |
| | | { |
| | | attr.unit = "°F"; |
| | | } |
| | | else |
| | | { |
| | | attr.unit = tt.unit; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case FunctionAttributeKey.RoomTemp: |
| | | attr.unit = "°C"; |
| | | var tempType = attributes.Find((obj) => obj.key == FunctionAttributeKey.TempType); |
| | | if (tempType != null) |
| | | { |
| | | attr.unit = tempType.curValue.ToString(); |
| | | } |
| | | break; |
| | | case FunctionAttributeKey.Percent: |
| | | case FunctionAttributeKey.Brightness: |
| | | attr.unit = "%"; |
| | | break; |
| | | case FunctionAttributeKey.CCT: |
| | | attr.unit = "K"; |
| | | break; |
| | | case FunctionAttributeKey.Angle: |
| | | attr.unit = "°"; |
| | | break; |
| | | } |
| | | |
| | | |
| | | switch (attr.key) |
| | | { |
| | | case FunctionAttributeKey.SongName: |
| | | case FunctionAttributeKey.Volume: |
| | | case FunctionAttributeKey.SetVolume: |
| | | case FunctionAttributeKey.Signal: |
| | | case FunctionAttributeKey.OnOff: |
| | | case FunctionAttributeKey.Brightness: |
| | | case FunctionAttributeKey.Mode: |
| | |
| | | case FunctionAttributeKey.CCT: |
| | | case FunctionAttributeKey.RGB: |
| | | case FunctionAttributeKey.Angle: |
| | | case FunctionAttributeKey.Colorful: |
| | | case FunctionAttributeKey.ColorfulBegin: |
| | | case FunctionAttributeKey.ColorfulEnd: |
| | | case FunctionAttributeKey.ColorfulTime: |
| | | case "security": |
| | | //case FunctionAttributeKey.FadeTime: |
| | | if (attr.curValue.ToString() == "{}") |
| | | { |
| | | if (attr.key == FunctionAttributeKey.OnOff) |
| | | if (attr.key == FunctionAttributeKey.OnOff || attr.key == FunctionAttributeKey.Colorful) |
| | | { |
| | | attr.curValue = "off"; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | else if(attr.key == "security") |
| | | else if (attr.key == "security") |
| | | { |
| | | attr.curValue = "false"; |
| | | } |
| | |
| | | { |
| | | vv = 26; |
| | | } |
| | | sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min }); |
| | | sFunc.status.Add(new SceneFunctionStatus() |
| | | { |
| | | UintString = attr.unit, |
| | | 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 }); |
| | | sFunc.status.Add(new SceneFunctionStatus() |
| | | { |
| | | UintString = attr.unit, |
| | | key = attr.key, |
| | | value = attr.curValue.ToString(), |
| | | max = attr.max, |
| | | min = attr.min |
| | | }); |
| | | } |
| | | |
| | | break; |
| | | } |
| | | } |
| | |
| | | /// 更新时间 |
| | | /// </summary> |
| | | public DateTime refreshTime = DateTime.MinValue; |
| | | /// <summary> |
| | | /// 最后更新状态的时间 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public DateTime updateTime = DateTime.MinValue; |
| | | |
| | | /// <summary> |
| | | /// 获取本地控制数据 |
| | |
| | | /// 云端负责生成 |
| | | /// </summary> |
| | | public string deviceId = "0"; |
| | | /// <summary> |
| | | /// 在线状态 |
| | | /// </summary> |
| | | public bool online = true; |
| | | public List<AttributesStatus> status = new List<AttributesStatus>(); |
| | | } |
| | | /// <summary> |
| | |
| | | /// 当前值 |
| | | /// </summary> |
| | | public object curValue = new object(); |
| | | /// <summary> |
| | | /// 属性单位 |
| | | /// </summary> |
| | | public string unit = string.Empty; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public static class FunctionAttributeKey |
| | | { |
| | | #region 空调bus属性 |
| | | /// <summary> |
| | | /// 制冷模式温度 |
| | | /// </summary> |
| | | public const string CoolTemperatrue = "CoolTemperatrue"; |
| | | /// <summary> |
| | | /// 制热模式温度 |
| | | /// </summary> |
| | | public const string HeatTemperatrue = "HeatTemperatrue"; |
| | | /// <summary> |
| | | /// 自动模式温度 |
| | | /// </summary> |
| | | public const string AutoTemperatrue = "AutoTemperatrue"; |
| | | /// <summary> |
| | | /// 除湿模式温度 |
| | | /// </summary> |
| | | public const string DehumiTemperatrue = "DehumiTemperatrue"; |
| | | #endregion |
| | | |
| | | #region 空调bus属性 |
| | | /// <summary> |
| | | /// [4]普通:设置温度(摄氏0-100,华氏32-212)/功率值(0-10) (1byte) |
| | | /// </summary> |
| | | public const string NormalTemperatrue = "NormalTemperatrue"; |
| | | /// <summary> |
| | | /// [5]白天:设置温度(摄氏0-100,华氏32-212)/功率值(0-10) (1byte) |
| | | /// </summary> |
| | | public const string DayTemperatrue = "DayTemperatrue"; |
| | | /// <summary> |
| | | /// [6]夜晚:设置温度(摄氏0-100,华氏32-212)/功率值(0-10) (1byte) |
| | | /// </summary> |
| | | public const string NightTemperatrue = "NightTemperatrue"; |
| | | /// <summary> |
| | | /// [7]离开:设置温度(摄氏0-100,华氏32-212)/功率值(0-10) (1byte) |
| | | /// </summary> |
| | | public const string AwayTemperatrue = "AwayTemperatrue"; |
| | | #region 三相空开属性 |
| | | |
| | | |
| | | /// <summary> |
| | | /// A相功率 |
| | | /// </summary> |
| | | public const string PowerA = "power_a"; |
| | | /// <summary> |
| | | /// B相功率 |
| | | /// </summary> |
| | | public const string PowerB = "power_b"; |
| | | /// <summary> |
| | | /// C相功率 |
| | | /// </summary> |
| | | public const string PowerC = "power_c"; |
| | | /// <summary> |
| | | /// A相电压 |
| | | /// </summary> |
| | | public const string VoltageA = "voltage_a"; |
| | | /// <summary> |
| | | /// B相电压 |
| | | /// </summary> |
| | | public const string VoltageB = "voltage_b"; |
| | | /// <summary> |
| | | /// C相电压 |
| | | /// </summary> |
| | | public const string VoltageC = "voltage_c"; |
| | | /// <summary> |
| | | /// A相电流 |
| | | /// </summary> |
| | | public const string CurrentA = "current_a"; |
| | | /// <summary> |
| | | /// B相电流 |
| | | /// </summary> |
| | | public const string CurrentB = "current_b"; |
| | | /// <summary> |
| | | /// C相电流 |
| | | /// </summary> |
| | | public const string CurrentC = "current_c"; |
| | | /// <summary> |
| | | /// A相温度 |
| | | /// </summary> |
| | | public const string TempA = "temp_a"; |
| | | /// <summary> |
| | | /// B相温度 |
| | | /// </summary> |
| | | public const string TempB = "temp_b"; |
| | | /// <summary> |
| | | /// C相温度 |
| | | /// </summary> |
| | | public const string TempC = "temp_c"; |
| | | /// <summary> |
| | | /// 过流值 |
| | | /// </summary> |
| | | public const string MaxCurrent = "max_current"; |
| | | /// <summary> |
| | | /// 过温值 |
| | | /// </summary> |
| | | public const string MaxTemp = "max_temp"; |
| | | /// <summary> |
| | | /// A相电量 |
| | | /// </summary> |
| | | public const string ElectricityA = "electricity_a"; |
| | | /// <summary> |
| | | /// B相电量 |
| | | /// </summary> |
| | | public const string ElectricityB = "electricity_b"; |
| | | /// <summary> |
| | | /// C相电量 |
| | | /// </summary> |
| | | public const string ElectricityC = "electricity_c"; |
| | | |
| | | #endregion |
| | | #endregion |
| | | |
| | | |
| | | public const string _null = ""; |
| | | /// <summary> |
| | | /// 安防布防状态 |
| | |
| | | /// 亮度 |
| | | /// </summary> |
| | | public const string Brightness = "brightness"; |
| | | /// <summary> |
| | | /// 炫彩开关 |
| | | /// </summary> |
| | | public const string Colorful = "colorful"; |
| | | /// <summary> |
| | | /// 炫彩开启颜色 |
| | | /// </summary> |
| | | public const string ColorfulBegin = "colorful_begin"; |
| | | /// <summary> |
| | | /// 炫彩结束颜色 |
| | | /// </summary> |
| | | public const string ColorfulEnd = "colorful_end"; |
| | | /// <summary> |
| | | /// 炫彩运行时间 |
| | | /// </summary> |
| | | public const string ColorfulTime = "colorful_time"; |
| | | /// <summary> |
| | | /// 颜色 |
| | | /// </summary> |
| | |
| | | public const string Temperature = "temperature"; |
| | | public const string Hcho = "hcho"; |
| | | public const string Humidity = "humidity"; |
| | | /// <summary> |
| | | /// 照度 |
| | | /// </summary> |
| | | public const string Illuminance = "illuminance"; |
| | | public const string Pm25 = "pm25"; |
| | | public const string Pm10 = "pm10"; |
| | | public const string Tvoc = "tvoc"; |
| | | /// <summary> |
| | | /// 状态,传感器 |
| | |
| | | /// </summary> |
| | | public const string TotalElectricity = "total_electricity"; |
| | | |
| | | /// <summary> |
| | | /// 海信tv音量 |
| | | /// </summary> |
| | | public const string SetVolume = "set_volume"; |
| | | /// <summary> |
| | | /// 海信tv信号源(0:LiveTV;2:PS;3:HDMI_1;4:HDMI_2;5:HDMI_3;6:HDMI_4;11:AV;) |
| | | /// </summary> |
| | | public const string Signal = "signal"; |
| | | |
| | | /// <summary> |
| | | /// 音乐音量 |
| | | /// </summary> |
| | | public const string Volume = "volume"; |
| | | /// <summary> |
| | | /// 歌曲名 |
| | | /// </summary> |
| | | public const string SongName = "song_name"; |
| | | /// <summary> |
| | | /// 列表名 |
| | | /// </summary> |
| | | public const string PlaylistName = "playlist_name"; |
| | | /// <summary> |
| | | /// 播放路径 |
| | | /// </summary> |
| | | public const string Url = "url"; |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | |
| | | try |
| | | { |
| | | return Convert.ToByte(loopId, 16); |
| | | } catch |
| | | } |
| | | catch |
| | | { |
| | | return 0; |
| | | } |
| | |
| | | public static class SPK |
| | | { |
| | | /// <summary> |
| | | /// 未知SPK |
| | | /// (自定义) |
| | | /// </summary> |
| | | public const string NULL = "NULL"; |
| | | /// <summary> |
| | | /// 电梯 |
| | | /// </summary> |
| | | public const string Elevator = "Elevator"; |
| | | /// <summary> |
| | | /// 西墨可视对讲门口机 |
| | | /// (自定义) |
| | | /// </summary> |
| | | public const string LinphoneXiMo = "door.gate"; |
| | | /// <summary> |
| | | /// 群控(自定义) |
| | | /// </summary> |
| | | public const string GroupControl = "groupControl"; |
| | | /// <summary> |
| | | /// 通用开关 |
| | | /// </summary> |
| | | public const string OtherCommon = "other.common"; |
| | | /// <summary> |
| | | /// 序列 |
| | | /// </summary> |
| | | public const string CommonSeries = "other.series"; |
| | | /// <summary> |
| | | /// 大华摄像头 |
| | | /// </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 WaterHeaterJinmao = "electrical.water_heater.jinmao"; |
| | | /// <summary> |
| | | /// 逆变器/新能源 |
| | | /// 金茂 |
| | | /// </summary> |
| | | public const string InverterJinmao = "energy.inverter.jinmao"; |
| | | |
| | | /// <summary> |
| | | /// 门锁 |
| | | /// </summary> |
| | | public const string DoorLock = "security.door"; |
| | | |
| | | /// <summary> |
| | | /// 门锁spk列表 |
| | | /// </summary> |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 猫眼(旧spk) |
| | | /// </summary> |
| | | public const string Peephole = "peephole"; |
| | | |
| | | /// <summary> |
| | | /// 猫眼(新spk 暂时没用) |
| | | /// </summary> |
| | | //public const string PeepholeEz = "security.peephole.ez"; |
| | | /// <summary> |
| | | /// 萤石视频门锁 |
| | | /// </summary> |
| | | public const string VideoDoorLock = "security.door.ezviz"; |
| | | /// <summary> |
| | | /// 萤石摄像头 |
| | | /// </summary> |
| | | public const string Ev_Ipcam = "security.ipcam.ez"; |
| | | /// <summary> |
| | | /// 影音中控 |
| | | /// </summary> |
| | | public const string AvZkAiks = "av.zk.aiks"; |
| | | |
| | | /// <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> GetVideoControlsSPKList() |
| | | { |
| | | var list = new List<string> |
| | | { |
| | | AvZkAiks |
| | | }; |
| | | 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 HvacAC = "hvac.ac"; |
| | | /// <summary> |
| | | /// 面板空调 |
| | | /// </summary> |
| | | public const string HvacAcPanel = "hvac.ac_panel"; |
| | | /// <summary> |
| | | /// 毛细管空调 |
| | | /// </summaryc |
| | | public const string HvacCac = "hvac.cac"; |
| | | |
| | | /// <summary> |
| | | /// 空调spk列表 |
| | |
| | | var spkList = new List<string>(); |
| | | spkList.Add(AcStandard); |
| | | spkList.Add(HvacAC); |
| | | spkList.Add(HvacAcPanel); |
| | | spkList.Add(AcIr); |
| | | spkList.Add(HvacCac); |
| | | return spkList; |
| | | } |
| | | #endregion |
| | |
| | | /// 地暖 |
| | | /// </summary> |
| | | public const string HvacFloorHeat = "hvac.floorHeat"; |
| | | /// <summary> |
| | | /// 面板地暖 |
| | | /// </summary> |
| | | public const string HvacFloorHeatPanel = "hvac.floorHeat_panel"; |
| | | |
| | | /// <summary> |
| | | /// 地热spk列表 |
| | |
| | | { |
| | | var spkList = new List<string>(); |
| | | spkList.Add(FloorHeatStandard); |
| | | spkList.Add(HvacFloorHeat); |
| | | spkList.Add(HvacFloorHeat); spkList.Add(HvacFloorHeatPanel); |
| | | return spkList; |
| | | } |
| | | #endregion |
| | |
| | | /// 新风 |
| | | /// </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列表 |
| | |
| | | { |
| | | 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> |
| | |
| | | { |
| | | var spkList = new List<string>(); |
| | | spkList.Add(ElectricEnergy); |
| | | spkList.Add(AirSwitch); |
| | | spkList.Add(AirSwitchP3); |
| | | return spkList; |
| | | } |
| | | #endregion |
| | |
| | | /// (红外移动传感器) |
| | | /// </summary> |
| | | public const string SensorPir = "sensor.pir"; |
| | | /// <summary> |
| | | /// 人体存在传感器 |
| | | /// </summary> |
| | | public const string SensorPirHold = "sensor.pir_hold"; |
| | | /// <summary> |
| | | /// (门窗传感器) |
| | | /// </summary> |
| | |
| | | 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(SensorCO2); |
| | | spkList.Add(SensorTVOC); |
| | | spkList.Add(SensorHumidity); |
| | | spkList.Add(SensorEnvironment); |
| | | spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin); |
| | | spkList.Add(SensorEnvironment2); |
| | | spkList.Add(SensorEnvironment3); |
| | | spkList.Add(SensorHcho); |
| | | spkList.Add(SensorLight); |
| | | return spkList; |
| | | } |
| | | /// <summary> |
| | |
| | | spkList.Add(SensorTVOC); |
| | | spkList.Add(SensorHumidity); |
| | | spkList.Add(SensorHcho); |
| | | spkList.Add(SensorLight); |
| | | return spkList; |
| | | } |
| | | |
| | |
| | | public static List<string> EvironmentSensorList() |
| | | { |
| | | var spkList = new List<string>(); |
| | | spkList.Add(SensorEnvironment); |
| | | spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin); |
| | | spkList.Add(SensorEnvironment2); |
| | | spkList.Add(SensorEnvironment3); |
| | | |
| | | return spkList; |
| | | } |
| | | |
| | |
| | | #endregion |
| | | |
| | | #region 家电 |
| | | /// <summary> |
| | | /// 海信电视 |
| | | /// </summary> |
| | | public const string ElectricalTvHisense = "electrical.tv.hisense"; |
| | | /// <summary> |
| | | /// 家电、插座 |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// 红外热水器 |
| | | /// </summary> |
| | | public const string HeaterIr = " ir.water_heater"; |
| | | public const string HeaterIr = "ir.water_heater"; |
| | | /// <summary> |
| | | /// 红外风扇 |
| | | /// </summary> |
| | |
| | | /// 智能空开 |
| | | /// </summary> |
| | | public const string AirSwitch = "electrical.breaker"; |
| | | /// <summary> |
| | | /// 三相智能空开 |
| | | /// </summary> |
| | | public const string AirSwitchP3 = "electrical.breakerP3"; |
| | | |
| | | #region 涂鸦 |
| | | /// <summary> |
| | |
| | | spkList.Add(ElectricTuyaWaterValve); |
| | | spkList.Add(ElectricTuyaWaterValve2); |
| | | spkList.Add(AirSwitch); |
| | | spkList.Add(ElectricalTvHisense); |
| | | return spkList; |
| | | } |
| | | |
| | |
| | | /// <summary> |
| | | /// HDL可视对讲 |
| | | /// </summary> |
| | | public const string doorgate="door.gate"; |
| | | public const string doorgate = "door.gate"; |
| | | #endregion |
| | | |
| | | #region 第三方spk列表 |