Гид по технологиям

Умный MP3 дверной звонок на ESPHome и Home Assistant

8 min read Умный дом Обновлено 07 Jan 2026
Умный MP3 дверной звонок на ESPHome
Умный MP3 дверной звонок на ESPHome

Важно: все изображения сохранены с оригинальными путями; описания ALT переведены и уточнены. Перед пайкой убедитесь в отключённом питании.

Что это даёт и когда стоит применить

  • Добавляет кастомные мелодии (MP3) вместо встроенных MIDI-песен в обычных беспроводных звонках.
  • Позволяет использовать звонок как умную колонку для голосовых оповещений и TTS (text-to-speech).
  • Хорошо подходит для гаражей, мастерских, дач и умного дома с Home Assistant.

Когда это не подходит:

  • Если требуется сертифицированное уличное устройство с защитой IP — проект рассчитан на использование под навесом или в корпусе.
  • Если вы не готовы работать с пайкой и прошивкой — рассмотрите готовые сетевые колонки с интеграцией в Home Assistant.

Основная идея (одной строкой)

Два ESP-устройства: одно (DFPlayer + усилитель + динамик) воспроизводит MP3; второе действует как беспроводная (проводная между контактами) кнопка, нажатие которой триггерит автоматизацию в Home Assistant и вызывает сервис воспроизведения нужного файла.

Что вам понадобится

  • Сервер Home Assistant (Raspberry Pi, NUC или другой поддерживаемый хост).
  • 2 × Wemos D1 mini или NodeMCU (ESP8266). Можно заменить на ESP32, но придётся скорректировать конфигурации.
  • Модуль DFPlayer (MP3-плеер с поддержкой microSD) или совместимый MP3-модуль.
  • Динамик 50 мм, 3W или более; для громкости рекомендуется усилитель PAM8403 (мини, 5 V).
  • Провода Dupont / перемычки; паяльник и припой для надёжных соединений.
  • Корпус (можно напечатать 3D) или готовый проект-бокс.

Факто-бокс

  • Напряжение: 5 V для DFPlayer и PAM8403
  • Напряжение: 5 V для Wemos D1 mini (через USB)
  • MP3-файлы: переименуйте как 1.mp3, 2.mp3 и т.д.

Шаг 1: Собираем умную колонку (smart speaker)

Наша колонка будет управляться ESPHome и Home Assistant через сервисы для DFPlayer. Затем она будет воспроизводить MP3 по командам.

  1. Откройте Home Assistant и установите дополнение ESPHome (Add-on Store → ESPHome).
  2. После установки откройте ESPHome и нажмите +New Device (или «Новый девайс» в локализованном интерфейсе).
  3. Нажмите Continue, введите имя, например smart-speaker.
  4. Нажмите NextPick a specific board и выберите Wemos D1 and Wemos D1 mini. Нажмите Next.

Выбор платы Wemos D1 mini в ESPHome

  1. Найдите проект smart speaker в списке и нажмите кнопку Edit.
  2. В окне YAML-редактора обновите SSID и пароль Wi‑Fi.
  3. Вставьте следующий блок кода сразу под строкой captive_portal: (код вставляйте ровно как показано):
uart:  
tx_pin: GPIO3  
rx_pin: GPIO1  
baud_rate: 9600  
  
dfplayer:  
on_finished_playback:  
then:  
logger.log: 'Playback finished event'  
  
api:  
encryption:  
key: "YourEncryptionKey"  
services:  
- service: dfplayer_next  
then:  
- dfplayer.play_next:  
- service: dfplayer_previous  
then:  
- dfplayer.play_previous:  
- service: dfplayer_play  
variables:  
file: int  
then:  
- dfplayer.play: !lambda 'return file;'  
- service: dfplayer_play_loop  
variables:  
file: int  
loop_: bool  
then:  
- dfplayer.play:  
file: !lambda 'return file;'  
loop: !lambda 'return loop_;'  
- service: dfplayer_play_folder  
variables:  
folder: int  
file: int  
then:  
- dfplayer.play_folder:  
folder: !lambda 'return folder;'  
file: !lambda 'return file;'  
  
- service: dfplayer_play_loop_folder  
variables:  
folder: int  
then:  
- dfplayer.play_folder:  
folder: !lambda 'return folder;'  
loop: true  
  
- service: dfplayer_set_device_tf  
then:  
- dfplayer.set_device: TF_CARD  
  
- service: dfplayer_set_device_usb  
then:  
- dfplayer.set_device: USB  
  
- service: dfplayer_set_volume  
variables:  
volume: int  
then:  
- dfplayer.set_volume: !lambda 'return volume;'  
- service: dfplayer_set_eq  
variables:  
preset: int  
then:  
- dfplayer.set_eq: !lambda 'return static_cast(preset);'  
  
