| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Common; |
| | | using HDL_ON.DAL.Server; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public class SecurityAlarm |
| | | { |
| | | public SecurityAlarm() |
| | | { |
| | | pushConfigs.Add(new SecurityPushConfig() |
| | | { |
| | | pushMethod = "APP", |
| | | pushTarget = new List<string>() { UserInfo.Current.ID } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 安防云端id |
| | | /// </summary> |
| | | public string userSecurityId; |
| | | /// <summary> |
| | | /// 安防sid |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public string delay; |
| | | /// <summary> |
| | | /// 状态 enable布防、disable撒防 |
| | | /// 状态 |
| | | /// 布防:enable |
| | | /// 撒防:disable |
| | | /// </summary> |
| | | public string status; |
| | | public string status = "disable"; |
| | | /// <summary> |
| | | /// 报警状态 |
| | | /// </summary> |
| | | public bool alarm = false; |
| | | /// <summary> |
| | | /// 类型 |
| | | /// "all"--全宅布防, |
| | |
| | | /// "all_day":24小时, |
| | | /// "mute":静音 |
| | | /// </summary> |
| | | public string type; |
| | | public string type = "normal"; |
| | | /// <summary> |
| | | /// 更新时间 |
| | | /// </summary> |
| | |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | FileUtlis.Files.WriteFileByBytes(savePath, ssd); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 保存安防信息 |
| | | /// </summary> |
| | | public string SaveInfo() |
| | | { |
| | | HttpServerRequest hsr = new HttpServerRequest(); |
| | | this.noticeConfig.enable = true; |
| | | this.noticeConfig.noticeContent = Language.StringByID(StringId.SecurityAlarmTipString).Replace("{0}", name); |
| | | if (string.IsNullOrEmpty(sid)) |
| | | { |
| | | NewSid(); |
| | | var pack = hsr.AddSecurity(new List<SecurityAlarm>() { this }); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | SaveFile(); |
| | | } |
| | | else |
| | | { |
| | | sid = ""; |
| | | } |
| | | return pack.Code; |
| | | } |
| | | else |
| | | { |
| | | var pack = hsr.EditSecurity(new List<SecurityAlarm>() { this }); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | SaveFile(); |
| | | } |
| | | return pack.Code; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 生成sid方法 |
| | | /// </summary> |
| | | public void NewSid() |
| | | { |
| | | 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"; |
| | | } |
| | | |
| | | sid = sOidBeginsWith + sTimeSpan; |
| | | |
| | | sid += "16"; |
| | | sid += "1601"; |
| | | int maxId = 1; |
| | | |
| | | |
| | | for (int i = 0; i < FunctionList.List.securities.Count; i++) |
| | | { |
| | | string s = FunctionList.List.securities[i].sid.Substring(20, 4); |
| | | int iThisSceneId = Convert.ToInt16(s, 16); |
| | | if (iThisSceneId > maxId) |
| | | maxId = iThisSceneId; |
| | | } |
| | | |
| | | sid += (maxId + 1).ToString("X4"); |
| | | sid += "0000"; |
| | | } |
| | | catch |
| | | { |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public string bypass; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 安防输入 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public List<SecurityInputCondition> condition = new List<SecurityInputCondition>(); |
| | | |
| | | /// <summary> |
| | | /// 判断条件 |
| | | /// </summary> |
| | | public string comparator = "="; |
| | | |
| | | /// <summary> |
| | | /// 加入输入条件 |
| | | /// 本地判断使用 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public bool addCondition = false; |
| | | |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | Function _function = null; |
| | | /// <summary> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取单个状态的显示文本 |
| | | /// </summary> |
| | | /// <param name="inputValue"></param> |
| | | /// <returns></returns> |
| | | public string GetStateText(string inputValue) |
| | | { |
| | | string text = ""; |
| | | |
| | | if (GetFunction() == null) |
| | | return text; |
| | | switch (GetFunction().spk) |
| | | { |
| | | case SPK.SensorGas: |
| | | case SPK.SensorSmoke: |
| | | if (inputValue == "true") |
| | | { |
| | | text += Language.StringByID(StringId.InAlarm) + " "; |
| | | } |
| | | else if (inputValue == "false") |
| | | { |
| | | text += Language.StringByID(StringId.Normal) + " "; |
| | | } |
| | | break; |
| | | case SPK.SensorPir: |
| | | if (inputValue == "true") |
| | | { |
| | | text += Language.StringByID(StringId.youren) + " "; |
| | | } |
| | | else if (inputValue == "false") |
| | | { |
| | | text += Language.StringByID(StringId.wuren) + " "; |
| | | } |
| | | break; |
| | | case SPK.SensorWater: |
| | | if (inputValue == "true") |
| | | { |
| | | text += Language.StringByID(StringId.WaterLeakage) + " "; |
| | | } |
| | | else if (inputValue == "false") |
| | | { |
| | | text += Language.StringByID(StringId.Normal) + " "; |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | if (inputValue == "true") |
| | | { |
| | | text += Language.StringByID(StringId.Open) + " "; |
| | | } |
| | | else if (inputValue == "false") |
| | | { |
| | | text += Language.StringByID(StringId.Close) + " "; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | return text; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 状态文本 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | |
| | | case SPK.SensorSmoke: |
| | | foreach (var con in condition) |
| | | { |
| | | if (con.value == "true") |
| | | if (con.value == "true" || con.value == "alarm") |
| | | { |
| | | text += Language.StringByID(StringId.InAlarm) + " "; |
| | | } |
| | | else if (con.value == "false") |
| | | else if (con.value == "false" || con.value == "normal") |
| | | { |
| | | text += Language.StringByID(StringId.Normal) + " "; |
| | | } |
| | |
| | | case SPK.SensorWater: |
| | | foreach (var con in condition) |
| | | { |
| | | if (con.value == "true") |
| | | if (con.value == "true" || con.value == "alarm") |
| | | { |
| | | text += Language.StringByID(StringId.WaterLeakage) + " "; |
| | | } |
| | | else if (con.value == "false") |
| | | else if (con.value == "false" || con.value == "normal") |
| | | { |
| | | text += Language.StringByID(StringId.Normal) + " "; |
| | | } |
| | |
| | | case SPK.SensorDoorWindow: |
| | | foreach (var con in condition) |
| | | { |
| | | if (con.value == "true") |
| | | if (con.value == "true" || con.value == "open") |
| | | { |
| | | text += Language.StringByID(StringId.Open) + " "; |
| | | } |
| | | else if (con.value == "false") |
| | | else if (con.value == "false" || con.value == "close") |
| | | { |
| | | text += Language.StringByID(StringId.Close) + " "; |
| | | } |
| | |
| | | /// 安防输出状态 |
| | | /// </summary> |
| | | public List<SecurityOutputStatus> status = new List<SecurityOutputStatus>(); |
| | | |
| | | /// <summary> |
| | | /// 加入输入条件 |
| | | /// 本地判断使用 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public bool addCondition = false; |
| | | |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | Function _function = null; |
| | |
| | | /// </summary> |
| | | public List<string> pushTarget = new List<string>(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// A协议控制数据的对象 |
| | | /// </summary> |
| | | public class SecurityStatusObj |
| | | { |
| | | public List<SecurityStatusData> objects = new List<SecurityStatusData>(); |
| | | |
| | | public string time_stamp = ""; |
| | | public string id = ""; |
| | | } |
| | | |
| | | public class SecurityStatusData |
| | | { |
| | | public string sid; |
| | | public string status ="disable" ; |
| | | public bool alarm = false; |
| | | } |
| | | } |