using System;
|
using System.Collections.Generic;
|
using Shared;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.Device.Logic
|
{
|
public class LogicIfon
|
{
|
#region ----逻辑条件输入----
|
/// <summary>
|
/// 添加设备条件的方法
|
/// </summary>
|
/// <param name="common">Common.</param>
|
/// <param name="objecttype">Objecttype.</param>
|
public static void AddDeviceconditions(CommonDevice common, Dictionary<string, string> objecttype)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "1")
|
{
|
if ((Common.Logic.CurrentLogic.Conditions[i]["MacAddr"] == common.DeviceAddr) && (Common.Logic.CurrentLogic.Conditions[i]["Epoint"] == common.DeviceEpoint.ToString()))
|
{
|
if (common.Type == DeviceType.TemperatureSensor)//设备温度传感器有点特别
|
{
|
var dev = common as TemperatureSensor;
|
string str = "";
|
if (dev.SensorDiv == 1)
|
{
|
str = "1026";
|
}
|
else
|
{
|
str = "1029";
|
}
|
if (Common.Logic.CurrentLogic.Conditions[i]["Cluster_ID"] == str)
|
{
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
}
|
|
}
|
else if (common.Type == DeviceType.IASZone)
|
{
|
var iASZonedevice = common as IASZone;
|
if (iASZonedevice.IasDeviceType == 541)
|
{//球形移动传感器
|
if (Common.Logic.CurrentLogic.Conditions[i]["Cluster_ID"] == objecttype["Cluster_ID"])
|
{
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
}
|
continue;
|
}
|
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
|
}
|
else
|
{
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
}
|
}
|
|
}
|
}
|
Common.Logic.CurrentLogic.Conditions.Add(objecttype);
|
}
|
/// <summary>
|
/// 添加Logic条件的方法
|
/// </summary>
|
/// <param name="common">Common.</param>
|
/// <param name="objecttype">Objecttype.</param>
|
public static void AddLogicconditions(Common.Logic logic, Dictionary<string, string> objecttype)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "2")
|
{
|
|
if (Common.Logic.CurrentLogic.Conditions[i]["Condition_LogicId"] == logic.LogicId.ToString())
|
{
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
}
|
|
}
|
|
}
|
Common.Logic.CurrentLogic.Conditions.Add(objecttype);
|
}
|
/// <summary>
|
/// 添加安防条件的方法
|
/// </summary>
|
/// <param name="objecttype">Objecttype.</param>
|
public static void AddSecurityconditions(Dictionary<string, string> objecttype)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "6")
|
{
|
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
|
}
|
|
}
|
Common.Logic.CurrentLogic.Conditions.Add(objecttype);
|
}
|
|
/// <summary>
|
/// 添加地理位置条件的方法
|
/// </summary>
|
/// <param name="objecttype">Objecttype.</param>
|
public static void AddLocationconditions(Dictionary<string, string> objecttype)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == objecttype["Type"])
|
{
|
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Conditions.Insert(i, objecttype);
|
return;
|
|
}
|
|
}
|
Common.Logic.CurrentLogic.Conditions.Add(objecttype);
|
}
|
#endregion
|
#region ----逻辑输出目标----
|
|
/// <summary>
|
/// 添加设备输出的方法
|
/// </summary>
|
/// <param name="common">Common.</param>
|
/// <param name="actionsInfo">Objecttype.</param>
|
public static void AddDeviceActions(ZigBee.Device.CommonDevice common, Dictionary<string, object> actionsInfo)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "0")
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == common.DeviceAddr && Common.Logic.CurrentLogic.Actions[i]["Epoint"].ToString() == common.DeviceEpoint.ToString())
|
{
|
Common.Logic.CurrentLogic.Actions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
|
return;
|
}
|
}
|
}
|
Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
|
}
|
/// <summary>
|
/// 添加门锁设备输出的方法
|
/// </summary>
|
/// <param name="common">Common.</param>
|
/// <param name="actionsInfo">Objecttype.</param>
|
public static void AddDoorLockActions(ZigBee.Device.CommonDevice common, Dictionary<string, object> actionsInfo)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "8")
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == common.DeviceAddr && Common.Logic.CurrentLogic.Actions[i]["Epoint"].ToString() =="200")
|
{
|
Common.Logic.CurrentLogic.Actions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
|
return;
|
}
|
}
|
}
|
Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
|
}
|
/// <summary>
|
/// 添加Scene输出的方法
|
/// </summary>
|
/// <param name="Scene">Common.</param>
|
/// <param name="actionsInfo">Objecttype.</param>
|
public static void AddSceneactions(Shared.Common.SceneUI Scene, Dictionary<string, object> actionsInfo)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "2")
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == Scene.Id.ToString())
|
{
|
Common.Logic.CurrentLogic.Actions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
|
return;
|
}
|
}
|
}
|
Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
|
}
|
/// <summary>
|
/// 添加安防输出的方法
|
/// </summary>
|
/// <param name="actionsInfo">actionsInfo.</param>
|
public static void AddSecurityactions(Dictionary<string, object> actionsInfo)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "6")
|
{
|
Common.Logic.CurrentLogic.Actions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
|
return;
|
}
|
}
|
Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
|
}
|
|
/// <summary>
|
/// 添加自动化输出的方法
|
/// </summary>
|
/// <param name="actionsInfo">Objecttype.</param>
|
/// <param name="logic">logic</param>
|
public static void AddLogicactions(Common.Logic logic, Dictionary<string, object> actionsInfo)
|
{
|
|
for (int i = 0; i < Common.Logic.CurrentLogic.Actions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["LinkType"].ToString() == "4")
|
{
|
if (Common.Logic.CurrentLogic.Actions[i]["DeviceAddr"].ToString() == logic.LogicId.ToString())
|
{
|
Common.Logic.CurrentLogic.Actions.RemoveAt(i);
|
Common.Logic.CurrentLogic.Actions.Insert(i, actionsInfo);
|
return;
|
}
|
}
|
}
|
Common.Logic.CurrentLogic.Actions.Add(actionsInfo);
|
|
}
|
#endregion
|
#region ----关联app账号----
|
/// <summary>
|
/// 关联app账号
|
/// </summary>
|
/// <param name="accountsInfo"></param>
|
public static void Addaccounts(Dictionary<string, string> accountsInfo)
|
{
|
for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == accountsInfo["Type"])
|
{
|
Common.Logic.CurrentLogic.Accounts.RemoveAt(i);
|
Common.Logic.CurrentLogic.Accounts.Insert(i, accountsInfo);
|
return;
|
}
|
}
|
Common.Logic.CurrentLogic.Accounts.Add(accountsInfo);
|
}
|
#endregion
|
}
|
|
|
}
|