首页 > 其他分享 >物联网平台组件2: 平台校验规则

物联网平台组件2: 平台校验规则

时间:2024-08-30 16:17:54浏览次数:3  
标签:Action string rules 平台 校验 RuleMgr var 组件 public

加载不通的规则引擎配置文件,使用DynamicExpresso校验采集数据,得出是否告警

 

 

rules.json

{
  "Rules": [
    {
      "Description": "温度超过阈值警报",
      "Condition": "temperature > 30",
      "Action": "HT"
    },
    {
      "Description": "湿度低于阈值警报",
      "Condition": "humidity < 20",
      "Action": "LH"
    },
    {
      "Description": "温度和湿度都正常",
      "Condition": "temperature <= 30 AND humidity >= 20",
      "Action": "THN"
    }
  ]
} 

RuleMgr.cs

using DynamicExpresso;
using System.Text.Json;

namespace ConfigRules
{
    // 用于存储来自 JSON 文件的规则  
    public class Rule
    {
        public string Description { get; set; }
        public string Condition { get; set; }
        public string Action { get; set; }
    }

    public class RuleSet
    {
        public List<Rule> Rules { get; set; }
    }

    public class RuleMgr
    {
        static List<Rule> rules;

        public static void LoadConfig(string filePath)
        {
            try
            {
                var jsonString = File.ReadAllText(filePath);
                var ruleSet = JsonSerializer.Deserialize<RuleSet>(jsonString);
                rules = ruleSet?.Rules ?? new List<Rule>();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"[Error] RuleMgr,LoadConfig,errmsg:{ex.Message}");
            }
        }

        public static void CompileCondition(Dictionary<string, double> datas)
        {
            try
            {
                var lstParam = new List<Parameter>();

                foreach (var data in datas)
                {
                    lstParam.Add(new Parameter(data.Key, data.Value));// 将传感器数据填入表达式的参数 
                }

                // 评估规则  
                var interpreter = new Interpreter();

                foreach (var rule in rules)
                {
                    var condition = rule.Condition.Replace(" AND ", " && ").Replace(" OR ", " || ");

                    bool result = (bool)interpreter.Eval(condition, lstParam.ToArray());
                    if (result)
                    {
                        Console.WriteLine(rule.Description);

                        switch (rule.Action)
                        {
                            case "HT":
                                break;
                            case "LH":
                                break;
                            case "THN":
                                break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"[Error] RuleMgr,CompileCondition,errmsg:{ex.Message}");
            }
        }
    }
}

Program.cs

namespace ConfigRules
{
    internal class Program
    { 
        static void Main(string[] args)
        {
            // 模拟传感器数据  
            var sensorData = new Dictionary<string, double>
            {
                { "temperature", 50 },
                { "humidity", 10 }
            };

            // 读取 JSON 文件中的规则  
            RuleMgr.LoadConfig("rules.json");

            RuleMgr.CompileCondition(sensorData);

            Console.ReadLine();
        }
    }
}

 

标签:Action,string,rules,平台,校验,RuleMgr,var,组件,public
From: https://www.cnblogs.com/chen1880/p/18388932

相关文章

  • uni-app之camera组件-人脸拍摄
    小程序录制视频;10-30秒;需要拍摄人脸,大声朗读数字(123456)这种。1.camera组件camera页面内嵌的区域相机组件。注意这不是点击后全屏打开的相机camera只支持小程序使用;官网链接1.2效果图 1.3页面布局camera设置宽100%,高度通过uni.getSystemInfo获取,全屏展示。在通过定位......
  • 企业EMS - 能源管理系统 - 能源管理系统源码-能源在线监测平台-双碳平台源码
    一、介绍企业EMS-能源管理系统-能源管理系统源码-能源在线监测平台-双碳平台源码’二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图                     ......
  • API接口对接电商平台好在哪?
    在数字化商业的浪潮中,电商平台的效率和智能化水平成为了企业成功的关键。电商API接口作为连接不同系统和应用的桥梁,提供了一种高效、灵活的解决方案。本文将探讨使用电商API接口对接电商平台的优势。一、自动化的力量电商API接口允许自动化执行一系列任务,从订单处理到库存管理,无......
  • 趋动科技 OrionX on VMware 打造 AI 就绪平台
    随着科技进步和产业变革的加速演进,人工智能(AI)已经成为兵家必争之地。今年以来伴随着ChatGPT带来的鲶鱼效应,人工智能成为科技产业创新的焦点,其应用范围越来越广泛,并将持续发展。科技产业龙头正加大在人工智能领域的军备竞赛。算法、数据、算力作为人工智能领域的三要素,也同时受到了......
  • API接口对接电商平台好在哪?
    在数字化商业的浪潮中,电商平台的效率和智能化水平成为了企业成功的关键。电商API接口作为连接不同系统和应用的桥梁,提供了一种高效、灵活的解决方案。本文将探讨使用电商API接口对接电商平台的优势。一、自动化的力量电商API接口允许自动化执行一系列任务,从订单处理到库存管理,无需......
  • 海大集团的可观测平台建设实践
    海大集团介绍海大集团是以科技为主导的中国农业龙头企业,1998年成立于广东广州,目前业务涵盖饲料、种苗、动保疫苗、智慧养殖、食品加工等现代农牧全产业链,在全球拥有分子公司逾600家、员工达4万人,位列2023中国企业500强第238位、2023中国民营企业500强第87位。凭借亮眼的业务表现......
  • openGauss-用户口令强度校验机制
    openGauss-用户口令强度校验机制可获得性本特性自openGauss1.1.0版本开始引入。特性简介对用户访问数据库所设置的口令强度进行校验。客户价值用户无法设置过低强度的口令,加固客户数据安全。特性描述初始化数据库、创建用户、修改用户时需要指定密码。密码必须满足强度......
  • 基于数据可视化的智慧社区内网平台【源码+LW+部署指导】
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • 基于Python实现校园爱心帮扶平台
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 物联网虚拟仿真系统通过可视化编程接入迅通云平台
    物联网虚拟仿真系统工作准备进入物联网虚拟仿真系统,拉入传感器并正确接好线后,双击配置仿真设备的随机值。打开物联网虚拟仿真系统本地工具,开启HTTPServer的服务于HTTP端口后,即可看到数据存入客户端在网页上搜索本地IP:8000的网址,即可看到JSON格式的仿真设备数据......