缘由

我的asus b760m有rgb,但是华硕Armoury Crate 确实比较臃肿,经常啥也没干它占用3-5%。而开源界有个openrgb,虽然看似简陋但是它小啊。于是采用python脚本+openrgb来玩转它。本方案应该也适用于其他rgb主板。

准备工作

1、下载openrgb,直接去它官网下载openrgb.org

        安装好后第一次要扫描设备,错过了用rescan

这里注意,我第一次打开的时候虽然扫描到了设备,addressable 1 2 3,但是有个size让我填,其默认是0,其实这个地方size指的灯珠数量。常见风扇有6个,12个等,面板很多是64,数数量。

这种灯就是ws2812灯珠,5v供电,io信号。定义为+、io、空、-

address可控制每个灯珠的设备在华硕主板上add_gen2_1 或add_gen2_2插针上,这种灯珠的灯带比较贵,好几块1米。搜索5v灯带+ws2812即可,灯珠4个脚。

另外还有一个12v的接口,4针定义分别为12v、green、red、blue这个是12v共阳极只能整体变色,不能控制到具体哪个灯珠。这种灯带比较便宜,几块钱好几米。常搜索12vrgb灯带,灯珠4个脚或6个脚。我自己用200欧电阻降压直接接3v灯珠也测试通过,只是它不是我心里想的rgb而是grb线序。

2、安装python,并安装依赖和插件

pip install psutil
pip install openrgb-python

python脚本

import time
import psutil
from openrgb import OpenRGBClient
from openrgb.utils import RGBColor, DeviceType

# 连接到 OpenRGB(默认连接本地 6742 端口)
client = OpenRGBClient()

# 找到你的主板设备
device = None
for dev in client.devices:
    if "ASUS" in dev.name or "PRIME" in dev.name:  # 根据你的主板名称调整
        device = dev
        break

if device is None:
    print("未找到主板设备,请在脚本中修改设备名称匹配条件")
    print("可用的设备:")
    for dev in client.devices:
        print(f"  - {dev.name}")
    exit()

# 定义颜色映射规则
def get_color_by_cpu_usage(percent):
    if percent <= 5:
        return RGBColor(55, 55, 55)  # 灰色
    elif percent <= 10:
        return RGBColor(0, 155, 0)      # 绿
    elif percent <= 15:
        return RGBColor(0, 155, 55)    # 绿青
    elif percent <= 20:
        return RGBColor(0, 155, 155)      # 青
    elif percent <= 25:
        return RGBColor(0, 50, 150)    # 蓝青
    elif percent <= 30:
        return RGBColor(0, 0, 150)    # 蓝
    elif percent <= 40:
        return RGBColor(55, 0, 150)      # 蓝紫
    elif percent <= 50:
        return RGBColor(128, 0, 128)    # 紫
    elif percent <= 60:
        return RGBColor(155, 0, 50)    # 玫红
    elif percent <= 70:
        return RGBColor(150, 0, 0)    # 红
    elif percent <= 80:
        return RGBColor(128, 50, 0)    # 橘
    elif percent <= 90:
        return RGBColor(200, 160, 0)    # 黄
    else:  # >90%
        return RGBColor(0, 0, 0)        # 黑

print("开始监控 CPU 占用率,按 Ctrl+C 停止")
print("颜色规则:")
print("  0-5%   : 灰色")
print("  5-10%  : 绿色")
print("  10-15% : 青绿")
print("  15-20% : 青色")
print("  20-25% : 青蓝")
print("  25-30% : 蓝色")
print("  35-40% : 蓝紫")
print("  40-50% : 紫色")
print("  50-60% : 玫红")
print("  60-70% : 红色")
print("  70-80% : 橘色")
print("  80-90% : 黄色")
print("  90%以上 : 灭灯")
print("-" * 40)

# 降低查询频率:每 2 秒更新一次
UPDATE_INTERVAL = 2

try:
    last_color = None  # 用于避免重复设置相同颜色
    
    while True:
        # 获取 CPU 占用率(采样间隔 2 秒)
        cpu_percent = psutil.cpu_percent(interval=2)
        
        # 根据占用率获取颜色
        current_color = get_color_by_cpu_usage(cpu_percent)
        
        # 只有颜色改变时才更新灯光(减少通信开销)
        if last_color is None or (current_color.red != last_color.red or 
                                   current_color.green != last_color.green or 
                                   current_color.blue != last_color.blue):
            device.set_color(current_color)
            last_color = current_color
            
            # 在控制台显示当前状态
            color_name = {
                (55, 55, 55): "灰色",
                (0, 155, 0): "绿",
                (0, 155, 55): "绿青",
                (0, 155, 155): "青",
                (0, 50, 150): "蓝青",
                (0, 0, 150): "蓝",
                (55, 0, 150): "蓝紫",
                (128, 0, 128): "紫",
                (155, 0, 50): "玫红",
                (150, 0, 0): "红",
                (128, 50, 0): "橘",
                (200, 160, 0): "黄",
                (0, 0, 0): "满载灭灯"
            }.get((current_color.red, current_color.green, current_color.blue), "未知")
            
            print(f"CPU占用率: {cpu_percent:5.1f}%  ->  {color_name}  RGB({current_color.red:3d}, {current_color.green:3d}, {current_color.blue:3d})")
        
        # 等待下一次更新
        time.sleep(UPDATE_INTERVAL)
        
except KeyboardInterrupt:
    print("\n\n已停止监控")

注意上面代码里面ASUS之类的是根据自己的主板品牌搜索设备,实际使用时要改成自己的。

运行上面的代码前,openrgb应该把SDK server打开。

设置开机自启脚本

在设置里可用软件setting里面直接设置

勾选start at login 最小化和服务即可。

win+r 运行 输入shell:startup就可以打开老系统才看见的启动文件夹。

在里面可以看见刚刚勾选自动启动生成的快捷方式。

然后新建一个bat文件,内容如下

@echo off
echo 正在启动 OpenRGB...
echo 等待 20 秒让 OpenRGB 初始化...
timeout /t 20 /nobreak
echo 启动 CPU 监控脚本...
python "d:\Documents\连接rgb.py"
pause

注意openrgb安装的位置和python脚本的位置。上文中bat保存的时候选择编码要是ansi编码,cmd是老东西,用utf-8这种通用编码它读不对,会造成异常。这样一通操作,就完成了。

有些朋友可能觉得时刻要运行个框不安逸。使用下面这个脚本,让脚本后台运行。

@echo off
if "%1"=="h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
timeout /t 20 /nobreak
python "d:\Documents\连接rgb.py"

openrgb的隐藏是对小图标点击show/hide

不过上面这个脚本运行后,要结束只能在任务管理器里面结束了。

最后分享一下这个

openrgb调整语言

在setting/general setting /language 里面选择简体中文即可

总结

这一番折腾后,整体cpu占用为0,整体内存占用28m。基本治好了我的强迫症。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