安装 ESXi 的主机因为是用的家用机主板,兼容性原因网卡 PICE 开机不能使用,主板仅支持异常断电自启。在异常断电之后,有远程物理按下开机的需求。
PC家用机开机本质就是把主板上的 Power Switch 针脚连接到机箱上,按钮按下给两个针脚路后主板开机。
想起树莓派有 GPIO 端口,一番研究之下确实可以通过树莓派驱动继电器来实现打开主板电源的功能。
准备工作
需要材料:
1.树莓派3B+ (40针版本GPIO)
2.杜邦线(公对母若干,母对母x3)
3.KV019 继电器(若有更多需求,也可以买多路继电器,这里仅使用单路继电器,仅需¥1.56)
4. 杜邦线一分二(可选,没有的话只能使用树莓派开机,不能按下物理按键)

5.小号平口螺丝刀
连接树莓派GPIO端口到继电器
树莓派GPIO所有端口:

连接到树莓派:

- GPIO 24 [Pin 18] 连接到继电器 Signal 端口
- 5V [Pin 2] 连接到继电器 +V 端口
- Ground [Pin 6] 连接到继电器 GND 端口
使用下列脚本测试继电器是否可控制,成功则会不停开关继电器。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) delayTime = 1 RELAIS_PIN = 24 GPIO.setup(RELAIS_PIN, GPIO.OUT) GPIO.output(RELAIS_PIN, False) try: while True: GPIO.output(RELAIS_PIN, True) time.sleep(delayTime) GPIO.output(RELAIS_PIN, False) time.sleep(delayTime) except KeyboardInterrupt: GPIO.cleanup()
连接到主板
可以在主板说明书找到 Power Switch 针脚位置:

把机箱的 Power Switch 接口拔出后,主板接上一分二的线,然后旧的机箱线接入一份二线的公口上(可选)。
把分线出来的延长线,或者直接延长主板针口,接入 NO 两个端口中。

使用修改过的仅打开1秒继电器的脚本进行测试:
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) delayTime = 1 RELAIS_PIN = 24 GPIO.setup(RELAIS_PIN, GPIO.OUT) GPIO.output(RELAIS_PIN, False) try: GPIO.output(RELAIS_PIN, True) time.sleep(delayTime) GPIO.output(RELAIS_PIN, False) GPIO.cleanup() except KeyboardInterrupt: GPIO.cleanup()
现在就可以使用 Python 命令来控制 PC 主机的开关了。
参考文章
https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header
https://sensorkit.joy-it.net/de/sensors/ky-019