โครงการนี้มีการควบคุมพลังงานพีซีระยะไกลผ่านบอร์ด HomeAssistant และ ESPHOME ESP8266/ESP32
ฉันใช้โครงการนี้เพื่อเปิดและปิด NAS จากพีซีจากระยะไกลผ่านทางผู้ช่วยที่บ้านเป็นทางเลือกในการปลุก (WOL) ซึ่งเป็นที่รู้จัก
power-off/suspended/hybernate (ปุ่มปุ่มเปิดปิดสั้น ๆ )shutdown/suspend/hybernate ของระบบปฏิบัติการวิดีโอ YouTube:
ภาพหน้าจอ HomeAssistant:

Wake-On-Lan (WOL) มีจุดประสงค์เพื่อเปิดเครื่องคอมพิวเตอร์จากระยะไกลผ่านทางอีเธอร์เน็ตโดยส่ง magic packet ที่เรียกว่า สิ่งนี้มีข้อ จำกัด ที่รู้จักหลายประการซึ่งไม่สามารถใช้ได้กับโครงการ ESP นี้:
wake พีซีจากสถานะระงับหรือปิดกั้นได้เท่านั้น ไม่มีฟังก์ชั่นการปิด/ระงับsleep การเชื่อมต่อ SSH ไปยังพีซีระยะไกลสามารถทำได้เช่นโดยการดำเนินการคำสั่ง pm-suspend (ติดตั้งผ่าน sudo apt install pm-utils ) เอกสารอ้างอิง Ubuntu PM-ACTION ข้อเสีย:ฮาร์ดแวร์ประกอบด้วย ESP8266 หรือ ESP32 และหมุด IO สองตัวติดตั้งบนแผ่นโลหะ PCI (ดูภาพด้านล่าง) ในกรณีของฉันฉันใช้บอร์ด ESP8266 Nodemcu ในทางทฤษฎีของบอร์ด ESP8266 หรือ ESP32 สามารถใช้สำหรับโครงการนี้ได้

NAS ของฉันขึ้นอยู่กับเมนบอร์ด Intel Core i7 ASROCK Z97 ATX และมีส่วนหัวชาย 2.5 มม. 2x5 มาตรฐาน:

ATX Header USB 2.0:
ส่วนหัว J1 PIN 1 ค่าคงที่ +5V พลังงานบนพิน 1 แม้ว่าพีซีจะปิดการใช้งานและใช้เพื่อเพิ่มพลังงาน NODEMCU ESP8266 หรือ ESP32 ใช้พลังงานผ่านตัวควบคุม 3V3 บนบอร์ด
แผงระบบส่วนหัว ATX:
ส่วนหัว J2 มีพลังงานรีเซ็ตและหมุด GND:
ปุ่มเปิดปิดพิน 6
รีเซ็ตปุ่มพิน 7
gnd pin 5
PIN D1 ใช้เพื่ออ่านสถานะพลังงานจากพินรีเซ็ต: สูงเปิดอยู่ต่ำปิด ตัวต้านทาน R1 ใช้เพื่อลดกระแสไฟฟ้าเมื่อพิน IO ถูกตั้งค่าเป็นเอาต์พุตโดยไม่ตั้งใจ
PIN D2 ใช้เพื่อดึงปุ่มเปิดปิดต่ำเพื่อสร้างการกดสั้นหรือยาว ทรานซิสเตอร์ Q1 ใช้สำหรับการแยกที่ปลอดภัยระหว่าง ESP8266 และเมนบอร์ด
คำเตือน: หมุด ATX และ ESP ทั้งหมดจะต้องทำงานที่ 3V3

สามารถติดตั้ง PCB DIY Breakout ที่ส่วนหัวแผงระบบเพื่อเชื่อมต่อปุ่มเปิดปิด SW1 และปุ่มรีเซ็ต SW2
มีพื้นที่เพียงพอในเคสคอมพิวเตอร์ ATX เพื่อติดตั้งบอร์ด ESP อย่างไรก็ตามเคสคอมพิวเตอร์เป็นแผ่นป้องกันโลหะดังนั้นระยะทาง WiFi ไปยังสถานีฐานจะลดลง ขอแนะนำให้วาง ESP นอกเคสคอมพิวเตอร์เมื่อการเชื่อมต่อ WiFi ไม่เสถียรหรือระยะทางต่ำเกินไป ESP32 อาจส่งผลให้เกิดความเสถียรในการเชื่อมต่อ WiFi ที่แตกต่างกัน แต่โดยรวมแล้วขึ้นอยู่กับสภาพแวดล้อม
ESP8266 PCB ติดตั้งที่ด้านหลังของเคสพีซี:

เฟิร์มแวร์แอปพลิเคชัน ESPHOME สามารถอัปเดตผ่านการเชื่อมต่อ USB (พอร์ตอนุกรมเสมือน) หรือ WiFi OTA (ผ่านการอัปเดตอากาศ)
การอัปเดตเฟิร์มแวร์ผ่าน WiFi ถูกเปิดใช้งานเมื่อกำหนด ota ในไฟล์. yaml สิ่งนี้ต้องใช้การเชื่อมต่อ WiFi ระหว่างคอมพิวเตอร์โฮสต์และ ESP การอัปเดต OTA ไม่ทำงานเมื่อเข้าสู่ระบบจาก ESP ไปยังสถานีฐาน WiFi ล้มเหลวเนื่องจากข้อมูลรับรอง WiFi ที่ไม่ถูกต้อง ในกรณีนี้จำเป็นต้องมีการอัปเดตผ่านอนุกรมหรือผ่านทางเลือก ap ตามที่กำหนดค่าไว้ในไฟล์. yaml
แอปพลิเคชัน Esphome ประกอบด้วยไฟล์ YAML สองไฟล์ ไฟล์การกำหนดค่าหนึ่งไฟล์และ secrets.yaml ที่สอง 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เพิ่มการรวม PC Power ลงในแดชบอร์ดผ่านการแก้ไข RAW:
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_toggleswitch.pc_power_button_long_press เป็น switch.pc_hard_power_offswitch.pc_power_sense เป็น switch.pc_power_state