Proyek ini berisi kontrol daya PC jarak jauh melalui papan homeassistant dan esphome ESP8266/ESP32.
Saya menggunakan proyek ini untuk memberi daya pada NAS berbasis PC saya dari jarak jauh dan mati melalui asisten rumah sebagai alternatif untuk bangun-on-lan (WOL) yang memiliki keterbatasan.
power-off/suspended/hybernate (Tombol Power Power Perilaku Pendek).shutdown/suspend/hybernate dari Sistem Operasi (Behavior Short Press Power Button).Video YouTube:
Tangkapan layar homeassistant:

Wake-on-Lan (WOL) dimaksudkan untuk mengubah daya komputer di jarak jauh melalui Ethernet dengan mengirim magic packet yang disebut. Ini memiliki beberapa batasan yang diketahui yang tidak berlaku dengan proyek ESP ini:
wake PC dari status penangguhan atau power-off. Tidak ada fungsi shutdown/penangguhan.sleep , koneksi SSH ke PC jarak jauh dapat dibuat misalnya dengan mengeksekusi perintah pm-suspend (instal melalui sudo apt install pm-utils ), referensi dokumentasi aksi PM Ubuntu. Kerugian:Perangkat keras terdiri dari ESP8266 atau ESP32 dan dua pin IO, dipasang pada pelat logam PCI (lihat gambar di bawah). Dalam kasus saya, saya menggunakan papan ESP8266 NODEMCU. Secara teoritis setiap papan ESP8266 atau ESP32 dapat digunakan untuk proyek ini.

NAS saya didasarkan pada motherboard Intel Core i7 Asrock Z97 ATX dan berisi header pria 2.5mm 2x5 standar:

ATX Header USB 2.0:
Header J1 pin 1 konstanta +daya 5V pada pin 1, bahkan ketika pc power-off dan digunakan untuk memberi daya pada nodemcu. ESP8266 atau ESP32 didukung melalui regulator 3V3 on-board.
Panel Sistem Header ATX:
Header J2 berisi pin kekuatan, reset, dan GND:
Tombol Daya Pin 6.
Reset tombol pin 7.
PIN GND 5.
Pin D1 digunakan untuk membaca status daya dari pin reset: High is On, rendah dimatikan. Resistor R1 digunakan untuk meminimalkan arus ketika pin IO secara tidak sengaja diatur ke output.
Pin D2 digunakan untuk menarik tombol daya rendah untuk menghasilkan tekan pendek atau panjang. Transistor Q1 digunakan untuk isolasi aman antara ESP8266 dan motherboard.
PERINGATAN: Semua pin ATX dan ESP harus beroperasi pada 3V3.

PCB breakout DIY dapat dipasang di header panel sistem untuk menghubungkan tombol daya SW1 dan reset tombol SW2 .
Ada ruang yang cukup dalam kasing komputer ATX untuk memasang papan ESP. Namun, kasing komputer dilindungi logam, sehingga jarak wifi ke stasiun pangkalan berkurang. Disarankan untuk menempatkan ESP di luar kasing komputer ketika koneksi WiFi tidak stabil atau jarak terlalu rendah. ESP32 dapat menghasilkan stabilitas koneksi WiFi yang berbeda, tetapi secara keseluruhan tergantung pada lingkungan.
ESP8266 PCB dipasang di bagian belakang case PC:

Firmware aplikasi Esphome dapat diperbarui melalui koneksi USB (port serial virtual) atau wifi OTA (melalui pembaruan udara).
Memperbarui firmware via wifi diaktifkan saat mengkonfigurasi ota di file .yaml. Ini membutuhkan koneksi WiFi antara komputer host dan ESP. Pembaruan OTA tidak berfungsi ketika login dari ESP ke stasiun pangkalan WiFi gagal karena kredensial WiFi yang salah. Dalam hal ini pembaruan melalui serial diperlukan atau melalui Fallback ap seperti yang dikonfigurasi dalam file .yaml.
Aplikasi Esphome terdiri dari dua file YAML. Satu file konfigurasi dan secrets.yaml kedua.yaml untuk menyimpan kata sandi.
Dokumentasi:
Konfigurasikan file berikut:
platform dan board .Silakan merujuk ke Dokumentasi Esphome untuk informasi lebih lanjut tentang konfigurasi Esphome YAML.
Hubungkan kabel USB ke papan ESP8266 atau ESP32 dan masukkan perintah berikut. (Contoh diuji pada Ubuntu). Untuk informasi lebih lanjut, lihat 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.yamlBagian ini menjelaskan konfigurasi asisten rumah.
Configuration | Integrations: Add Integration: ESPHomesecrets.yml | esphome_api_password .Tambahkan integrasi daya PC ke dasbor melalui RAW Edit:
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 Mulai ulang asisten rumah dan siap untuk pergi!
Format file Esphome YAML diubah dengan ESPHOME versi 2024.6.0. Format lama menghasilkan kesalahan seperti:
$ 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.
Dalam hal ini, harap perbarui ke format file baru dalam proyek ini.
switch.pc_power_button ke switch.pc_power_toggle .switch.pc_power_button_long_press ke switch.pc_hard_power_off .switch.pc_power_sense ke switch.pc_power_state .