Este projeto contém controle remoto de potência do PC via placas homealsistantes e Esfome Esp8266/ESP32.
Eu uso este projeto para alimentar meu PC baseado em NAS remotamente ligado e desligado via assistente doméstico como alternativa ao Wake-on-LAN (WOL), que tem limitações conhecidas.
power-off/suspended/hybernate (Botão de Pressione Pressione Curto Comportamento).shutdown/suspend/hybernate do sistema operacional (Botão de Pressionagem de Pressionário curto de comportamento).Vídeo do YouTube:
Captura de tela homeissistente:

O Wake-on-LAN (WOL) pretende ativar a energia do computador remotamente via Ethernet enviando um chamado magic packet . Isso possui várias limitações conhecidas que não são aplicáveis a este projeto ESP:
wake um PC do estado de suspensão ou desligamento. Não há funcionalidade de desligamento/suspensão.sleep , uma conexão SSH com o PC remoto pode ser feita, por exemplo, executando o comando pm-suspend (instale via sudo apt install pm-utils ), referência ubuntu pm-ação de ação. Desvantagens:O hardware consiste em um esp8266 ou esp32 e dois pinos de IO, montados em uma placa de metal PCI (veja a figura abaixo). No meu caso, usei uma placa NODEMCU ESP8266. Teoricamente, qualquer placa ESP8266 ou ESP32 pode ser usada para este projeto.

Meu NAS é baseado em um Intel Core i7 Asrock Z97 ATX MotherBoard e contém cabeçalhos masculinos de 2,5 mm 2x5:

Cabeçalho ATX USB 2.0:
Cabeçalho J1 Pino 1 Constante +5V Power no pino 1, mesmo quando o PC é desligado e é usado para alimentar o nodemcu. O ESP8266 ou ESP32 é alimentado por meio de um regulador 3V3 a bordo.
Painel do sistema de cabeçalho ATX:
Cabeçalho J2 contém os pinos de energia, redefinição e GND:
Botão liga / desliga Pino 6.
Redefinir o pino do botão 7.
GND PIN 5.
O pino D1 é usado para ler o status de energia do pino de redefinição: o alto está ligado, o baixo está desligado. O resistor R1 é usado para minimizar a corrente quando o pino de IO é acidentalmente configurado para a saída.
O pino D2 é usado para puxar o botão liga / desliga para baixo para gerar uma prensa curta ou longa. O transistor Q1 é usado para isolamento seguro entre o ESP8266 e a placa -mãe.
AVISO: Todos os pinos ATX e ESP devem estar operando em 3v3.

Um PCB de discussão DIY pode ser montado no cabeçalho do painel do sistema para conectar o botão liga / desliga SW1 e o botão de redefinição SW2 .
Há espaço suficiente em uma caixa de computador ATX para montar a placa ESP. No entanto, a caixa do computador é protegida de metal, portanto a distância Wi -Fi da estação base reduz. Recomenda -se colocar o ESP fora da caixa do computador quando a conexão Wi -Fi é instável ou a distância muito baixa. Um ESP32 pode resultar em diferentes estabilidade da conexão WiFi, mas no geral depende do ambiente.
PCB ESP8266 montado na parte traseira da caixa do PC:

O firmware do aplicativo Esphome pode ser atualizado via conexão USB (porta serial virtual) ou wifi ota (sobre a atualização aérea).
A atualização do firmware via WiFi está ativado ao configurar ota no arquivo .yaml. Isso requer uma conexão WiFi entre o computador host e o ESP. A UPDATE OTA não funciona quando o login do ESP para a estação base Wi -Fi falha devido a credenciais WiFi incorretas. Nesse caso, uma atualização via serial é necessária ou via Fallback ap , conforme configurado no arquivo .yaml.
O aplicativo Esfome consiste nos dois arquivos YAML. Um arquivo de configuração e um segundo secrets.yaml para armazenar senhas.
Documentação:
Configure os seguintes arquivos:
platform e board .Consulte a documentação do Esfome para obter mais informações sobre a configuração do Esfome YAML.
Conecte o cabo USB à placa ESP8266 ou ESP32 e digite os seguintes comandos. (Exemplos são testados no Ubuntu). Para mais informações, consulte o 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.yamlEsta seção descreve a configuração do assistente doméstico.
Configuration | Integrations: Add Integration: ESPHomesecrets.yml | esphome_api_password .Adicione a integração de energia do PC a um painel via 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 Reinicie o assistente doméstico e pronto para ir!
O formato do arquivo YAML do Esfome foi alterado com o Esfome versão 2024.6.0. O formato antigo gera erros como:
$ 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.
Nesse caso, atualize o novo formato de arquivo neste projeto.
switch.pc_power_button para switch.pc_power_toggle .switch.pc_power_button_long_press para switch.pc_hard_power_off .switch.pc_power_sense para switch.pc_power_state .