# 让 AI 看设备状态,不把停机按钮也交出去 | EasyNet Source: https://easynet.run/cases/problems/factory-read-only-telemetry [easynet.run · 全部问题场景](https://easynet.run/cases#problem-scenarios) # 让 AI 看设备状态,不把停机按钮也交出去 设备报警后,工程师希望助手整理过去一小时的温度和振动变化。这项工作需要看历史数据,不需要重启设备。若为了查询方便就给助手一套完整运维账号,分析入口也会带上停机能力。 已有历史数据库、只读监控面板或数据镜像时,应先用这些来源。工程师能在面板直接看清的问题,不必让助手介入。需要多个分析工具复用同一种数据读取时,再把查询操作单独接出来。 提供方在获准的网关或历史库侧维护只读函数,接受设备编号、时间段和采样要求,返回带时间戳的读数及缺测标记。EasyNet 让获准助手调用这一操作,控制指令和主机终端不放进这个入口。 设备范围从调用身份和现场授权确定,查询窗口与频率也要限制。凭证留在提供方,返回数据是否允许进入外部模型由工厂另行确认;函数在现场运行,不代表后续分析一定留在现场。 网关适配、网络分区和查询负载仍由工业系统负责人检查。助手可以指出读数变化,不能仅凭相关性宣布设备安全或建议自动停机。时间不同步、传感器缺测等情况,要跟着数据一起显示。 从历史或合成数据开始,验证未知设备、过大时间窗和高频请求会被拒绝,再安排获批的非关键现场试验。工程师应能从总结回到原始读数核查,而不是只得到一段无法追溯的故障判断。 01 工程师选时间窗 指定设备与采样上限 02 读取历史库 只有只读账号与操作 03 返回缺测标记 从总结回查真实读数 历史读数进入分析,控制动作留在原系统。 缺测不能当作零温度 合成历史样本的本地整理,不连接工厂设备,也不作安全判断。 本地示例 · python ``` samples = [{"minute": 0, "temperature": 42}, {"minute": 1, "temperature": None}, {"minute": 2, "temperature": 45}] valid = [s["temperature"] for s in samples if s["temperature"] is not None] missing = [s["minute"] for s in samples if s["temperature"] is None] assert missing == [1] print({"observed_range": [min(valid), max(valid)], "missing_minutes": missing}) ``` 预期结果:返回范围42–45及缺失分钟1;没有把缺测填零或判断设备安全。 接入时的检查项 接口及服务账号都无法执行停机、复位或修改参数。 超长窗口、未知设备与高频请求被限制,不拖慢生产监控。 缺失和陈旧样本有明确标记,助手不能用它们宣称现场安全。 源码与接入资料 [无需 SSH,收集事故证据](https://easynet.run/cases/incident-evidence) [给 Agent 一个机器人动作,而不是整机控制权](https://easynet.run/cases/bounded-robot-action) [MCP 官方:授权规范(2025-11-25)](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization)