Умный MP3 дверной звонок на ESPHome и Home Assistant
Важно: все изображения сохранены с оригинальными путями; описания 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 по командам.
- Откройте Home Assistant и установите дополнение ESPHome (Add-on Store → ESPHome).
- После установки откройте ESPHome и нажмите +New Device (или «Новый девайс» в локализованном интерфейсе).
- Нажмите Continue, введите имя, например smart-speaker.
- Нажмите Next → Pick a specific board и выберите Wemos D1 and Wemos D1 mini. Нажмите Next.
- Найдите проект smart speaker в списке и нажмите кнопку Edit.
- В окне YAML-редактора обновите SSID и пароль Wi‑Fi.
- Вставьте следующий блок кода сразу под строкой 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 - Замените значение “YourEncryptionKey” на ваш ключ шифрования API, если вы используете шифрование. Убедитесь, что в YAML нет двух секций api: — оставьте только одну, иначе компиляция не пройдёт.
- Нажмите Save, затем Install.
- Выберите опцию «Plug into this computer» и дождитесь сборки прошивки.
- После компиляции кликните «Download project», чтобы скачать бинарник.
- Откройте ESPHome Web, подключите D1 mini к компьютеру через micro-USB.
- Нажмите Connect и выберите COM‑порт, к которому подключено устройство.
- Нажмите Install, затем Choose File и выберите скачанную прошивку.
- Нажмите Install и дождитесь завершения.
- После успешной прошивки подключите DFPlayer к D1 mini по схеме ниже.
По умолчанию DFPlayer может непосредственно управлять двумя динамиками (SPK_1 и SPK_2). Другие контакты динамиков должны быть соединены с общим проводом GND на модуле.
Подсказка: для более громкого и плотного звука поставьте между DFPlayer и динамиком усилитель PAM8403.
Шаг 2: Собираем умный переключатель (bell switch)
Этот модуль выступит как кнопка: при коротком замыкании контактов он сразу выключается (короткий импульс).
- В Home Assistant → ESPHome нажмите New Device, назовите проект bell-switch. Выбирайте плату Wemos D1 mini.
- Нажмите Edit и вставьте следующий блок ниже captive_portal: (ровно как показано):
switch:
- platform: gpio
pin: D2
id: relay
name: "Bell"
icon: "mdi:bell"
on_turn_on:
- delay: 200ms
- switch.turn_off: relay- Обновите SSID и пароль Wi‑Fi.
- Нажмите Save, затем Install.
- Выберите «Plug into this computer», скачайте прошивку и прошейте плату через ESPHome Web.
- После прошивки припаивайте два провода к контактам, как показано далее, и подсоедините их к механическому дверному выключателю (контакты кнопки).
- Подайте питание и проверьте логи в проекте bell-switch — при замыкании контактов должен появиться лог с переключением.
Шаг 3: Копируем MP3 на microSD
- Подключите microSD к ПК и скопируйте MP3-файлы.
- Переименуйте файлы в цифровом порядке: 1.mp3, 2.mp3, 3.mp3 и т.д. Это позволит удобно вызывать конкретный трек по номеру.
- Можно использовать онлайн TTS-сервисы для генерации голосовых уведомлений и сохранять их как MP3.
- Вставьте microSD в DFPlayer и включите питание. Для теста коснитесь любого IO или ADKey модуля DFPlayer к GND — должен воспроизвестись звук.
Совет по кодировке: предпочтительны обычные MP3 с битрейтом 128–192 kbps и частотой дискретизации 44.1 kHz для лучшей совместимости.
Шаг 4: Создаём автоматизацию в Home Assistant
Автоматизация отправляет команду DFPlayer воспроизвести конкретный файл при срабатывании переключателя.
- Home Assistant → Настройки → Автоматизации и сцены.
- Создайте новую автоматизацию → «Начать с пустой автоматизации».
- Добавьте триггер: тип Device, выберите устройство Bell и событие «Bell switch on» (в локальном интерфейсе может быть «включено»).
- Действие → Call Service.
- Найдите сервис, связанный с ESPHome, примерно вида ESPHome: smart_speaker_dfplayer_play и выберите его.
- В поле file введите номер MP3-файла (например, 1).
- Сохраните автоматизацию и назначьте ей понятное имя.
Пример альтернативного 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.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone