You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Python脚本检测树莓派电源问题?替代屏幕黄闪电/红PWR灯方案

检测树莓派电源问题的Python方法

当然有啦!在Python脚本里,你完全可以通过读取树莓派系统的底层文件或者借助专门的工具库,来替代硬件LED的提示,精准判断电源相关的问题。下面给你几个实用的方案:

1. 读取系统状态文件(最直接,无需额外依赖)

树莓派的固件会把电源和节流状态记录在/sys/devices/platform/soc/soc:firmware/get_throttled这个文件里,文件里的十六进制数值对应不同的异常状态:

  • 0:一切正常
  • 0x50000:欠压状态(就是你说的黄色闪电图标对应的情况,电源供应不足)
  • 0x100000:过压状态(电源电压过高)
  • 0x80000:当前正处于节流状态(因为电源/温度问题,CPU被迫降频)
  • 0x40000:过去发生过节流事件

直接用Python读取这个文件就能拿到状态,代码示例:

def check_power_status():
    try:
        with open('/sys/devices/platform/soc/soc:firmware/get_throttled', 'r') as status_file:
            # 读取值并转为十六进制整数
            throttled_code = int(status_file.read().strip(), 16)
        
        status_messages = []
        # 逐个判断状态位
        if throttled_code & 0x50000:
            status_messages.append("⚠️ 欠压:电源供应不足,对应屏幕黄色闪电图标")
        if throttled_code & 0x100000:
            status_messages.append("⚠️ 过压:电源电压超出安全范围")
        if throttled_code & 0x80000:
            status_messages.append("🔧 当前CPU节流:因电源/温度问题被迫降频")
        if throttled_code & 0x40000:
            status_messages.append("📝 历史节流:过去曾出现电源/温度异常导致的降频")
        
        if not status_messages:
            return "✅ 电源状态一切正常"
        else:
            return "\n".join(status_messages)
    except Exception as err:
        return f"❌ 读取电源状态失败:{str(err)}"

# 调用并打印结果
print(check_power_status())

这个方法超靠谱,不需要安装任何额外依赖,直接读取系统原生文件,兼容性覆盖几乎所有树莓派型号。

2. 结合psutil库做间接验证

如果你本来就在用psutil做系统监控,也可以用它来辅助判断——通过检查CPU频率是否被强制降频,间接验证电源问题:
首先安装库:

pip install psutil

然后写个辅助检测函数:

import psutil

def check_cpu_throttle():
    cpu_info = psutil.cpu_freq()
    # 如果当前频率比最大频率低10%以上,大概率是节流导致
    if cpu_info.current < cpu_info.max * 0.9:
        return f"⚠️ CPU当前频率 {cpu_info.current:.0f} MHz,远低于最大频率 {cpu_info.max:.0f} MHz,可能存在电源/温度节流"
    else:
        return "✅ CPU频率正常,暂未检测到节流"

# 结合电源状态一起检测
print(check_power_status())
print(check_cpu_throttle())

注意,这个是间接判断,最好和第一种方法配合使用,结果会更准确。

小提示

  • 普通用户权限就可以读取/sys下的状态文件,不需要root权限。
  • 红色PWR LED闪烁一般也是电源不稳定的表现,这种情况通常也会被get_throttled文件记录为欠压状态,用上面的方法就能捕获到。

内容的提问来源于stack exchange,提问作者PiBer2

火山引擎 最新活动