Этот проект содержит удаленное управление мощностью ПК через HomeSastant и Esphome ESP8266/ESP32.
Я использую этот проект для удаления NAS на основе PC NAS на Home Assistant в качестве альтернативы The Wake-On-Lan (WOL), который имеет известные ограничения.
power-off/suspended/hybernate (поведение короткое нажатие кнопки питания).shutdown/suspend/hybernate операционной системы (кнопка «Поведение короткое» нажмите питание).Видео на YouTube:
Скриншот на дому.

Wake-On-Lan (WOL) предназначен для удаленного включения компьютерной мощности через Ethernet, отправив так называемый magic packet . Это имеет несколько известных ограничений, которые не применимы к этому проекту ESP:
wake только ПК от приостановки или состояния питания. Там нет функциональности выключения/приостановки.sleep , SSH-соединение с удаленным ПК может быть сделано, например, выполнив команду pm-suspend (установка через sudo apt install pm-utils ), справочной документации Ubuntu PM-Action. Недостатки:Аппаратное обеспечение состоит из ESP8266 или ESP32 и двух контактов в iO, установленных на металлической пластине PCI (см. Рисунок ниже). В моем случае я использовал плату NODEMCU ESP8266. Теоретически любая плата ESP8266 или ESP32 может использоваться для этого проекта.

Мой NAS основан на материнской плате Intel Core i7 Asrock Z97 ATX и содержит стандартные мужские заголовки 2,5 мм 2х5:

Заголовок ATX USB 2.0:
Заголовок J1 PIN 1 Константа +5 В мощность на выводе 1, даже когда ПК включен и используется для питания NODEMCU. ESP8266 или ESP32 оснащен встроенным регулятором 3V3.
Панель системы заголовков ATX:
Заголовок J2 содержит булавки Power, Reset и GND:
ПИНА ПИНА КОМПАНИИ 6.
Сбросить кнопку PIN 7.
GND PIN 5.
Пычалка D1 используется для чтения состояния мощности из штифта сброса: высокий включен, низкий отключен. Резистор R1 используется для минимизации тока, когда штифт ввода -вывода случайно устанавливается для вывода.
Пычалка D2 используется для вытягивания кнопки питания низко, чтобы генерировать короткое или длинное нажатие. Транзистор Q1 используется для безопасной изоляции между ESP8266 и материнской платой.
Предупреждение: все булавки ATX и ESP должны работать на 3V3.

DIY Breakout PCB может быть установлен в заголовке системной панели, чтобы подключить кнопку питания SW1 и кнопка сброса SW2 .
В корпусе ATX в компьютере достаточно места для установки платы ESP. Тем не менее, компьютерный корпус защищен металлом, поэтому расстояние Wi -Fi до базовой станции уменьшается. Рекомендуется разместить ESP вне корпуса компьютера, когда соединение Wi -Fi нестабильное или слишком низкое расстояние. ESP32 может привести к различной стабильности соединения Wi -Fi, но в целом это зависит от окружающей среды.
ESP8266 PCB, установленная в задней части корпуса ПК:

Прошивка приложения Esphome может быть обновлена с помощью USB -соединения (виртуальный последовательный порт) или Wi -Fi OTA (над обновлением воздуха).
Обновление прошивки через WiFi включено при настройке ota в файле .yaml. Это требует соединения Wi -Fi между хост -компьютером и особенно. ОБНОВЛЕНИЕ OTA не работает, когда вход с ESP на базовую станцию Wi -Fi не работает из -за неправильных учетных данных WiFi. В этом случае требуется обновление через последовательную часть или через ap Sharkback, как настроено в файле .yaml.
Приложение Esphome состоит из двух файлов YAML. Один файл конфигурации и второй secrets.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 .Добавить интеграцию питания ПК на панель панели через 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 Перезапустите домашний помощник и готов к работе!
Формат файла 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 to switch.pc_power_toggle .switch.pc_power_button_long_press to switch.pc_hard_power_off .switch.pc_power_sense to switch.pc_power_state .