該項目包含遠程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 。