Dieses Projekt enthält eine Remote -PC -Stromversorgungsregelung über Homasasistant und ESPHOME ESP8266/ESP32 -Boards.
Ich benutze dieses Projekt, um meinen PC-basierten NAS-basierten NAS über den Home Assistant als Alternative zu Wake-on-Lan (WOL) auszuschalten, was die Einschränkungen gekannt hat.
power-off/suspended/hybernate (Verhalten kurz drücken Sie Ein-/Ausschalttaste) ein.shutdown/suspend/hybernate des Betriebssystems (Verhalten kurz drücken Sie Ein- und Ausschalter).YouTube Video:
Homasensistentes Screenshot:

Wake-on-Lan (WOL) soll die Computerleistung über Ethernet aus der Ferne einschalten, indem ein so genanntes magic packet gesendet wird. Dies hat mehrere bekannte Einschränkungen, die für dieses ESP -Projekt nicht anwendbar sind:
wake . Es gibt keine Abschalt-/Suspend -Funktionalität.sleep zu setzen, kann beispielsweise eine SSH-Verbindung zum Remote-PC hergestellt werden, indem der Befehl pm-suspend (installiert über sudo apt install pm-utils ), Referenz Ubuntu PM-Action-Dokumentation. Nachteile:Die Hardware besteht aus einem ESP8266 oder ESP32 und zwei IO -Stiften, die auf einer PCI -Metallplatte montiert sind (siehe Bild unten). In meinem Fall habe ich ein ESP8266 NodeMcu -Board verwendet. Für dieses Projekt kann theoretisch jedes ESP8266- oder ESP32 -Board verwendet werden.

Mein NAS basiert auf einem Intel Core i7 Asrock Z97 ATX Motherboard und enthält Standard 2,5 mm 2x5 männliche Header:

ATX Header USB 2.0:
Header J1 -Pin 1 Konstante +5 V Strom an Pin 1, auch wenn der PC ein Stromversorgungsmittel hat und zum Stromversorgungsnodeemcu verwendet wird. Der ESP8266 oder ESP32 wird über einen integrierten 3v3-Regler angetrieben.
ATX -Header -Systempanel:
Header J2 enthält die Strom-, Zurücksetzen und GND -Stifte:
POWN -Taste Pin 6.
Button Pin 7 zurücksetzen.
GND Pin 5.
Pin D1 wird verwendet, um den Leistungsstatus aus dem Reset -Pin zu lesen: Hoch ist eingeschaltet, niedrig ist ausgeschaltet. Widerstand R1 wird verwendet, um den Strom zu minimieren, wenn der IO -Pin versehentlich auf die Ausgabe eingestellt wird.
Pin D2 wird verwendet, um den Netzschalter niedrig zu ziehen, um einen kurzen oder langen Drücken zu erzeugen. Der Transistor Q1 wird zur sicheren Isolierung zwischen ESP8266 und Motherboard verwendet.
Warnung: Alle ATX- und ESP -Stifte müssen bei 3v3 operieren.

Ein DIY -Breakout -PCB kann am Systempanel -Header montiert werden, um die Normalknopf SW1 und die RESET -Taste SW2 anzuschließen.
Es gibt genügend Platz in einem ATX -Computerfall, um das ESP -Board zu montieren. Der Computergehäuse ist jedoch metallgeschirmt, sodass sich die WLAN -Entfernung zur Basisstation verringert. Es wird empfohlen, den ESP außerhalb des Computergehäuses zu platzieren, wenn die WLAN -Verbindung instabil oder zu niedrig ist. Ein ESP32 kann zu einer unterschiedlichen WLAN -Verbindungsstabilität führen, aber insgesamt hängt es von der Umgebung ab.
ESP8266 PCB, die an der Rückseite des PC -Gehäuses montiert sind:

Die E -Phome -Anwendungsfirmware kann über USB -Verbindung (virtueller serieller Port) oder WiFi OTA (über die Luftaktualisierung) aktualisiert werden.
Das Aktualisieren der Firmware über WLAN ist aktiviert, wenn ota in der .yaml -Datei konfiguriert werden. Dies erfordert eine WLAN -Verbindung zwischen Host -Computer und ESP. Das OTA -Update funktioniert nicht, wenn die Anmeldung von ESP zur WLAN -Basisstation aufgrund falscher WLAN -Anmeldeinformationen fehlschlägt. In diesem Fall ist ein Update über serielle oder über ap -Fallback erforderlich, wie in der .yaml -Datei konfiguriert.
Die E -Phome -Anwendung besteht aus den beiden YAML -Dateien. Eine Konfigurationsdatei und eine zweite secrets.yaml zum Speichern von Passwörtern.
Dokumentation:
Konfigurieren Sie die folgenden Dateien:
platform und board konfigurieren.Weitere Informationen zur ESPHOME YAML -Konfiguration finden Sie in der ESPHOME -Dokumentation.
Schließen Sie das USB -Kabel an ESP8266 oder ESP32 -Board an und geben Sie die folgenden Befehle ein. (Beispiele werden auf Ubuntu getestet). Weitere Informationen finden Sie in 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.yamlIn diesem Abschnitt wird die Konfiguration der Home -Assistent beschrieben.
Configuration | Integrations: Add Integration: ESPHomesecrets.yml | konfiguriert esphome_api_password .Fügen Sie ein Dashboard über RAW -Bearbeitung in ein Dashboard hinzu: PC -Leistungsintegration:
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 Starten Sie Home Assistant neu und bereit zu gehen!
Das ESPHOME YAML -Dateiformat wurde mit ESPHOME Version 2024.6.0 geändert. Das alte Format erzeugt Fehler wie:
$ 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.
In diesem Fall aktualisieren Sie bitte das neue Dateiformat in diesem Projekt.
switch.pc_power_button in switch.pc_power_toggle .switch.pc_power_button_long_press in switch.pc_hard_power_off .switch.pc_power_sense in switch.pc_power_state .