问题描述
Scanner可以配置FailureDebounceCount,默认是10,当某次扫描失败后Status会变成2
0: 正常获取值
1: 获取值失败
2: 获取值预失败,正在进行防抖
3: 处于无效状态
4: 初始状态, 暂未开始扫描
CoolingRequirement的MonitoringStatus和ThresholdSensor的ReadingStatus一般都是同步Scanner_XXX.Status,但是这两个Status只有0和非0两种状态,导致Scanner_XXX.Status为防抖状态时触发传感器No Reading和风扇异常调速
这应该就是一些风扇突然变响和传感器概率性读取失败的原因
修复建议
同步不同类的Status定义
方案冲突
按照社区文档传感器适配指南 | 文档中心 | openUBMC
门限传感器的ReadingStatus和Scanner的Status是一一对应的,按照之前的结论防抖状态2不应该被用户感知,只需要修改sensor/src/lualib/sensor/sensor_instance.lua
但是大量CSR中的门限传感器的ReadingStatus逻辑都是读到异常值时将状态置为2(其实置为3更合适),vpd仓目前有233处这种写法,例如
"ThresholdSensor_PCIeCpuTemp": {
"Reading": "<=/DPUCard_1.CPUTemperatureCelsius |> expr($1 & 255)",
"ReadingStatus": "<=/DPUCard_1.CPUTemperatureCelsius |> expr(($1 == 0 || $1 > 200) ? 2 : 0)"
},
"ThresholdSensor_GpuPower": {
"Reading": 170,
"OriginalReading": "<=/GPU_1.PowerWatts",
"ReadingStatus": "<=/GPU_1.PowerWatts |> expr(($1 == 0) ? 2 : 0)"
},
一旦改动门限传感器对状态2的处理逻辑,这233处都会受到影响,想问一下这种情况怎么处理


