PVE下Openrgb使用说明,搭配homeassistant控制

September 30, 2024 / Administrator / 21阅读 / 0评论 / 分类:

1,首先打开openrgb网站 release页面。https://openrgb.org/releases.html 查看自己pve对应版本的连接复制下来,比如PVE8.2是debian12 也就是 Debian Bookworm. 连接上点右键复制连接
[[attached/PVE下Openrgb使用说明,搭配homeassistant方便控制/26718dc0bac08908564b0f02a995f04d_MD5.jpeg|Open: Pasted image 20240930111043.png]]
26718dc0bac08908564b0f02a995f04d_MD5
2, PVE shell下 输入把刚才的连接下载下来。
wget https://openrgb.org/releases/release_0.9/openrgb_0.9_amd64_bookworm_b5f46e3.deb
dpkg -i 刚刚下载的文件
如果提示错误 再输入
apt-get -f install 解决依赖
3,然后可以运行
openrgb -l
查看搜索到的设备。比如我的设备有2条内存以及主板三个设备(device),分别编号 0 1 2.
这里我想要控制主板argb接口接的风扇,我分别有几个风扇接在主板的argb1和argb2接口上,对应openrgb里面的zones: JRAINBOW1和JRAINBOW2
[[attached/PVE下Openrgb使用说明,搭配homeassistant方便控制/1491b40e686bf7c108093f90a961dc76_MD5.jpeg|Open: Pasted image 20240930112614.png]]
1491b40e686bf7c108093f90a961dc76_MD5
4,解释一下openrgb的操作流程,上面看到的每个device下面有mode和leds是device自己支持的模式,通过openrgb可以直接设定这些模式然后控制器(device)本身会自动执行,不需要openrgb一直运行。如果想要更高级的控制,比如声音同步或者图案显示啥的,就需要openrgb一直运行着。但是PVE没有GUI图形界面,所以如果想要高级控制需要把openrgb运行在server模式,然后用其他有图形界面的电脑来连接openrgb的server达到控制的目的。
5,通过opwnrgb -h命令可以查看openrgb的用法。毕竟是PVE主机也不想搞那么复杂,我就用命令行直接让控制器切换模式就可以了。
6,但是每次都去命令行输入命令很麻烦,所以就想到用home-assistant 的shell_command的方法给PVE发命令。
7,这里用最简单的命令指定device运行内置模式,比如openrgb -d 2 -m 'Rainbow wave' -b 100
8,只需要让HA调用这个命令明前指定模式和亮度就可以了,所以在HA的主机上新建python文件,内容如下: 需要编辑PVE地址,用户名和密码 里面的命令根据自己的实际情况做修改。保存python文件在HA config目录下的python_scripts目录。

#!/usr/bin/python3
import sys
import paramiko
HOST = "192.168.10.x"                  # ip adress of the host that can run openrgb
USER = "root"                          # username
PASS = "yourpass"                      # password
argc = len(sys.argv)
mode = sys.argv[1]
for i in range(2,argc-1):
    mode = f"{mode} {sys.argv[i]}"
br = sys.argv[argc-1]
if ' ' in mode:
    mode = f"'{mode}'"
print("MODE:",mode)
print("Brightness:",br)    
CMD = f"openrgb -d 2 -m {mode} -b {br}\r\n"

print("CMD:",CMD)
# 创建SSH对象
ssh = paramiko.SSHClient()
 
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
# 连接服务器
ssh.connect(hostname=HOST, port=22, username=USER, password=PASS)
 
# 执行命令
stdin, stdout, stderr = ssh.exec_command(CMD)
 
# 获取命令结果
print(stdout.read().decode())
 
# 关闭连接
ssh.close()

9,修改HA的config文件,增加一个input_select用来控制模式,一个input_number用来控制亮度,比如:input_selct的options根据自己的device支持的模式修改,就是openrgb -l之后device下面的modes对应的支持的所有模式。

input_select:
  light_mode:
    options:
      - Direct
      - Static    
      - Breathing
      - Flashing
      - Double flashing
      - Lightning
      - Meteor
      - Color ring
      - Planetary
      - Double meteor
      - Energy
      - Blink      
      - Clock
      - Color pulse
      - Color shift
      - Color wave
      - Marquee
      - Rainbow wave
      - Visor
      - Rainbow flashing
      - Color ring double flashing
      - Stack
      - Fire
    initial: Breathing   
input_number:
  openrgb_br:
    initial: 100
    min: 0
    max: 255
    step: 5 

10,修改HA的config文件,增加shell_command,比如:

python_script:
shell_command:
  pve_openrgb: 'python3 /config/python_scripts/pvelight.py {{light_mode}} {{brightness}}'

11,config文件保存完后重启或者重载HA。然后到HA的开发者工具->模板里面输入,在右边应该能看到对应的数值。

brightness: {{ states('input_number.openrgb_br') | int}}
light_mode: {{ states('input_select.light_mode') }}

[[attached/PVE下Openrgb使用说明,搭配homeassistant方便控制/933dd4db6499724d42e363a9623af5b2_MD5.jpeg|Open: Pasted image 20240930115815.png]]
933dd4db6499724d42e363a9623af5b2_MD5
12,到开发者工具->服务里面,找到shell command 自己写的command
然后输入

service: shell_command.pve_openrgb
data:
  brightness: 255
  light_mode: Direct

后,点击调用服务,看看能不能控制灯。
输入

service: shell_command.pve_openrgb
data:
  brightness: "{{ states('input_number.openrgb_br') | int }}"
  light_mode: "{{ states('input_select.light_mode') }}"

后调用服务,看看能不能控制灯。
[[attached/PVE下Openrgb使用说明,搭配homeassistant方便控制/16873227b311686791893a5dc53c1315_MD5.jpeg|Open: Pasted image 20240930120423.png]]
16873227b311686791893a5dc53c1315_MD5
13,都没问题后写一条自动话就行了

alias: 触发pve灯光
description: ""
trigger:
  - platform: state
    entity_id:
      - input_select.light_mode
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - platform: state
    entity_id:
      - input_number.openrgb_br
condition: []
action:
  - service: shell_command.pve_openrgb
    data:
      brightness: "{{ states('input_number.openrgb_br') | int }}"
      light_mode: "{{ states('input_select.light_mode') }}"
mode: single

14,最后看一下效果
![[video_20240930_121446.mp4]]

Openrgb声音同步的展示
![[attached/PVE下Openrgb使用说明,搭配homeassistant方便控制/video_20240930_131306.mp4|video_20240930_131306]]

文章作者:Administrator

文章链接:https://www.nasnas.site//archives/pve-openrgb-ha

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!


评论