using System; using System.Collections.Generic; using HDL_ON.Common; using HDL_ON.DAL.Server; using Shared; namespace HDL_ON.Entity { /// /// /// public class SecurityAlarm { public SecurityAlarm() { pushConfigs.Add(new SecurityPushConfig() { pushMethod = "APP", pushTarget = new List() { UserInfo.Current.ID } }); } /// /// 安防云端id /// public string userSecurityId; /// /// 安防sid /// public string sid; /// /// 安防名称 /// public string name; /// /// 安防延时 /// public string delay; /// /// 状态 /// 布防:enable /// 撒防:disable /// public string status = "disable"; /// /// 报警状态 /// public bool alarm = false; /// /// 类型 /// "all"--全宅布防, /// "normal"--普通模式, /// "all_day":24小时, /// "mute":静音 /// public string type = "normal"; /// /// 更新时间 /// public string modifyTime; /// /// 安防输入条件 /// public List input = new List(); /// /// 安防输出 /// public List output = new List(); /// /// 安防通知配置 /// public SecurityNoticeConfig noticeConfig = new SecurityNoticeConfig(); /// /// 安防推送配置 /// public List pushConfigs = new List(); /// /// 数据存储文件名 /// [Newtonsoft.Json.JsonIgnore] public string savePath { get { return "SecurityData_" + sid; } } /// /// 保存文件 /// public void SaveFile() { var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); FileUtlis.Files.WriteFileByBytes(savePath, ssd); } /// /// 保存安防信息 /// 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() { this }); if (pack.Code == StateCode.SUCCESS) { SaveFile(); } else { sid = ""; } return pack.Code; } else { var pack = hsr.EditSecurity(new List() { this }); if (pack.Code == StateCode.SUCCESS) { SaveFile(); } return pack.Code; } } /// /// 生成sid方法 /// 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 { } } } /// /// 安防状态配置 /// public class SecurityState { /// /// 安防云端id /// public string userSecurityId; /// /// 网关id 网关id 如果传的是sid该字段需要传 /// public string gatewayId; /// /// 安防sid /// public string sid; /// /// 状态 enable布防、disable撒防 /// public string status; } /// /// 安防bypass设置对象 /// public class SecurityBypass { /// /// 安防云端id /// public string userSecurityId; /// /// 输入设备bypass状态列表 /// public List input = new List(); } /// /// 输入设备bypass状态 /// public class SecurityBypassInput { /// /// 设备sid /// public string sid; /// /// true:启用 /// false:停用(临时bypass) /// public string bypass; } /// /// 安防输入 /// public class SecurityInput { /// /// 输入条件(功能)的sid /// 输入设备sid /// public string sid; /// /// Bypass设置 true:启用中、false:临时bypass中 /// public string bypass; /// /// 安防输入条件 /// public List condition = new List(); /// /// 判断条件 /// public string comparator = "="; /// /// 加入输入条件 /// 本地判断使用 /// [Newtonsoft.Json.JsonIgnore] public bool addCondition = false; [Newtonsoft.Json.JsonIgnore] Function _function = null; /// /// 对应的功能对象 /// /// public Function GetFunction() { if (_function == null) { _function = FunctionList.List.Functions.Find((obj) => obj.sid == sid); } return _function; } /// /// 获取单个状态的显示文本 /// /// /// 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; } /// /// 状态文本 /// /// public string StateText () { string text = ""; switch(GetFunction().spk) { case SPK.SensorGas: case SPK.SensorSmoke: foreach (var con in condition) { if (con.value == "true" || con.value == "alarm") { text += Language.StringByID(StringId.InAlarm) + " "; } else if (con.value == "false" || con.value == "normal") { text += Language.StringByID(StringId.Normal) + " "; } } break; case SPK.SensorPir: foreach (var con in condition) { if (con.value == "true") { text += Language.StringByID(StringId.youren) + " "; } else if (con.value == "false") { text += Language.StringByID(StringId.wuren) + " "; } } break; case SPK.SensorWater: foreach (var con in condition) { if (con.value == "true" || con.value == "alarm") { text += Language.StringByID(StringId.WaterLeakage) + " "; } else if (con.value == "false" || con.value == "normal") { text += Language.StringByID(StringId.Normal) + " "; } } break; case SPK.SensorDoorWindow: foreach (var con in condition) { if (con.value == "true" || con.value == "open") { text += Language.StringByID(StringId.Open) + " "; } else if (con.value == "false" || con.value == "close") { text += Language.StringByID(StringId.Close) + " "; } } break; } return text; } } /// /// 安防输入条件 /// public class SecurityInputCondition { /// /// 属性(条件)名称 /// public string key; /// /// 操作(执行)条件 /// < 小于 > 大于 ==等于 /// public string comparator; /// /// 条件值类型 /// int \float\ string /// public string data_type = "string"; /// /// 值 /// public string value; } /// /// 安防输出 /// public class SecurityOutput { /// /// 控制目标类型 /// 0:设备 /// 1:场景 /// 2:自动化 /// public string target_type ="0"; /// /// 输出目标的sid /// public string sid; /// /// 安防输出状态 /// public List status = new List(); /// /// 加入输入条件 /// 本地判断使用 /// [Newtonsoft.Json.JsonIgnore] public bool addCondition = false; [Newtonsoft.Json.JsonIgnore] Function _function = null; /// /// 对应的功能对象 /// /// public Function GetFunction() { if (_function == null) { _function = FunctionList.List.Functions.Find((obj) => obj.sid == sid); } return _function; } /// /// 状态文本 /// /// public string StateText() { string text = ""; if (target_type == "0") { switch (GetFunction().spk) { case SPK.LightDimming: case SPK.LightCCT: case SPK.LightRGB: case SPK.LightSwitch: foreach (var state in status) { if (state.key == FunctionAttributeKey.Brightness) { if (state.value == "0") { text = Language.StringByID(StringId.Close); } else { text = Language.StringByID(StringId.Open); } } } break; } }else if(target_type == "1") { } return text; } } /// /// 安防输出状态 /// public class SecurityOutputStatus { public string key; public string value; } /// /// 安防通知配置 /// public class SecurityNoticeConfig { /// /// 是否开启通知 /// public bool enable; /// /// 通知内容 /// public string noticeContent; } /// /// 安防推送配置 /// public class SecurityPushConfig { /// /// 推送方式 /// APP:app push /// SMS:短信 /// public string pushMethod; /// /// 推送目标 /// public List pushTarget = new List(); } /// /// A协议控制数据的对象 /// public class SecurityStatusObj { public List objects = new List(); public string time_stamp = ""; public string id = ""; } public class SecurityStatusData { public string sid; public string status ="disable" ; public bool alarm = false; } }