【传感器】255异常值判断逻辑存在问题

// 此模板仅供参考,如果不适用可以修改

问题描述

测试在进行长稳测试过程中发现电源功率传感器POUT在为255W的时候,无法显示正常值,会显示成–

原因是因为rest接口吧255W的正常值当成了异常值处理,导致显示异常

这个地方不能简单的把255当成一个异常值吧,或许有的传感器异常时会上报255,但是有的传感器255是个正常值

环境信息

2512 LTS SP1

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

答案内容由AI生成,仅供参考:

结论与期望

  1. 现有逻辑存在缺陷:直接通过硬编码的方式将 255.000 视为无效值是不合理的,因为它无法区分“真正的传感器故障/数据不可用”与“传感器有效读数为255”这两种截然不同的情况。

  2. 期望的解决方案:不应仅凭数值 255 来判断数据是否有效。判断逻辑应基于更可靠的指标,例如:

    • ReadingStatus:该属性(当前值为 0)是专门用于指示传感器读数有效性的状态字段,0 代表正常,非 0 代表异常。
    • Health:该属性(当前值为 "OK")直接反映了传感器的健康状态。
    • Status:该属性(当前值为 "Enabled")显示了传感器是否被启用。

    正确的处理逻辑应优先检查 ReadingStatusHealth 字段,而不是简单地将所有读数为 255 的传感器值过滤掉。这不仅能解决 PS4 POut 在 255W 时显示异常的问题,也避免了因错误的通用假设而屏蔽其他传感器的有效数据。

点击此处查看详细分析解答

好的,根据您提供的上下文,我对“【传感器】255异常值判断逻辑存在问题”这一问题进行了分析。以下是基于现有信息的总结:

问题概述

在系统长稳测试中,发现电源功率传感器 PS4 POut 在输出为 255W 时,Web界面无法正常显示该值,而是显示为“–”(表示不可用或无效)。这是一个关于 255 这个数值被错误地当作异常值处理的问题。

核心问题分析

  1. 根因定位:REST接口的错误处理逻辑
    问题根源在于REST接口的脚本 get_threshold_sensor_list.lua 中对传感器读数的处理逻辑。具体代码片段如下:

    ReadingValue = sensor_item.SensorReading ~= 'na' and sensor_item.SensorReading ~= '255.000' and
        tonumber(sensor_item.SensorReading) or cjson.null,
    

    这段代码将 SensorReading'255.000' 的情况与 'na'(表示数据不可用)等同处理,统一返回 cjson.null(空值),导致前端无法显示。

  2. 问题的矛盾点:255既可能是异常值,也可能是正常值

    • 作为异常值(上下文知识): 根据知识图谱,数值 32768 是一个常见的故障指示器,而 255 在某些Power Supply(电源)功率传感器中也确实被视为一个故障或无效状态。例如,Threshold Sensor PS4 POutOriginalReading 是 255,但 Reading 是 170,表明原始值 255 在该传感器的特定线性转换规则下被解释为异常。
    • 作为正常值(当前案例): 在此次报告中,通过 mbctcl 命令手动将 OutputPowerWatts 设置为 255 后,传感器的 OriginalReadingReadingDisplay 均为 255.000Health 状态为 "OK"ReadingStatus0(表示正常)。这明确表明,在此特定传感器(ThresholdSensor_PsuOutputPower_01010F)的场景下,255W是一个完全有效的正常读数

结论与期望

  1. 现有逻辑存在缺陷:直接通过硬编码的方式将 255.000 视为无效值是不合理的,因为它无法区分“真正的传感器故障/数据不可用”与“传感器有效读数为255”这两种截然不同的情况。

  2. 期望的解决方案:不应仅凭数值 255 来判断数据是否有效。判断逻辑应基于更可靠的指标,例如:

    • ReadingStatus:该属性(当前值为 0)是专门用于指示传感器读数有效性的状态字段,0 代表正常,非 0 代表异常。
    • Health:该属性(当前值为 "OK")直接反映了传感器的健康状态。
    • Status:该属性(当前值为 "Enabled")显示了传感器是否被启用。

    正确的处理逻辑应优先检查 ReadingStatusHealth 字段,而不是简单地将所有读数为 255 的传感器值过滤掉。这不仅能解决 PS4 POut 在 255W 时显示异常的问题,也避免了因错误的通用假设而屏蔽其他传感器的有效数据。

确认是有问题,可以转 issue 处理