该项目包含远程PC电源控制,可通过乡亲和Esphome ESP8266/ESP32板。
我使用该项目通过家庭助理远程和关闭电脑为PC供电,以替代已知限制。
power-off/suspended/hybernate (行为短按电源按钮)中打开PC电源。shutdown/suspend/hybernate操作系统(行为短按电源按钮)。Youtube 视频:
乡下屏幕截图:

Lan-lan(WOL)旨在通过发送所谓的magic packet来通过以太网打开计算机电源。这有几个已知限制,这些限制不适用于此ESP项目:
wake PC。没有关闭/暂停功能。sleep状态下,可以通过执行pm-suspend命令(通过sudo apt install pm-utils安装),参考Ubuntu PM-Action文档来进行与远程PC的SSH连接。缺点:该硬件由ESP8266或ESP32和两个IO引脚组成,安装在PCI金属板上(请参见下图)。就我而言,我使用了ESP8266 nodemcu板。从理论上讲,任何ESP8266或ESP32板都可以用于该项目。

我的NAS基于Intel Core i7 Asrock Z97 ATX主板,并包含标准的2.5mm 2x5男性标头:

ATX标题USB 2.0:
标头J1引脚1在引脚1上的常数 +5V电源,即使PC发电并用于启动NodeMCU。 ESP8266或ESP32通过板载3V3调节器供电。
ATX标头系统面板:
标题J2包含功率,重置和GND引脚:
电源按钮引脚6。
重置按钮引脚7。
GND引脚5。
引脚D1用于从重置引脚读取功率状态:高点,低关闭。当IO引脚不小心设置为输出时,电阻R1用于最小化电流。
引脚D2用于拉低电源按钮以产生短或长按下。晶体管Q1用于ESP8266和主板之间的安全隔离。
警告:所有ATX和ESP销都必须在3v3工作。

可以将DIY突破PCB安装在系统面板标头处,以连接电源按钮SW1和RESET按钮SW2 。
ATX计算机外壳中有足够的空间来安装ESP板。但是,计算机外壳是金属屏蔽的,因此与基站的WiFi距离减小。当WiFi连接不稳定或距离太低时,建议将ESP放置在计算机外壳之外。 ESP32可能会导致不同的WiFi连接稳定性,但总体而言,这取决于环境。
ESP8266 PCB安装在PC外壳背面:

可以通过USB连接(虚拟串行端口)或WiFi OTA(在空气更新上)更新Esphome应用程序固件。
在.YAML文件中配置ota时,通过WiFi更新固件。这需要主机计算机和ESP之间的WiFi连接。当从ESP到WiFi基站由于错误的WiFi凭据而失败时,OTA更新不起作用。在这种情况下,需要通过串行或通过.YAML文件中配置的ap后备进行更新。
Esphome应用程序由两个YAML文件组成。一个配置文件和第二个secrets.yaml存储密码。
文档:
配置以下文件:
platform和board 。请参阅Esphome文档,以获取有关Esphome YAML配置的更多信息。
将USB电缆连接到ESP8266或ESP32板,然后输入以下命令。 (在Ubuntu上测试了示例)。有关更多信息,请参阅Esphome.io。
# Clone this repository
$ git clone [email protected]:Erriez/ESPHomePCPowerControlHomeAssistant.git
# Install Python3 virtualenv
$ sudo apt install python3-virtualenv
# Create virtualenv
$ virtualenv venv
# Activate virtualenv
$ source venv/bin/activate
# Install ESPHome
$ pip install esphome
# Optional: Install platformio updates
$ platformio platform update
$ platformio upgrade
# Optional: Add user permission serial port
$ sudo usermod -a -G dialout < USERNAME >
$ sudo reboot now
# Check ESPHome installation
$ esphome --help
# Optional: Compile program without upload
$ esphome compile pc-power.yaml
# Upload program to ESP8266 or ESP32
$ esphome run pc-power.yaml
# Select serial port or WiFi to upload application
# Check logs
$ esphome logs pc-power.yaml本节介绍家庭助理配置。
Configuration | Integrations: Add Integration: ESPHomesecrets.yml配置的密码。 esphome_api_password 。通过RAW编辑将PC电源集成添加到仪表板:
title : Home
views :
- title : PC
path : pc
badges : []
cards :
- type : button
entity : switch.pc_power_toggle
show_name : true
- type : button
tap_action :
action : none
entity : binary_sensor.pc_power_state
hold_action :
action : none
- type : button
tap_action :
action : toggle
entity : switch.pc_hard_power_off
icon_height : 40px
show_state : false
show_name : true
show_icon : true 重新启动家庭助理,准备出发!
Esphome YAML文件格式使用Esphome版本2024.6.0更改。旧格式会产生错误:
$ esphome compile ESPHomePCPowerControlHomeAssistant/pc-power.yaml
INFO ESPHome 2024.9.2
INFO Reading configuration ESPHomePCPowerControlHomeAssistant/pc-power.yaml...
Failed config
ota.unknown: [source ESPHomePCPowerControlHomeAssistant/pc-power.yaml:27]
'ota' requires a 'platform' key but it was not specified.
and:
Failed config
switch.gpio: [source ESPHomePCPowerControlHomeAssistant/pc-power.yaml:30]
Pin 4 is used in multiple places.
在这种情况下,请更新此项目中的新文件格式。
switch.pc_power_button到switch.pc_power_toggle 。switch.pc_power_button_long_press到switch.pc_hard_power_off 。switch.pc_power_sense to switch.pc_power_state 。