В одной из предыдущих статей, я рассказывал, как подключить к умному дому Home Assistant на Raspberry Pi активный усилитель, для воспроизведения уведомлений. Я до сих пор использую данную связку, но она не лишена недостатков.
Во первых физическое размещение, только возле сервера, во вторых фоновый шум от усилителя. От наводок удалось избавится добавив гальваническую развязку по питанию.
Предлагаю устройство оповещения по Wi-Fi каналу с использованием усилителя работающего по шине I2S. Преимущества налицо, нет фонового шума, теперь могу размещать звуковые оповещатели в любом удобном месте домовладения, где есть покрытие Wi-Fi, в гараже, оранжерее, беседке. Данное устройство позволяет выводить любые звуковые файлы а так же TTS уведомления.
Для проекта нам понадобится любой модуль на базе чипа ESP32, я использовал
ESP32 Lolin, подключим усилитель к портам GPIO, при использовании других модулей, необходимо будет подправить файл конфигурации. И усилитель на базе
MAX98357, это цифровой усилитель на 3 ватта, работающий по шине I2S и любой динамик 4-8 ом с выходной мощностью 1-3 ватта.
Собираем по данной схеме
Для работы в Home Assistant необходимо установить аддон ESPHome из магазина аддонов.
Создаем новую ноду и копируем следующую конфигурацию.
esphome:
name: esp32-notifier
friendly_name: ESP32-Notifier
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "7n33PCPQIK6H7h9JHnjxwHBSD2I2J3tZjVKykTvxJ0w="
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "ESP32-Notifier"
password: "qhTY2HdLC8uB"
captive_portal:
i2s_audio:
i2s_lrclk_pin: GPIO33
i2s_bclk_pin: GPIO22
media_player:
- platform: i2s_audio
name: ESPHome I2S Media Player
dac_type: external
i2s_dout_pin: GPIO19
mode: mono
Обратите внимание, выделенное красным заменить на свои данные, имя сети и пароль, если не используете файл secret.
Подключаем модуль к компьютеру, проверяем Validate и прошиваем любым удобным способом, в последних версиях ESPHome прошить модуль можно прямо из браузера.
После прошивки видим такой лог:
Теперь в системе будет доступен медиа плейер, логика работы такая же как с аддоном MPD, доступны различные команды, изменения громкости и пр.
Добавляем карточку на панель
Теперь можем использовать в любых автоматизациях.
К примеру используя команду:
media_player.play_media Action
on_...:
# Simple
- media_player.play_media: 'http://media-url/media.mp3'
# Full
- media_player.play_media:
id: media_player_id
media_url: 'http://media-url/media.mp3'
# Simple with lambda
- media_player.play_media: !lambda 'return "http://media-url/media.mp3";'
Воспроизводим файлы с удаленного или локального сервера.
Для именения громкости:
media_player.volume_set Action
on_...:
# Simple
- media_player.volume_set: 50%
# Full
- media_player.volume_set:
id: media_player_id
volume: 50%
# Simple with lambda
- media_player.volume_set: !lambda "return 0.5;"
Полный список команд можно посмотреть на сайте ESPHome -
media player