public Condition(OperatorType operatorType, int right, ConditionAlgorithm algorithm, StateQuantityType conditionParameter) { _id = Guid.NewGuid(); _operator = operatorType; _algorithm = algorithm; //_leftExpression = left; _rightExpression = right; _conditionParameter = conditionParameter; }
public UC_WHControlConfig_Tem_VM(string sn, Guid id, ConditionAlgorithm conditionAlgor, int lessThan, int greaterThan, bool isControlBrightness, int brightness, Dictionary <string, PowerCtrl_Type> powerCtrlDic) : base(sn, id, StrategyType.TemperatureStrategy, powerCtrlDic) { InitialConditionTypeList(); _conditionAlgor = conditionAlgor; _lessThan = lessThan; _greaterThan = greaterThan; _isControlBrightness = isControlBrightness; _brightness = brightness; }
public UC_WHControlConfig_Tem_VM(string sn, Guid id, ConditionAlgorithm conditionAlgor, int lessThan, int greaterThan, bool isControlBrightness, int brightness, Dictionary<string, PowerCtrl_Type> powerCtrlDic) : base(sn, id, StrategyType.TemperatureStrategy, powerCtrlDic) { InitialConditionTypeList(); _conditionAlgor = conditionAlgor; _lessThan = lessThan; _greaterThan = greaterThan; _isControlBrightness = isControlBrightness; _brightness = brightness; }
private List <Strategy> GetTemperatureStrategy(List <UC_WHControlConfig_Tem_VM> temStrategyList) { Strategy stra; List <Strategy> straList = new List <Strategy>(); List <UC_WHControlConfig_Tem_VM> temList; Rule ru; Condition conGreater, conLess; ActionCommand actCmd; int smartBright_Threshold = 100; ConditionAlgorithm condiAlgor = ConditionAlgorithm.MaxValueAlgorithm; foreach (var item in MonitorAllConfig.Instance().LedInfoList) { if (item.Sn != _selectedScreenSN) { continue; } temList = temStrategyList.FindAll(a => a.SN == item.Sn); stra = new Strategy(); stra.Type = StrategyType.TemperatureStrategy; stra.SN = item.Sn; if (temStrategyList.Count == 0) { stra.Id = Guid.NewGuid(); } else { stra.Id = temStrategyList[0].ID; } stra.RuleTable = new List <Rule>(); if (temList.Count != 0) { for (int i = 0; i < temList.Count; i++) { ru = new Rule(); //初始化ConditionElement ru.RuleCondition = new ConditionElement(); ru.RuleCondition.ConditionCollection = new List <Condition>(); conGreater = new Condition(OperatorType.GreaterThan, temList[i].GreaterThan, temList[i].ConditionAlgor, StateQuantityType.Temperature); ru.RuleCondition.ConditionCollection.Add(conGreater); conLess = new Condition(OperatorType.LessThan, temList[i].LessThan, temList[i].ConditionAlgor, StateQuantityType.Temperature); ru.RuleCondition.ConditionCollection.Add(conLess); //初始化ActionCommandElement ru.RuleAction = new ActionCommandElement(); ru.RuleAction.ActionCommandCollection = new List <ActionCommand>(); condiAlgor = temList[i].ConditionAlgor; #region 初始化亮度 if (temList[i].IsEnableBrightCtrl) { //调整亮度 if (temList[i].IsControlBrightness) { if (smartBright_Threshold > temList[i].GreaterThan) { smartBright_Threshold = temList[i].GreaterThan; } actCmd = new ActionCommand(); actCmd.ActionType = ActionType.Set; actCmd.ActionTarget = new ActionTarget(); actCmd.ActionTarget.TargetType = ActionTargetType.Parameter; actCmd.ActionTarget.ParameterTarget = new StateObject(); actCmd.ActionTarget.ParameterTarget.Type = StateQuantityType.Brightness; actCmd.ActionTarget.ParameterTarget.Value = temList[i].Brightness; actCmd.ActionTarget.DeviceTarget = new List <string>(); ru.RuleAction.ActionCommandCollection.Add(actCmd); } else { //开启智能亮度 } } #endregion #region 电源列表 if (temList[i].PowerCtrlDic.Count != 0) { //初始化打开电源列表 List <string> powerOpenList = new List <string>(); foreach (var status in temList[i].PowerCtrlDic) { if (status.Value == PowerCtrl_Type.open) { powerOpenList.Add(status.Key); } } if (powerOpenList.Count() != 0) { actCmd = new ActionCommand(); actCmd.ActionType = ActionType.Open; actCmd.ActionTarget = new ActionTarget(); actCmd.ActionTarget.TargetType = ActionTargetType.Device; actCmd.ActionTarget.DeviceTarget = powerOpenList; ru.RuleAction.ActionCommandCollection.Add(actCmd); } //初始化关闭电源列表 List <string> powerCloseList = new List <string>(); foreach (var status in temList[i].PowerCtrlDic) { if (status.Value == PowerCtrl_Type.close) { powerCloseList.Add(status.Key); } } if (powerCloseList.Count() != 0) { actCmd = new ActionCommand(); actCmd.ActionType = ActionType.Close; actCmd.ActionTarget = new ActionTarget(); actCmd.ActionTarget.TargetType = ActionTargetType.Device; actCmd.ActionTarget.DeviceTarget = powerCloseList; ru.RuleAction.ActionCommandCollection.Add(actCmd); } } #endregion stra.RuleTable.Add(ru); } } #region 处理智能亮度 if (smartBright_Threshold - 5 > 0) { Rule ruBright = new Rule(); //初始化ConditionElement ruBright.RuleCondition = new ConditionElement(); ruBright.RuleCondition.ConditionCollection = new List <Condition>(); conLess = new Condition(OperatorType.LessThan, smartBright_Threshold - 5, ConditionAlgorithm.MaxValueAlgorithm, StateQuantityType.Temperature); ruBright.RuleCondition.ConditionCollection.Add(conLess); //初始化ActionCommandElement ruBright.RuleAction = new ActionCommandElement(); ruBright.RuleAction.ActionCommandCollection = new List <ActionCommand>(); ActionCommand actBright = new ActionCommand(); actBright.ActionType = ActionType.Enable; actBright.ActionTarget = new ActionTarget(); actBright.ActionTarget.TargetType = ActionTargetType.SmartFunction; ruBright.RuleAction.ActionCommandCollection.Add(actBright); stra.RuleTable.Add(ruBright); } #endregion straList.Add(stra); } return(straList); }