- service: dfplayer_sleep  
then:  
- dfplayer.sleep  
  
- service: dfplayer_reset  
then:  
- dfplayer.reset  
  
- service: dfplayer_start  
then:  
- dfplayer.start  
  
- service: dfplayer_pause  
then:  
- dfplayer.pause  
  
- service: dfplayer_stop  
then:  
- dfplayer.stop  
  
- service: dfplayer_random  
then:  
- dfplayer.random  
  
- service: dfplayer_volume_up  
then:  
- dfplayer.volume_up  
  
- service: dfplayer_volume_down  
then:  
- dfplayer.volume_down
  1. Замените значение “YourEncryptionKey” на ваш ключ шифрования API, если вы используете шифрование. Убедитесь, что в YAML нет двух секций api: — оставьте только одну, иначе компиляция не пройдёт.
  2. Нажмите Save, затем Install.
  3. Выберите опцию «Plug into this computer» и дождитесь сборки прошивки.
  4. После компиляции кликните «Download project», чтобы скачать бинарник.

Скачивание скомпилированной прошивки

  1. Откройте ESPHome Web, подключите D1 mini к компьютеру через micro-USB.
  2. Нажмите Connect и выберите COM‑порт, к которому подключено устройство.
  3. Нажмите Install, затем Choose File и выберите скачанную прошивку.
  4. Нажмите Install и дождитесь завершения.
  5. После успешной прошивки подключите DFPlayer к D1 mini по схеме ниже.

Схема подключения DFPlayer к плате D1 mini

По умолчанию DFPlayer может непосредственно управлять двумя динамиками (SPK_1 и SPK_2). Другие контакты динамиков должны быть соединены с общим проводом GND на модуле.

Подсказка: для более громкого и плотного звука поставьте между DFPlayer и динамиком усилитель PAM8403.

Шаг 2: Собираем умный переключатель (bell switch)

Этот модуль выступит как кнопка: при коротком замыкании контактов он сразу выключается (короткий импульс).

  1. В Home Assistant → ESPHome нажмите New Device, назовите проект bell-switch. Выбирайте плату Wemos D1 mini.
  2. Нажмите Edit и вставьте следующий блок ниже captive_portal: (ровно как показано):
switch:  
- platform: gpio  
pin: D2  
id: relay  
name: "Bell"  
icon: "mdi:bell"  
on_turn_on:  
- delay: 200ms  
- switch.turn_off: relay
  1. Обновите SSID и пароль Wi‑Fi.
  2. Нажмите Save, затем Install.
  3. Выберите «Plug into this computer», скачайте прошивку и прошейте плату через ESPHome Web.
  4. После прошивки припаивайте два провода к контактам, как показано далее, и подсоедините их к механическому дверному выключателю (контакты кнопки).

Подключение умного переключателя к механическому выключателю

  1. Подайте питание и проверьте логи в проекте bell-switch — при замыкании контактов должен появиться лог с переключением.

Шаг 3: Копируем MP3 на microSD

  1. Подключите microSD к ПК и скопируйте MP3-файлы.
  2. Переименуйте файлы в цифровом порядке: 1.mp3, 2.mp3, 3.mp3 и т.д. Это позволит удобно вызывать конкретный трек по номеру.
  3. Можно использовать онлайн TTS-сервисы для генерации голосовых уведомлений и сохранять их как MP3.
  4. Вставьте microSD в DFPlayer и включите питание. Для теста коснитесь любого IO или ADKey модуля DFPlayer к GND — должен воспроизвестись звук.

Совет по кодировке: предпочтительны обычные MP3 с битрейтом 128–192 kbps и частотой дискретизации 44.1 kHz для лучшей совместимости.

Шаг 4: Создаём автоматизацию в Home Assistant

Автоматизация отправляет команду DFPlayer воспроизвести конкретный файл при срабатывании переключателя.

  1. Home Assistant → Настройки → Автоматизации и сцены.
  2. Создайте новую автоматизацию → «Начать с пустой автоматизации».
  3. Добавьте триггер: тип Device, выберите устройство Bell и событие «Bell switch on» (в локальном интерфейсе может быть «включено»).
  4. Действие → Call Service.
  5. Найдите сервис, связанный с ESPHome, примерно вида ESPHome: smart_speaker_dfplayer_play и выберите его.
  6. В поле file введите номер MP3-файла (например, 1).
  7. Сохраните автоматизацию и назначьте ей понятное имя.

Пример альтернативного YAML для автоматизации (если вы предпочитаете редактировать YAML напрямую):

alias: Дверной звонок — играем mp3
trigger:
  - platform: device
    device_id: 
    domain: switch
    type: turned_on
    entity_id: switch.bell
action:
  - service: esphome.smart_speaker_dfplayer_play
    data:
      file: 1
mode: single

(Проверьте точное имя сервиса в интерфейсе Home Assistant: оно формируется по имени устройства в ESPHome.)

