| | |
| | | { |
| | | Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); |
| | | } |
| | | //读取系统当前时间:时-分 |
| | | int h =int.Parse(DateTime.Now.ToString("hh")); |
| | | int m = int.Parse(DateTime.Now.ToString("mm")); |
| | | //默认一个时间段(开始时间为:系统当前,结束时间为:开始时间+1个时间) |
| | |
| | | Common.Logic.CurrentLogic = new Common.Logic(); |
| | | Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 |
| | | Common.Logic.CurrentLogic.LogicType = 2;//标记逻辑类型 |
| | | Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); |
| | | Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.openmode); |
| | | Common.Logic.CurrentLogic.Conditions.Add(timeDictionary);//添加条件 |
| | | Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//添加目标 |
| | | var oneLogic = new OneLogic(); |
| | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 门锁取消设置用的方法(相当一个关闭常开模式按钮,不需要显示该自动化) |
| | | /// 门锁取消设置用的方法(相当一个关闭常开模式按钮,分类-自动化-不需要显示该自动化) |
| | | /// </summary> |
| | | /// <param name="timeVlaue">时间值</param> |
| | | /// <param name="common">设备</param> |
| | | /// <returns></returns> |
| | | public static void LockAddModifyLogic(int timeVlaue, CommonDevice common) |
| | | public static void LockAddModifyLogic(int timeVlaue, CommonDevice common) |
| | | { |
| | | //读取系统当前时间:时-分 |
| | | var h = DateTime.Now.ToString("hh"); |
| | | var m = DateTime.Now.ToString("mm"); |
| | | Dictionary<string, string> timeConditionsInfo = new Dictionary<string, string>(); |
| | |
| | | timeConditionsInfo.Add("DateType", "0"); |
| | | timeConditionsInfo.Add("RemindTime", "0"); |
| | | timeConditionsInfo.Add("EnDelay", "0"); |
| | | timeConditionsInfo.Add("DelayTime", "0"); |
| | | timeConditionsInfo.Add("DelayTime", "0"); |
| | | timeConditionsInfo.Add("StartHour", h); |
| | | timeConditionsInfo.Add("StartMin", m); |
| | | timeConditionsInfo.Add("DoorLockOpenDelayTime", timeVlaue.ToString()); |
| | |
| | | currentLogic.LogicName = Language.StringByID(R.MyInternationalizationString.openmode); |
| | | currentLogic.Conditions.Add(timeConditionsInfo); |
| | | currentLogic.Actions.Add(actionsInfo); |
| | | //修改或者添加是根据逻辑id值(0新增;1,修改) |
| | | Exist(3);//查找是否存在设置过失效时间(有的话删除,再添加) |
| | | Send.AddModifyLogic(currentLogic); |
| | | |
| | | } |
| | | |
| | | ///<summary> |
| | | /// 门锁删除逻辑 |
| | | /// 是否存在S-one逻辑方法(true为存在) |
| | | /// </summary> |
| | | public static async void LockDelLogic(CommonDevice common) |
| | | public static async System.Threading.Tasks.Task<bool> Exist(int valueInt=2) |
| | | { |
| | | int logicId = 0; |
| | | bool exist = false; |
| | | var Idlist = await Send.GetLogicId(valueInt); |
| | | if (Idlist.Count != 0) |
| | | { |
| | | if (valueInt==3) { |
| | | for (int i = 0; i < Idlist.Count; i++) |
| | | { |
| | | //valueInt=3一条特殊的自动化(用来设置失效时间) |
| | | Send.DelLogic(Idlist[i]); |
| | | } |
| | | } |
| | | exist = true; |
| | | } |
| | | return exist; |
| | | } |
| | | |
| | | ///<summary> |
| | | /// s-one门锁确认取消发送的方法 |
| | | /// </summary> |
| | | public static async void LockCloseLogic(CommonDevice common) |
| | | { |
| | | //读取系统当前时间:时-分 |
| | | int h =int.Parse(DateTime.Now.ToString("hh")); |
| | | int m= int.Parse(DateTime.Now.ToString("mm")); |
| | | //转化为多少分钟; |
| | | int s = h * 60 + m; |
| | | List<Common.Logic> logicList = new List<Common.Logic>(); |
| | | logicList.Clear(); |
| | | var Idlist = await Send.GetLogicId(2); |
| | | if (Idlist.Count != 0) |
| | | { //先去读取网关看是否存在数据; |
| | | var listlogic = await Send.ReadList(Idlist.Count, 2); |
| | | for (int j = 0; j < listlogic.Count; j++) |
| | | var list = await Send.ReadList(Idlist.Count, 2); |
| | | for (int j = 0; j < list.Count; j++) |
| | | { |
| | | var logic = listlogic[j]; |
| | | foreach (var actions in logic.Actions) |
| | | var logic = list[j]; |
| | | foreach (var conditions in logic.Conditions) |
| | | { |
| | | var linkType = actions["LinkType"].ToString(); |
| | | if (linkType != "8") |
| | | var linkType = conditions["Type"]; |
| | | if (linkType == "5") |
| | | { |
| | | //用户有可能在自动化那里再次编辑; |
| | | //必须过滤掉不需要的信息(输出功能延时:是没有DeviceAddr和Epoint),否则有异常; |
| | | continue; |
| | | int startMin = int.Parse(conditions["StartMin"]); |
| | | int startHour = int.Parse(conditions["StartHour"]); |
| | | int stopMin = int.Parse(conditions["StopMin"]); |
| | | int stopHour = int.Parse(conditions["StopHour"]); |
| | | int s1 = startMin + startHour * 60;//开始时间值 |
| | | int s2 = stopMin + stopHour * 60;//结束时间值 |
| | | if (s >= s1&&s<=s2) |
| | | { |
| | | //查找系统时间值是否属于这个范围; |
| | | logicList.Add(logic); |
| | | } |
| | | } |
| | | var obj1 = actions["DeviceAddr"].ToString(); |
| | | var obj2 = actions["Epoint"].ToString(); |
| | | if (common.DeviceAddr == obj1 && common.DeviceEpoint.ToString() == obj2) |
| | | { |
| | | logicId = logic.LogicId; |
| | | break; |
| | | //找到跳出循环体 |
| | | } |
| | | |
| | | } |
| | | if (logicId != 0) |
| | | { |
| | | break; |
| | | //找到跳出循环体 |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (logicId == 0) |
| | | foreach (var logic in logicList) |
| | | { |
| | | //没有找到logicId删除没有意义; |
| | | return; |
| | | logic.IsEnable = 3;//改变逻辑使能状态; |
| | | //用foreach发送命令; |
| | | Send.AddModifyLogic(logic); |
| | | } |
| | | Send.DelLogic(logicId); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |