Ce projet contient une commande d'alimentation PC distante via des cartes HOMEASSSICTANT et ESPHOME ESP8266 / ESP32.
J'utilise ce projet pour alimenter mon NAS basé sur PC à distance sur et hors via l'assistant à domicile comme alternative à Wake-on-LAN (WOL) qui a des limites connues.
power-off/suspended/hybernate (Bouton de puissance du comportement).shutdown/suspend/hybernate du système d'exploitation (Bouton de puissance de comportement de comportement).Vidéo YouTube:
Capture d'écran homeasSistante:

Wake-on-Lan (WOL) est destiné à tourner la puissance de l'ordinateur à distance via Ethernet en envoyant un soi-disant magic packet . Cela a plusieurs limitations connues qui ne sont pas applicables avec ce projet ESP:
wake un PC que de la suspension ou de l'état d'élevage. Il n'y a pas de fonctionnalité d'arrêt / suspendre.sleep , une connexion SSH au PC distant peut être effectuée par exemple en exécutant la commande pm-suspend (installer via sudo apt install pm-utils ), référence à la documentation Ubuntu PM-action. Inconvénients:Le matériel se compose d'une ESP8266 ou ESP32 et de deux broches IO, montées sur une plaque métallique PCI (voir photo ci-dessous). Dans mon cas, j'ai utilisé une carte Nodemcu ESP8266. Théoriquement, n'importe quelle carte ESP8266 ou ESP32 peut être utilisée pour ce projet.

Mon NAS est basé sur une carte mère Intel Core i7 ASROCK Z97 ATX et contient des en-têtes masculins 2x5 de 2,5 mm standard:

En-tête ATX USB 2.0:
En-tête J1 Pin 1 constant + 5v Power sur la broche 1, même lorsque le PC est pouité et est utilisé pour alimenter le nodemcu. L'ESP8266 ou l'ESP32 est alimentée via un régulateur 3v3 embarqué.
Panneau du système de l'en-tête ATX:
L'en-tête J2 contient les broches de puissance, de réinitialisation et GND:
Pin du bouton d'alimentation 6.
Réinitialiser le bouton PIN 7.
PIN GND 5.
La broche D1 est utilisée pour lire l'état de puissance à partir de la broche de réinitialisation: le haut est allumé, bas est désactivé. La résistance R1 est utilisée pour minimiser le courant lorsque la broche IO est accidentellement définie sur la sortie.
La broche D2 est utilisée pour retirer le bouton d'alimentation bas pour générer une appuye courte ou longue. Le transistor Q1 est utilisé pour l'isolement sécurisé entre ESP8266 et la carte mère.
AVERTISSEMENT: Toutes les épingles ATX et ESP doivent fonctionner à 3v3.

Un PCB de cassure de bricolage peut être monté à l'en-tête du panneau système pour connecter le bouton d'alimentation SW1 et réinitialiser le bouton SW2 .
Il y a suffisamment d'espace dans un boîtier informatique ATX pour monter la carte ESP. Cependant, le boîtier de l'ordinateur est protégé en métal, de sorte que la distance WiFi à la station de base réduit. Il est recommandé de placer l'ESP à l'extérieur du boîtier de l'ordinateur lorsque la connexion WiFi est instable ou la distance trop basse. Un ESP32 peut entraîner une stabilité de connexion WiFi différente, mais dans l'ensemble, cela dépend de l'environnement.
ESP8266 PCB monté à l'arrière du boîtier PC:

Le micrologiciel de l'application Esphome peut être mis à jour via la connexion USB (port série virtuel) ou WiFi OTA (sur la mise à jour de l'air).
La mise à jour du firmware via WiFi est activée lors de la configuration ota dans le fichier .yaml. Cela nécessite une connexion WiFi entre l'ordinateur hôte et ESP. La mise à jour OTA ne fonctionne pas lorsque la connexion de l'ESP à la station de base WiFi échoue en raison de références WiFi incorrectes. Dans ce cas, une mise à jour via Serial est requise ou via ap Fallback tel que configuré dans le fichier .yaml.
L'application Esphome se compose des deux fichiers YAML. Un fichier de configuration et un deuxième secrets.yaml pour stocker les mots de passe.
Documentation:
Configurer les fichiers suivants:
platform et board .Veuillez vous référer à la documentation de l'Esphome pour plus d'informations sur la configuration de l'Esphome YAML.
Connectez le câble USB à la carte ESP8266 ou ESP32 et entrez les commandes suivantes. (Des exemples sont testés sur Ubuntu). Pour plus d'informations, reportez-vous à 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.yamlCette section décrit la configuration de l'assistant domestique.
Configuration | Integrations: Add Integration: ESPHomesecrets.yml | esphome_api_password .Ajouter une intégration d'alimentation PC à un tableau de bord via l'édition brute:
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 Redémarrez l'assistant à domicile et prêt à partir!
Le format de fichier YAML ESPHOME a changé avec l'Esphome version 2024.6.0. L'ancien format génère des erreurs comme:
$ 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.
Dans ce cas, veuillez mettre à jour le nouveau format de fichier dans ce projet.
switch.pc_power_button pour switch.pc_power_toggle .switch.pc_power_button_long_press à switch.pc_hard_power_off .switch.pc_power_sense à switch.pc_power_state .