告警的Reading值能不能使用对应传感器的Reading值?是否必须用Scanner?
ThresholdSensor_5v M=5,K2= -2
答案内容由AI生成,仅供参考:
根据您提供的上下文信息,以下是针对问题的详细解答:
告警事件(Event)的 Reading 值是否可以使用对应 ThresholdSensor 的 Reading 值?是否必须直接依赖 Scanner?
在 openUBMC 的 Event 配置机制中,Reading 属性支持通过表达式和动态引用语法(如 <=/...)从多种来源获取值。
"Event_CpuBoard5V_LowerVoltage": {
"Reading": "<=/ThresholdSensor_5v.Reading |> expr($1 * 5 / 100)",
...
}
Reading 是基于 ThresholdSensor_5v.Reading 计算而来。
注意:该表达式为
expr($1 * 5 / 100),表明开发者对原始传感器读值进行了单位或量纲调整,体现了灵活性。
Scanner 负责采集硬件寄存器、ADC 等原始数据(如电压、温度)。ThresholdSensor 则是基于 Scanner 的 Value 构建出的逻辑传感器,其 Reading 已完成标准化、线性化处理。Event 作为告警管理对象,可选择在任意层级取值:
Scanner.Value 获取原始数据(适合需要自定义计算)ThresholdSensor.Reading 获取标准化后的值(提高一致性、减少重复逻辑)| 事件名称 | Reading 数据源 | 特点 |
|---|---|---|
Event_CpuBoard5V_LowerVoltage |
<=/ThresholdSensor_5v.Reading |
复用已有传感器值,逻辑清晰 |
Event_CpuBoard5V_OverVoltage |
<=/Scanner_5v.Value |
直接读取原始 ADC 值,灵活定制计算 |
Reading: "Scanner_12v1.Value;Scanner_PowerGood.Value |> expr(...)"
Reading 支持复杂表达式,并可关联多个 Scanner。ThresholdSensor.Reading,但语法完全允许此类引用。“注意当前
Reading(也即原始值),数据源的范围不可超过255,若不满足则需要通过表达式进行一定程度的缩放……”
可能存在以下误解:
| 误解 | 实际情况 |
|---|---|
| 以为 Event 必须“重新计算” | 实际上应避免重复计算,复用可提升一致性 |
| 担心延迟或不同步 | openUBMC 使用同步机制确保数据一致性 |
| 没有意识到 ThresholdSensor.Reading 是可访问资源 | 其实可通过路径 <=/ThresholdSensor_X.Reading 引用 |
| 场景 | 推荐做法 |
|---|---|
| 需要与现有传感器保持一致读数 | <=/ThresholdSensor_X.Reading |
| 告警逻辑独立于传感器展示逻辑 | Scanner.Value 自定义表达式 |
| 多个事件共用同一物理量判断 | |
| 需要防抖或滤波 |
|> 管道语法正确传递参数。"InvalidReadingIgnore": 1,
"InvalidReading": 255
可用于忽略异常读数(如 255 表示无效)。| 问题 | 回答 |
|---|---|
| 告警的 Reading 是否能使用 ThresholdSensor 的 Reading? | |
| 是否必须使用 Scanner? | |
| 是否推荐复用 ThresholdSensor.Reading? |
最佳策略:根据实际需求选择数据源——一致性优先用 Sensor,灵活性优先用 Scanner。
相关链接:
Event的reading不限制来源
可以随便使用
符合数据类型即可