| | |
| | | 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> |
| | | /// 功能类能满足数据使用要求,子类只是为了方便使用属性 |
| | |
| | | public Function() |
| | | { |
| | | } |
| | | |
| | | #region 优化区域 2021-02-25 |
| | | /// <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) |
| | | { |
| | | var attrState = status.Find((s) => s.key == key.ToString()); |
| | | if(attrState == null) |
| | | { |
| | | return ""; |
| | | } |
| | | return attrState.value; |
| | | } |
| | | /// <summary> |
| | | /// 设置属性状态 |
| | | /// </summary> |
| | | /// <param name="key"></param> |
| | | /// <param name="value"></param> |
| | | /// <returns>修改结果</returns> |
| | | public bool SetAttrState(string key, string value) |
| | | { |
| | | var attrState = status.Find((s) => s.key == key.ToString()); |
| | | if (attrState == null) |
| | | { |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | attrState.value = value; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region base info |
| | | /// <summary> |
| | |
| | | /// 09 安防 |
| | | /// 大类别 1bytes (预留) |
| | | /// 小类别 1byte (预留) |
| | | /// </summary> |
| | | /// </summary> “0001021599F98A04050300010000” |
| | | public string sid = "0301011234567801012301230123"; |
| | | /// <summary> |
| | | /// 备注 |
| | |
| | | /// 设备spk |
| | | /// </summary> |
| | | public string spk = ""; |
| | | ///// <summary> |
| | | ///// 功能类别 |
| | | ///// 如:空调类、灯光类、窗帘类 |
| | | ///// </summary> |
| | | //public FunctionCategory Spk_Prefix |
| | | //{ |
| | | // get |
| | | // { |
| | | // try |
| | | // { |
| | | // var _functionCategoryString = sid.Substring(16, 2); |
| | | // var _functionCategory = Convert.ToInt32(_functionCategoryString, 16); |
| | | // return (FunctionCategory)Enum.ToObject(typeof(FunctionCategory), _functionCategory); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // MainPage.Log($"get FunctionCategory error : {ex.Message}"); |
| | | // return FunctionCategory.UnKown; |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 功能类型 |
| | | ///// </summary> |
| | | //public FunctionType spk |
| | | //{ |
| | | // get |
| | | // { |
| | | // var _functionTypeString = sid.Substring(16, 4); |
| | | // return (FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(_functionTypeString, 16)); |
| | | // } |
| | | //} |
| | | |
| | | string spk_Prefix; |
| | | /// <summary> |
| | |
| | | return spk_Prefix; |
| | | } |
| | | } |
| | | string spk_Suffix; |
| | | ///// <summary> |
| | | ///// spk后缀 |
| | | ///// 小类 |
| | | ///// 功能类型 |
| | | ///// </summary> |
| | | //public string spk |
| | | //{ |
| | | // get |
| | | // { |
| | | // if (string.IsNullOrEmpty(spk_Suffix)) |
| | | // { |
| | | // try |
| | | // { |
| | | // spk_Suffix = spk.Split(".")[1]; |
| | | // } |
| | | // catch |
| | | // { |
| | | // spk_Suffix = ""; |
| | | // } |
| | | // } |
| | | // return spk_Suffix; |
| | | // } |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// A协议功能的特性 |
| | | /// 如:是AC功能:特性:on_off,mode,fan,temperature |
| | |
| | | /// 云端数据修改的最后时间 |
| | | /// </summary> |
| | | public string modifyTime = ""; |
| | | /// <summary> |
| | | /// 删除标记 |
| | | /// 需要删除数据时,标记为:true |
| | | /// 由云端删除成功之后,返回数据再清除本地数据 |
| | | /// </summary> |
| | | public bool DeleteSign = false; |
| | | |
| | | #endregion |
| | | /// <summary> |
| | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | /// <summary> |
| | | /// 保存功能数据 |
| | | /// </summary> |
| | | //public void SaveFunctionData(bool upSevser) |
| | | //{ |
| | | // if (upSevser) |
| | | // { |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // var pm = new HttpServerRequest(); |
| | | // var pack = pm.UpdataDevcieInfo(this); |
| | | // if (pack.Code == StateCode.SUCCESS) |
| | | // { |
| | | // var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | // FileUtlis.Files.WriteFileByBytes(savePath, ssd); |
| | | // } |
| | | // else |
| | | // { |
| | | // IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | // } |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | // else |
| | | // { |
| | | // var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | // FileUtlis.Files.WriteFileByBytes(savePath, ssd); |
| | | // } |
| | | //} |
| | | |
| | | |
| | | /// <summary> |
| | | /// 转换成场景功能对象 |
| | |
| | | /// 当前值 |
| | | /// </summary> |
| | | public object curValue = new object(); |
| | | ///// <summary>
|
| | | ///// curValue的翻译值,最坏的结果也只会返回string.Empty
|
| | | ///// </summary> |
| | | //public string realValue
|
| | | //{
|
| | | // get
|
| | | // {
|
| | | // var myValue = curValue.ToString();
|
| | | // //沙雕定义的object类型
|
| | | // if (myValue.Contains("{") == true) { return string.Empty; }
|
| | | // return myValue;
|
| | | // }
|
| | | //} |
| | | } |
| | | /// <summary> |
| | | /// 功能属性键名列表 |
| | |
| | | /// 状态,传感器 |
| | | /// </summary> |
| | | public const string Status = "status"; |
| | | /// <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"; |
| | | |
| | | |
| | | |
| | | #region tuya |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public const string TuyaWaterTime = "countdown_1"; |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 设备功能oid |
| | |
| | | /// </summary> |
| | | public const string SensorTemperature = "sensor.temperature"; |
| | | /// <summary> |
| | | /// (红外移动传感器) |
| | | /// </summary> |
| | | public const string SensorPir = "sensor.pir"; |
| | | /// <summary> |
| | | /// (门窗传感器) |
| | | /// </summary> |
| | | public const string SensorDoorWindow = "sensor.doorwindow"; |
| | | /// <summary> |
| | | /// (PM2.5传感器) |
| | | /// </summary> |
| | | public const string SensorPm25 = "sensor.pm25"; |
| | |
| | | /// </summary> |
| | | public const string SensorHumidity = "sensor.humidity"; |
| | | |
| | | /// <summary> |
| | | /// (红外移动传感器) |
| | | /// </summary> |
| | | public const string SensorPir = "sensor.pir"; |
| | | /// <summary> |
| | | /// (门窗传感器) |
| | | /// </summary> |
| | | public const string SensorDoorWindow = "sensor.doorwindow"; |
| | | /// <summary> |
| | | /// 烟雾传感器 |
| | | /// </summary> |
| | |
| | | /// 家电、涂鸦水阀 |
| | | /// </summary> |
| | | public const string ElectricTuyaWaterValve = "electrical.koiGhMKwLf2ZP81g"; |
| | | /// <summary> |
| | | /// 凉霸 |
| | | /// </summary> |
| | | public const string ClothesHanger = "electrical.racks"; |
| | | |
| | | |
| | | /// <summary> |