Exemple #1
0
 public Condition(OperatorType operatorType, int right, ConditionAlgorithm algorithm, StateQuantityType conditionParameter)
 {
     _id = Guid.NewGuid();
     _operator = operatorType;
     _algorithm = algorithm;
     //_leftExpression = left;
     _rightExpression = right;
     _conditionParameter = conditionParameter;
 }
Exemple #2
0
 public Condition(OperatorType operatorType, int right, ConditionAlgorithm algorithm, StateQuantityType conditionParameter)
 {
     _id        = Guid.NewGuid();
     _operator  = operatorType;
     _algorithm = algorithm;
     //_leftExpression = left;
     _rightExpression    = right;
     _conditionParameter = conditionParameter;
 }
Exemple #3
0
 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);
        }