old mode 100755
new mode 100644
| | |
| | | /// </summary> |
| | | public class HdlAlarmsLogic |
| | | { |
| | | #region ■ 变量声明___________________________
|
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary>
|
| | | /// 本地安防数据
|
| | | /// </summary>
|
| | | private static HdlAlarmsLogic m_Current = null;
|
| | | /// <summary>
|
| | | /// 本地安防数据
|
| | | /// </summary>
|
| | | public static HdlAlarmsLogic Current
|
| | | {
|
| | | get
|
| | | {
|
| | | if (m_Current == null)
|
| | | {
|
| | | m_Current = new HdlAlarmsLogic();
|
| | | }
|
| | | return m_Current;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 安防上报信息
|
| | | /// </summary>
|
| | | public List<SafeguardAlarmInfo> listSafetyAlarmInfo = new List<SafeguardAlarmInfo>();
|
| | | /// <summary>
|
| | | /// 门锁上报信息
|
| | | /// </summary>
|
| | | public List<DeviceAlarmInfo> listDoorLockAlarmInfo = new List<DeviceAlarmInfo>();
|
| | | /// <summary>
|
| | | /// 上一次安防上报信息保存的文件名字(考虑到用户有可能24点的时候,不退出APP)
|
| | | /// </summary>
|
| | | /// <summary> |
| | | /// 本地安防数据 |
| | | /// </summary> |
| | | private static HdlAlarmsLogic m_Current = null; |
| | | /// <summary> |
| | | /// 本地安防数据 |
| | | /// </summary> |
| | | public static HdlAlarmsLogic Current |
| | | { |
| | | get |
| | | { |
| | | if (m_Current == null) |
| | | { |
| | | m_Current = new HdlAlarmsLogic(); |
| | | } |
| | | return m_Current; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 安防上报信息 |
| | | /// </summary> |
| | | public List<SafeguardAlarmInfo> listSafetyAlarmInfo = new List<SafeguardAlarmInfo>(); |
| | | /// <summary> |
| | | /// 门锁上报信息 |
| | | /// </summary> |
| | | public List<DeviceAlarmInfo> listDoorLockAlarmInfo = new List<DeviceAlarmInfo>(); |
| | | /// <summary> |
| | | /// 上一次安防上报信息保存的文件名字(考虑到用户有可能24点的时候,不退出APP) |
| | | /// </summary> |
| | | private string oldDeviceAlarmFile = string.Empty; |
| | | |
| | | #endregion |
| | |
|
| | | #region ■ 报警信息上报事件___________________
|
| | |
|
| | | /// <summary>
|
| | | /// 添加报警信息上报事件(不需要再执行任何操作,并且永久存在)
|
| | | /// </summary>
|
| | | public void AddAlarmInfoEvent()
|
| | | {
|
| | | //安防设备上报
|
| | | HdlDeviceAttributeLogic.Current.AddAttributeEvent("SaveSafetyAlarmInfo", "IASInfoReport", (device)=>
|
| | | |
| | | #region ■ 重新刷新报警信息___________________ |
| | | |
| | | /// <summary> |
| | | /// 重新刷新报警信息 |
| | | /// </summary> |
| | | public void RefreshAlarmInfo() |
| | | { |
| | | this.listSafetyAlarmInfo.Clear(); |
| | | this.listDoorLockAlarmInfo.Clear(); |
| | | string fileName = DateTime.Now.ToString("yyyyMMdd"); |
| | | |
| | | //安防报警 |
| | | string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); |
| | | var data1 = HdlFileLogic.Current.ReadFileByteContent(fullName); |
| | | if (data1 != null) |
| | | { |
| | | if (HdlGatewayLogic.Current.IsGatewayExist(device.CurrentGateWayId) == true) |
| | | this.listSafetyAlarmInfo = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data1)); |
| | | if (this.listSafetyAlarmInfo == null) |
| | | { |
| | | //保存安防报警信息到本地 |
| | | this.SaveSafeguardAlarmInfo(device); |
| | | this.listSafetyAlarmInfo = new List<SafeguardAlarmInfo>(); |
| | | } |
| | | });
|
| | | } |
| | | } |
| | | |
| | | #endregion
|
| | | |
| | | #region ■ 重新刷新报警信息___________________
|
| | | |
| | | /// <summary>
|
| | | /// 重新刷新报警信息
|
| | | /// </summary>
|
| | | public void RefreshAlarmInfo()
|
| | | {
|
| | | this.listSafetyAlarmInfo.Clear();
|
| | | this.listDoorLockAlarmInfo.Clear();
|
| | | string fileName = DateTime.Now.ToString("yyyyMMdd");
|
| | |
|
| | | //判断有没有这个文件
|
| | | string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory, fileName);
|
| | | if (System.IO.File.Exists(fullName) == true)
|
| | | {
|
| | | lock (listSafetyAlarmInfo)
|
| | | {
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
|
| | | var data = Global.ReadFileByDirectory(dir, fileName);
|
| | | this.listSafetyAlarmInfo = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
|
| | | if (this.listSafetyAlarmInfo == null)
|
| | | {
|
| | | this.listSafetyAlarmInfo = new List<SafeguardAlarmInfo>();
|
| | | }
|
| | | }
|
| | | }
|
| | | //门锁记录
|
| | | fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory, fileName);
|
| | | if (System.IO.File.Exists(fullName) == true)
|
| | | {
|
| | | lock (listDoorLockAlarmInfo)
|
| | | {
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
|
| | | var data = Global.ReadFileByDirectory(dir, fileName);
|
| | | this.listDoorLockAlarmInfo = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
|
| | | if (this.listDoorLockAlarmInfo == null)
|
| | | {
|
| | | this.listDoorLockAlarmInfo = new List<DeviceAlarmInfo>();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | | |
| | | #region ■ 安防报警保存_______________________
|
| | |
|
| | | /// <summary>
|
| | | /// 保存安防报警信息到本地
|
| | | /// </summary>
|
| | | /// <param name="device"></param>
|
| | | public bool SaveSafeguardAlarmInfo(CommonDevice device)
|
| | | {
|
| | | int ZoneId = HdlSafeguardLogic.Current.GetZoneIdByIASZone(device);
|
| | | if (ZoneId == -1)
|
| | | {
|
| | | //这个传感器不存在于任何防区
|
| | | return false;
|
| | | }
|
| | | var msgInfo = this.GetSensorAlarmInfo(device);
|
| | | if (msgInfo == null)
|
| | | {
|
| | | //异常??
|
| | | return false;
|
| | | }
|
| | |
|
| | | lock (listSafetyAlarmInfo)
|
| | | {
|
| | | //获取保存安防信息的文件名字
|
| | | string fileName = this.GetSafeguardAlarmFileName();
|
| | |
|
| | | var data = new SafeguardAlarmInfo();
|
| | | data.AlarmType = SafeguardAlarmType.Sensor;
|
| | | data.ZoneId = ZoneId;
|
| | | data.DeviceAddr = device.DeviceAddr;
|
| | | data.DeviceEpoint = device.DeviceEpoint;
|
| | | data.DeviceName = device.DeviceName;
|
| | | data.Time = DateTime.Now.ToString("HH:mm:ss");
|
| | | data.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
|
| | | //报警结束
|
| | | data.AlarmMsg = msgInfo.AlarmMsg != string.Empty ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uAlarmFinish);
|
| | | //电池报警
|
| | | data.BatteryMsg = msgInfo.BatteryMsg;
|
| | | //被拆报警
|
| | | data.DemolishmentMsg = msgInfo.DemolishmenMsg;
|
| | |
|
| | | //限制它的长度
|
| | | this.listSafetyAlarmInfo.Insert(0, data);
|
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
|
| | | }
|
| | |
|
| | | //保存到本地
|
| | | var saveData = JsonConvert.SerializeObject(this.listSafetyAlarmInfo);
|
| | | var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
|
| | | Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
|
| | | return true;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 保存布防操作信息到本地
|
| | | /// </summary>
|
| | | /// <param name="garrison">布防模式</param>
|
| | | /// <param name="appendText">附加文本</param>
|
| | | /// <param name="push">是否推送到安防主界面</param>
|
| | | public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "", bool push = false)
|
| | | {
|
| | | if (garrison == GarrisonMode.None)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | lock (listSafetyAlarmInfo)
|
| | | {
|
| | | //获取保存安防信息的文件名字
|
| | | string fileName = this.GetSafeguardAlarmFileName();
|
| | |
|
| | | var data = new SafeguardAlarmInfo();
|
| | | data.Time = DateTime.Now.ToString("HH:mm:ss");
|
| | | data.AlarmType = SafeguardAlarmType.None;
|
| | | if (garrison == GarrisonMode.AtHome)
|
| | | {
|
| | | data.AlarmType = SafeguardAlarmType.AtHome;
|
| | | //没有内部防区
|
| | | if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false)
|
| | | {
|
| | | //布防已执行
|
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteGarrison);
|
| | | }
|
| | | else
|
| | | {
|
| | | //在家布防已执行
|
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteAtHomeGarrison);
|
| | | }
|
| | | }
|
| | | else if (garrison == GarrisonMode.RemoveHome)
|
| | | {
|
| | | //离家布防已执行
|
| | | data.AlarmType = SafeguardAlarmType.RemoveHome;
|
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteRemoveHomeGarrison);
|
| | | }
|
| | | else if (garrison == GarrisonMode.RemoveGarrison)
|
| | | {
|
| | | //撤防已执行
|
| | | data.AlarmType = SafeguardAlarmType.RemoveGarrison;
|
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteWithdrawGarrison);
|
| | | }
|
| | | else
|
| | | {
|
| | | return;
|
| | | }
|
| | | //添加附加文本
|
| | | data.AlarmMsg = data.AlarmMsg + appendText;
|
| | |
|
| | | //限制它的长度
|
| | | this.listSafetyAlarmInfo.Insert(0, data);
|
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1);
|
| | | }
|
| | |
|
| | | //保存到本地
|
| | | var saveData = JsonConvert.SerializeObject(this.listSafetyAlarmInfo);
|
| | | var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
|
| | | Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
|
| | |
|
| | | //推送
|
| | | if (push == true)
|
| | | {
|
| | | if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true)
|
| | | {
|
| | | var form = (Phone.UserCenter.Safety.SafetyManagementMainForm)UserCenterResourse.DicActionForm["SafetyManagementMainForm"];
|
| | | form?.AddSafeguardLogPushRow(null);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取保存安防信息的文件名字
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private string GetSafeguardAlarmFileName()
|
| | | {
|
| | | string fileName = DateTime.Now.ToString("yyyyMMdd");
|
| | | if (fileName != oldDeviceAlarmFile)
|
| | | {
|
| | | //考虑到用户有可能24点的时候不退出APP,这个时候直接刷新
|
| | | this.RefreshAlarmInfo();
|
| | | }
|
| | | oldDeviceAlarmFile = fileName;
|
| | | return fileName;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取本地记录的安防报警信息
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public Dictionary<string, List<SafeguardAlarmInfo>> GetSafeguardAlarmInfo()
|
| | | {
|
| | | lock (listSafetyAlarmInfo)
|
| | | {
|
| | | string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
|
| | | //借用一下自动备份获取指定目录下面的文件的函数
|
| | | List<string> listFile = HdlAutoBackupLogic.GetFileFromDirectory(fullPath);
|
| | | //升序
|
| | | listFile.Sort();
|
| | | var dic = new Dictionary<string, List<SafeguardAlarmInfo>>();
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.SafeguardAlarmDirectory);
|
| | | for (int i = listFile.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var data = Global.ReadFileByDirectory(dir, listFile[i]);
|
| | | var info = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
|
| | | if (info == null)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | var listInfo = new List<SafeguardAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.SafetyOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | | }
|
| | | listInfo.Add(info[j]);
|
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.SafetyMaxAlarmMsgDay)
|
| | | {
|
| | | //只要三天的量
|
| | | break;
|
| | | }
|
| | | }
|
| | | return dic;
|
| | | }
|
| | | } |
| | | |
| | | #endregion
|
| | | |
| | | #region ■ 传感器报警的信息翻译文本___________
|
| | | |
| | | /// <summary>
|
| | | /// 获取传感器报警的信息翻译文本(返回null则表示没有达成报警条件,停止报警则返回空字符串)
|
| | | /// </summary>
|
| | | /// <param name="i_device"></param>
|
| | | /// <returns></returns>
|
| | | public IASZoneReportInfo GetSensorAlarmInfo(CommonDevice i_device)
|
| | | {
|
| | | //IAS安防信息上报
|
| | | if ((i_device is IASZone) == false)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(i_device);
|
| | | //因为推送的是虚拟的设备,所以去获取真实物理设备
|
| | | CommonDevice device = Common.LocalDevice.Current.GetDevice(mainkey);
|
| | | if (device == null)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | IASZone iASZone = (IASZone)i_device;
|
| | |
|
| | | var alarmInfo = new IASZoneReportInfo();
|
| | | if (iASZone.iASInfo.Battery == 1)
|
| | | {
|
| | | //电池电量低
|
| | | alarmInfo.BatteryMsg = Language.StringByID(R.MyInternationalizationString.uLowElectricityConsumption);
|
| | | }
|
| | | if (iASZone.iASInfo.Tamper == 1)
|
| | | {
|
| | | //设备被拆除
|
| | | alarmInfo.DemolishmenMsg = Language.StringByID(R.MyInternationalizationString.uDeviceWasDismantled);
|
| | | }
|
| | |
|
| | | //运动传感器
|
| | | if (device.IasDeviceType == 13)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //有不明物体经过
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed);
|
| | | }
|
| | | }
|
| | | //烟雾传感器
|
| | | else if (device.IasDeviceType == 40)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //烟雾报警
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSmogAlarm);
|
| | | }
|
| | | }
|
| | | //水侵传感器
|
| | | else if (device.IasDeviceType == 42)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //检测到漏水
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uWaterLeakageDetection);
|
| | | }
|
| | | }
|
| | | //燃气传感器
|
| | | else if (device.IasDeviceType == 43)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //燃气泄漏
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uCarbonMonoxideRevealed);
|
| | | }
|
| | | }
|
| | | //紧急按钮
|
| | | else if (device.IasDeviceType == 44)
|
| | | {
|
| | | //紧急按钮
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //紧急按钮被按下
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uEmergencyButtonPressdown);
|
| | | }
|
| | | }
|
| | | //钥匙扣
|
| | | else if (device.IasDeviceType == 277)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //钥匙扣触发报警
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uKeyFobAlarm);
|
| | | }
|
| | | }
|
| | | //门窗传感器
|
| | | else if (device.IasDeviceType == 21 || device.IasDeviceType == 22)
|
| | | {
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //门窗被打开
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadBeenOpen);
|
| | | }
|
| | | else
|
| | | {
|
| | | //门窗已关闭
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadClosed);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | //传感器
|
| | | if (iASZone.iASInfo.Alarm1 == 1)
|
| | | {
|
| | | //触发传感器报警
|
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered);
|
| | | }
|
| | | }
|
| | | return alarmInfo;
|
| | | //门锁记录 |
| | | fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName); |
| | | var data2 = HdlFileLogic.Current.ReadFileByteContent(fullName); |
| | | if (data2 != null) |
| | | { |
| | | this.listDoorLockAlarmInfo = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data2)); |
| | | if (this.listDoorLockAlarmInfo == null) |
| | | { |
| | | this.listDoorLockAlarmInfo = new List<DeviceAlarmInfo>(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 门锁报警保存_______________________
|
| | | #region ■ 安防报警保存_______________________ |
| | | |
| | | /// <summary>
|
| | | /// 保存门锁报警信息到本地
|
| | | /// </summary>
|
| | | /// <param name="jobject"></param>
|
| | | public bool SaveDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
|
| | | /// <summary> |
| | | /// 保存安防报警信息到本地 |
| | | /// </summary> |
| | | /// <param name="device"></param> |
| | | public bool SaveSafeguardAlarmInfo(CommonDevice device) |
| | | { |
| | | var device = Common.LocalDevice.Current.GetDevice(jobject.Value<string>("DeviceAddr"), jobject.Value<int>("Epoint"));
|
| | | int ZoneId = HdlSafeguardLogic.Current.GetZoneIdByIASZone(device); |
| | | if (ZoneId == -1) |
| | | { |
| | | //这个传感器不存在于任何防区 |
| | | return false; |
| | | } |
| | | var msgInfo = this.GetSensorAlarmInfo(device); |
| | | if (msgInfo == null) |
| | | { |
| | | //异常?? |
| | | return false; |
| | | } |
| | | |
| | | lock (listSafetyAlarmInfo) |
| | | { |
| | | //获取保存安防信息的文件名字 |
| | | string fileName = this.GetSafeguardAlarmFileName(); |
| | | |
| | | var data = new SafeguardAlarmInfo(); |
| | | data.AlarmType = SafeguardAlarmType.Sensor; |
| | | data.ZoneId = ZoneId; |
| | | data.DeviceAddr = device.DeviceAddr; |
| | | data.DeviceEpoint = device.DeviceEpoint; |
| | | data.DeviceName = device.DeviceName; |
| | | data.Time = DateTime.Now.ToString("HH:mm:ss"); |
| | | data.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device); |
| | | //报警结束 |
| | | data.AlarmMsg = msgInfo.AlarmMsg != string.Empty ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uAlarmFinish); |
| | | //电池报警 |
| | | data.BatteryMsg = msgInfo.BatteryMsg; |
| | | //被拆报警 |
| | | data.DemolishmentMsg = msgInfo.DemolishmenMsg; |
| | | |
| | | //限制它的长度 |
| | | this.listSafetyAlarmInfo.Insert(0, data); |
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) |
| | | { |
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1); |
| | | } |
| | | |
| | | //保存到本地 |
| | | string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); |
| | | HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo); |
| | | |
| | | if (UserCenterResourse.DicActionForm.ContainsKey("SafetyManagementMainForm") == true) |
| | | { |
| | | var form = (Phone.UserCenter.Safety.SafetyManagementMainForm)UserCenterResourse.DicActionForm["SafetyManagementMainForm"]; |
| | | form?.AddSafeguardLogPushRow(device); |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 保存布防操作信息到本地 |
| | | /// </summary> |
| | | /// <param name="garrison">布防模式</param> |
| | | /// <param name="appendText">附加文本</param> |
| | | public void SaveSafeguardAlarmInfo(GarrisonMode garrison, string appendText = "") |
| | | { |
| | | if (garrison == GarrisonMode.None) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | lock (listSafetyAlarmInfo) |
| | | { |
| | | //获取保存安防信息的文件名字 |
| | | string fileName = this.GetSafeguardAlarmFileName(); |
| | | |
| | | var data = new SafeguardAlarmInfo(); |
| | | data.Time = DateTime.Now.ToString("HH:mm:ss"); |
| | | data.AlarmType = SafeguardAlarmType.None; |
| | | if (garrison == GarrisonMode.AtHome) |
| | | { |
| | | data.AlarmType = SafeguardAlarmType.AtHome; |
| | | //没有内部防区 |
| | | if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false) |
| | | { |
| | | //布防已执行 |
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteGarrison); |
| | | } |
| | | else |
| | | { |
| | | //在家布防已执行 |
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteAtHomeGarrison); |
| | | } |
| | | } |
| | | else if (garrison == GarrisonMode.RemoveHome) |
| | | { |
| | | //离家布防已执行 |
| | | data.AlarmType = SafeguardAlarmType.RemoveHome; |
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteRemoveHomeGarrison); |
| | | } |
| | | else if (garrison == GarrisonMode.RemoveGarrison) |
| | | { |
| | | //撤防已执行 |
| | | data.AlarmType = SafeguardAlarmType.RemoveGarrison; |
| | | data.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uExecuteWithdrawGarrison); |
| | | } |
| | | else |
| | | { |
| | | return; |
| | | } |
| | | //添加附加文本 |
| | | data.AlarmMsg = data.AlarmMsg + appendText; |
| | | |
| | | //限制它的长度 |
| | | this.listSafetyAlarmInfo.Insert(0, data); |
| | | if (this.listSafetyAlarmInfo.Count > UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) |
| | | { |
| | | this.listSafetyAlarmInfo.RemoveAt(this.listSafetyAlarmInfo.Count - 1); |
| | | } |
| | | |
| | | //保存到本地 |
| | | string fullName = System.IO.Path.Combine(DirNameResourse.SafeguardAlarmDirectory, fileName); |
| | | HdlFileLogic.Current.SaveFileContent(fullName, this.listSafetyAlarmInfo); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取保存安防信息的文件名字 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private string GetSafeguardAlarmFileName() |
| | | { |
| | | string fileName = DateTime.Now.ToString("yyyyMMdd"); |
| | | if (fileName != oldDeviceAlarmFile) |
| | | { |
| | | //考虑到用户有可能24点的时候不退出APP,这个时候直接刷新 |
| | | this.RefreshAlarmInfo(); |
| | | } |
| | | oldDeviceAlarmFile = fileName; |
| | | return fileName; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取本地记录的安防报警信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public Dictionary<string, List<SafeguardAlarmInfo>> GetSafeguardAlarmInfo() |
| | | { |
| | | lock (listSafetyAlarmInfo) |
| | | { |
| | | string fullPath = DirNameResourse.SafeguardAlarmDirectory; |
| | | //获取指定目录下面的文件 |
| | | List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath); |
| | | //升序 |
| | | listFile.Sort(); |
| | | var dic = new Dictionary<string, List<SafeguardAlarmInfo>>(); |
| | | for (int i = listFile.Count - 1; i >= 0; i--) |
| | | { |
| | | var data = HdlFileLogic.Current.ReadFileByteContent(System.IO.Path.Combine(fullPath, listFile[i])); |
| | | var info = JsonConvert.DeserializeObject<List<SafeguardAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data)); |
| | | if (info == null) |
| | | { |
| | | continue; |
| | | } |
| | | var listInfo = new List<SafeguardAlarmInfo>(); |
| | | for (int j = 0; j < info.Count; j++) |
| | | { |
| | | if (j == UserCenterResourse.ResidenceOption.SafetyOnedayMaxAlarmMsgCount) |
| | | { |
| | | //每天最多三十条数据 |
| | | break; |
| | | } |
| | | listInfo.Add(info[j]); |
| | | } |
| | | dic[listFile[i]] = listInfo; |
| | | |
| | | if (dic.Count == UserCenterResourse.ResidenceOption.SafetyMaxAlarmMsgDay) |
| | | { |
| | | //只要三天的量 |
| | | break; |
| | | } |
| | | } |
| | | return dic; |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 传感器报警的信息翻译文本___________ |
| | | |
| | | /// <summary> |
| | | /// 获取传感器报警的信息翻译文本(返回null则表示没有达成报警条件,停止报警则返回空字符串) |
| | | /// </summary> |
| | | /// <param name="i_device"></param> |
| | | /// <returns></returns> |
| | | public IASZoneReportInfo GetSensorAlarmInfo(CommonDevice i_device) |
| | | { |
| | | //IAS安防信息上报 |
| | | if ((i_device is IASZone) == false) |
| | | { |
| | | return null; |
| | | } |
| | | string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(i_device); |
| | | //因为推送的是虚拟的设备,所以去获取真实物理设备 |
| | | CommonDevice device = Common.LocalDevice.Current.GetDevice(mainkey); |
| | | if (device == null) |
| | | { |
| | | return null; |
| | | } |
| | | IASZone iASZone = (IASZone)i_device; |
| | | if (iASZone.iASInfo == null) |
| | | { |
| | | return null; |
| | | } |
| | | |
| | | var alarmInfo = new IASZoneReportInfo(); |
| | | if (iASZone.iASInfo.Battery == 1) |
| | | { |
| | | //电池电量低 |
| | | alarmInfo.BatteryMsg = Language.StringByID(R.MyInternationalizationString.uLowElectricityConsumption); |
| | | } |
| | | if (iASZone.iASInfo.Tamper == 1) |
| | | { |
| | | //设备被拆除 |
| | | alarmInfo.DemolishmenMsg = Language.StringByID(R.MyInternationalizationString.uDeviceWasDismantled); |
| | | } |
| | | |
| | | //运动传感器 |
| | | if (device.IasDeviceType == 13 || device.IasDeviceType == 541) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //有人经过 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uHadUnKnowObjectPassed); |
| | | } |
| | | } |
| | | //烟雾传感器 |
| | | else if (device.IasDeviceType == 40) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //烟雾报警 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSmogAlarm); |
| | | } |
| | | } |
| | | //水侵传感器 |
| | | else if (device.IasDeviceType == 42) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //检测到漏水 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uWaterLeakageDetection); |
| | | } |
| | | } |
| | | //燃气传感器 |
| | | else if (device.IasDeviceType == 43) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //燃气泄漏 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uCarbonMonoxideRevealed); |
| | | } |
| | | } |
| | | //紧急按钮 |
| | | else if (device.IasDeviceType == 44) |
| | | { |
| | | //紧急按钮 |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //紧急按钮被按下 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uEmergencyButtonPressdown); |
| | | } |
| | | } |
| | | //钥匙扣 |
| | | else if (device.IasDeviceType == 277) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //钥匙扣触发报警 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uKeyFobAlarm); |
| | | } |
| | | } |
| | | //门窗传感器 |
| | | else if (device.IasDeviceType == 21 || device.IasDeviceType == 22) |
| | | { |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //门窗被打开 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadBeenOpen); |
| | | } |
| | | else |
| | | { |
| | | //门窗已关闭 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorOrWindowHadClosed); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //传感器 |
| | | if (iASZone.iASInfo.Alarm1 == 1) |
| | | { |
| | | //触发传感器报警 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered); |
| | | } |
| | | } |
| | | return alarmInfo; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取单个Json数据里面,包含的全部报警信息条数 |
| | | /// </summary> |
| | | /// <param name="alarmInfo"></param> |
| | | /// <returns></returns> |
| | | public List<string> GetSensorListAlarmMsg(SafeguardAlarmInfo alarmInfo) |
| | | { |
| | | var listMsg = new List<string>(); |
| | | //一条信息里面,它可能包含多个报警 |
| | | if (string.IsNullOrEmpty(alarmInfo.AlarmMsg) == false) |
| | | { |
| | | //报警信息 |
| | | listMsg.Add(alarmInfo.AlarmMsg); |
| | | } |
| | | if (alarmInfo.BatteryMsg != null) |
| | | { |
| | | //电池电量 |
| | | listMsg.Add(alarmInfo.BatteryMsg); |
| | | } |
| | | if (alarmInfo.DemolishmentMsg != null) |
| | | { |
| | | //被拆报警 |
| | | listMsg.Add(alarmInfo.DemolishmentMsg); |
| | | } |
| | | |
| | | return listMsg; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region ■ 门锁报警保存_______________________ |
| | | |
| | | /// <summary> |
| | | /// 保存门锁报警信息到本地 |
| | | /// </summary> |
| | | /// <param name="jobject"></param> |
| | | public bool SaveDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) |
| | | { |
| | | var device = Common.LocalDevice.Current.GetDevice(jobject.Value<string>("DeviceAddr"), jobject.Value<int>("Epoint")); |
| | | if ((device is ZigBee.Device.DoorLock) == false) |
| | | { |
| | | //它不是门锁 |
| | | return false; |
| | | }
|
| | | var msgInfo = this.GetDoorLockAlarmInfo(jobject);
|
| | | if (msgInfo == null)
|
| | | {
|
| | | //异常??
|
| | | return false;
|
| | | }
|
| | |
|
| | | lock (listDoorLockAlarmInfo)
|
| | | {
|
| | | //获取保存安防信息的文件名字
|
| | | string fileName = this.GetSafeguardAlarmFileName();
|
| | |
|
| | | msgInfo.DeviceAddr = device.DeviceAddr;
|
| | | msgInfo.DeviceEpoint = device.DeviceEpoint;
|
| | | msgInfo.DeviceName = device.DeviceName;
|
| | | msgInfo.Time = DateTime.Now.ToString("HH:mm:ss");
|
| | | msgInfo.RoomName = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
|
| | |
|
| | | //限制它的长度
|
| | | this.listDoorLockAlarmInfo.Insert(0, msgInfo);
|
| | | if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.DoorLockOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | this.listDoorLockAlarmInfo.RemoveAt(this.listDoorLockAlarmInfo.Count - 1);
|
| | | }
|
| | |
|
| | | //保存到本地
|
| | | var saveData = JsonConvert.SerializeObject(this.listDoorLockAlarmInfo);
|
| | | var byteData = System.Text.Encoding.UTF8.GetBytes(saveData);
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
|
| | | Global.WriteFileToDirectoryByBytes(dir, fileName, byteData);
|
| | | return true;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取本地记录的门锁报警信息
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public Dictionary<string, List<DeviceAlarmInfo>> GetAllDoorLockAlarmInfo()
|
| | | {
|
| | | lock (listDoorLockAlarmInfo)
|
| | | {
|
| | | string fullPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
|
| | | //借用一下自动备份获取指定目录下面的文件的函数
|
| | | List<string> listFile = HdlAutoBackupLogic.GetFileFromDirectory(fullPath);
|
| | | //升序
|
| | | listFile.Sort();
|
| | | var dic = new Dictionary<string, List<DeviceAlarmInfo>>();
|
| | | string dir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DoorLockAlarmDirectory);
|
| | | for (int i = listFile.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var data = Global.ReadFileByDirectory(dir, listFile[i]);
|
| | | var info = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data));
|
| | | if (info == null)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | var listInfo = new List<DeviceAlarmInfo>();
|
| | | for (int j = 0; j < info.Count; j++)
|
| | | {
|
| | | if (j == UserCenterResourse.DoorLockOnedayMaxAlarmMsgCount)
|
| | | {
|
| | | //每天最多三十条数据
|
| | | break;
|
| | | }
|
| | | listInfo.Add(info[j]);
|
| | | }
|
| | | dic[listFile[i]] = listInfo;
|
| | |
|
| | | if (dic.Count == UserCenterResourse.DoorLockMaxAlarmMsgDay)
|
| | | {
|
| | | //只要三天的量
|
| | | break;
|
| | | }
|
| | | }
|
| | | return dic;
|
| | | }
|
| | | } |
| | | var msgInfo = this.GetDoorLockAlarmInfo(jobject); |
| | | if (msgInfo == null) |
| | | { |
| | | //异常?? |
| | | return false; |
| | | } |
| | | |
| | | lock (listDoorLockAlarmInfo) |
| | | { |
| | | //获取保存安防信息的文件名字 |
| | | string fileName = this.GetSafeguardAlarmFileName(); |
| | | |
| | | msgInfo.DeviceAddr = device.DeviceAddr; |
| | | msgInfo.DeviceEpoint = device.DeviceEpoint; |
| | | msgInfo.DeviceName = device.DeviceName; |
| | | msgInfo.Time = DateTime.Now.ToString("HH:mm:ss"); |
| | | msgInfo.RoomName = HdlRoomLogic.Current.GetRoomNameByDevice(device); |
| | | |
| | | //限制它的长度 |
| | | this.listDoorLockAlarmInfo.Insert(0, msgInfo); |
| | | if (this.listDoorLockAlarmInfo.Count > UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount) |
| | | { |
| | | this.listDoorLockAlarmInfo.RemoveAt(this.listDoorLockAlarmInfo.Count - 1); |
| | | } |
| | | |
| | | //保存到本地 |
| | | string fullName = System.IO.Path.Combine(DirNameResourse.DoorLockAlarmDirectory, fileName); |
| | | HdlFileLogic.Current.SaveFileContent(fullName, this.listDoorLockAlarmInfo); |
| | | |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | #endregion
|
| | | /// <summary> |
| | | /// 获取本地记录的门锁报警信息 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public Dictionary<string, List<DeviceAlarmInfo>> GetAllDoorLockAlarmInfo() |
| | | { |
| | | lock (listDoorLockAlarmInfo) |
| | | { |
| | | string fullPath = DirNameResourse.DoorLockAlarmDirectory; |
| | | //获取指定目录下面的文件 |
| | | List<string> listFile = HdlFileLogic.Current.GetFileFromDirectory(fullPath); |
| | | //升序 |
| | | listFile.Sort(); |
| | | var dic = new Dictionary<string, List<DeviceAlarmInfo>>(); |
| | | for (int i = listFile.Count - 1; i >= 0; i--) |
| | | { |
| | | var data = HdlFileLogic.Current.ReadFileByteContent(System.IO.Path.Combine(fullPath, listFile[i])); |
| | | var info = JsonConvert.DeserializeObject<List<DeviceAlarmInfo>>(System.Text.Encoding.UTF8.GetString(data)); |
| | | if (info == null) |
| | | { |
| | | continue; |
| | | } |
| | | var listInfo = new List<DeviceAlarmInfo>(); |
| | | for (int j = 0; j < info.Count; j++) |
| | | { |
| | | if (j == UserCenterResourse.ResidenceOption.DoorLockOnedayMaxAlarmMsgCount) |
| | | { |
| | | //每天最多三十条数据 |
| | | break; |
| | | } |
| | | listInfo.Add(info[j]); |
| | | } |
| | | dic[listFile[i]] = listInfo; |
| | | |
| | | #region ■ 门锁报警的信息翻译文本_____________
|
| | | if (dic.Count == UserCenterResourse.ResidenceOption.DoorLockMaxAlarmMsgDay) |
| | | { |
| | | //只要三天的量 |
| | | break; |
| | | } |
| | | } |
| | | return dic; |
| | | } |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 获取门锁报警的信息翻译文本(返回null则表示条件未达成)
|
| | | /// </summary>
|
| | | /// <param name="jobject"></param>
|
| | | /// <returns></returns>
|
| | | private DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
|
| | | {
|
| | | var info = (DoorLockAlarmsResult)JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString());
|
| | | var alarmInfo = new DeviceAlarmInfo();
|
| | | #endregion |
| | | |
| | | #region ■ 门锁报警的信息翻译文本_____________ |
| | | |
| | | /// <summary> |
| | | /// 获取门锁报警的信息翻译文本(返回null则表示条件未达成) |
| | | /// </summary> |
| | | /// <param name="jobject"></param> |
| | | /// <returns></returns> |
| | | public DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject) |
| | | { |
| | | var info = JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString()); |
| | | var alarmInfo = new DeviceAlarmInfo(); |
| | | |
| | | if (info.Clusterid == 1) |
| | | { |
| | |
| | | //暴力开门 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg5); |
| | | } |
| | | else if (info.AlarmCode == 16) |
| | | else if (info.AlarmCode == 216) |
| | | { |
| | | //常开模式开启 |
| | | //常开模式开启(门锁触发) |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg6); |
| | | alarmInfo.MsgDiv = 9000; |
| | | } |
| | | else if (info.AlarmCode == 17) |
| | | else if (info.AlarmCode == 217) |
| | | { |
| | | //常开模式结束 |
| | | //常开模式结束(门锁触发) |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg7); |
| | | alarmInfo.MsgDiv = 9000; |
| | | } |
| | | else if (info.AlarmCode == 32) |
| | | else if (info.AlarmCode == 218) |
| | | { |
| | | //门铃触发 |
| | | //常开模式开启(网关触发) |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg9); |
| | | alarmInfo.MsgDiv = 9000; |
| | | } |
| | | else if (info.AlarmCode == 219) |
| | | { |
| | | //常开模式结束(网关触发) |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg10); |
| | | alarmInfo.MsgDiv = 9000; |
| | | } |
| | | else if (info.AlarmCode == 232) |
| | | { |
| | | //有人访问 |
| | | alarmInfo.AlarmMsg = Language.StringByID(R.MyInternationalizationString.uDoorLockAlarmMsg8); |
| | | } |
| | | } |
| | | return alarmInfo.AlarmMsg == string.Empty ? null : alarmInfo;
|
| | | return alarmInfo.AlarmMsg == string.Empty ? null : alarmInfo; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 一般方法___________________________ |
| | | |
| | | /// <summary>
|
| | | /// 获取报警信息的文件名字
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private string GetAlarmFileName()
|
| | | {
|
| | | string fileName = DateTime.Now.ToString("yyyyMMdd");
|
| | | if (fileName != oldDeviceAlarmFile)
|
| | | {
|
| | | //考虑到用户有可能24点的时候不退出APP,这个时候直接刷新
|
| | | this.RefreshAlarmInfo();
|
| | | }
|
| | | oldDeviceAlarmFile = fileName;
|
| | | return fileName;
|
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 结构体_____________________________ |
| | | |
| | | /// <summary> |
| | | /// 门锁的报警结果 |
| | | /// 获取报警信息的文件名字 |
| | | /// </summary> |
| | | private class DoorLockAlarmsResult |
| | | /// <returns></returns> |
| | | private string GetAlarmFileName() |
| | | { |
| | | /// <summary> |
| | | /// 报警类型 |
| | | /// </summary> |
| | | public int AlarmCode = -1; |
| | | /// <summary> |
| | | /// Clusterid |
| | | /// </summary> |
| | | public int Clusterid = -1; |
| | | string fileName = DateTime.Now.ToString("yyyyMMdd"); |
| | | if (fileName != oldDeviceAlarmFile) |
| | | { |
| | | //考虑到用户有可能24点的时候不退出APP,这个时候直接刷新 |
| | | this.RefreshAlarmInfo(); |
| | | } |
| | | oldDeviceAlarmFile = fileName; |
| | | return fileName; |
| | | } |
| | | |
| | | #endregion |