如何通过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