Тестирование и критерии приёмки

Критерии приёмки

  • Нажатие на механическую кнопку приводит к изменению состояния в Home Assistant и срабатыванию автоматизации.
  • Колонка проигрывает выбранный MP3-файл в течение нескольких секунд после срабатывания.
  • Можно управлять воспроизведением (pause/play/volume) через панель Home Assistant.

Тесты

  • Подключите microSD с одним файлом 1.mp3, нажмите кнопку — должен заиграть файл 1.
  • Проверьте переключение громкости через сервис dfplayer_set_volume.
  • Отключите Wi‑Fi: устройство должно грузиться локально, но управление через HA перестаёт работать до восстановления сети.

Устранение неполадок (Troubleshooting)

  • Прошивка не устанавливается: проверьте, чтобы в YAML была только одна секция api:. Удалите дубликаты.
  • DFPlayer не воспроизводит файлы: проверьте формат и имена файлов на microSD, убедитесь, что сеть питания стабильна, попробуйте подключить динамик напрямую (проверка модуля).
  • Нет соединения ESP → Home Assistant: проверьте SSID/пароль в YAML, и что Wi‑Fi сеть доступна.
  • Слабый звук: добавьте PAM8403 усилитель или используйте более мощный динамик.

Альтернативные подходы

  • Использовать ESP32 вместо ESP8266: даёт больше мощности и поддержку I2S‑динамиков, но потребует правок в YAML и подключении.
  • Отказ от DFPlayer: отправлять MP3 через сеть (TTS в HA → поток на сетевую колонку). Подходит, если хотите дистанционное хранение звуков.
  • Использовать MQTT как транспорт команд для большей гибкости: ESP подписывается на тему, Home Assistant публикует команду воспроизведения.

Роли и чек-листы

Чек-лист для установщика

  • Проверил работоспособность D1 mini и DFPlayer на столе.
  • Припаял провода и изолировал соединения.
  • Установил все компоненты в корпус.
  • Проверил громкость и качество звука.

Чек-лист для владельца/пользователя

  • Скопировал желаемые MP3 на microSD и пронумеровал.
  • Настроил автоматизацию в Home Assistant и проверил её работу.
  • Настроил уведомления об ошибках в Home Assistant (опционально).

Чек-лист для разработчика (оптимизация)

  • Вынес повторяющиеся сервисы в скрипты HA для переиспользования.
  • Добавил логи (logger) в ESPHome для быстрого дебага.
  • Подумал о шифровании API (ключ в api: encryption: key: “…”).

Сниппет — ярлык вызова разных мелодий

Пример вызова из шаблонов/скриптов Home Assistant:

service: esphome.smart_speaker_dfplayer_play
data:
  file: 2

Можно динамически подставлять номер файла из шаблона события или датчика.

Безопасность и приватность

  • Храните ключ шифрования API в безопасном месте; при утечке ключа злоумышленник сможет посылать команды на устройство.
  • Убедитесь, что доступ к Home Assistant защищён (двухфакторная аутентификация, обновления).
  • Если устройство будет доступно извне, используйте VPN или прокси, а не открывайте порты напрямую.

Советы по корпусу и питанию

  • Для наружной установки используйте герметичный бокс и разъёмы с уплотнителями.
  • Источник питания: качественный USB‑адаптер 5 V с током не менее 2 A (особенно если есть усилитель и динамик).
  • Разделите питание логики (D1 mini) и усилителя при высоких уровнях громкости, чтобы избежать помех.

Модель принятия решений (Mermaid)

flowchart TD
  A[Нужен ли Вам сетевой звук?] -->|Да| B{Есть ли DFPlayer?}
  A -->|Нет| C[Использовать TTS через Home Assistant]
  B -->|Да| D[Собрать по инструкции]
  B -->|Нет| E[Рассмотреть ESP32 с I2S или Bluetooth]
  D --> F[Интегрировать в HA и настроить автоматизацию]
  E --> F

Краткое резюме

  • Схема проста: DFPlayer + динамик + усилитель = колонка; D1 mini = кнопка.
  • ESPHome предоставляет удобные сервисы для управления DFPlayer из Home Assistant.
  • Проект легко масштабируется: добавьте TTS, оповещения по датчикам или интеграции с другими устройствами умного дома.

Короткий словарь

  • DFPlayer — модуль MP3 с поддержкой microSD и прямым подключением динамиков.
  • ESPHome — прошивка/инструмент для простого создания прошивок ESP‑устройств и интеграции с Home Assistant.
  • PAM8403 — мини‑усилитель класса D, 5 V, обычно 3–5 W на канал.

Если нужно, пришлю готовый шаблон YAML автоматизации под вашу конкретную конфигурацию или схему подключения с деталями по распиновке DFPlayer и D1 mini.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство