После приобретения ещё одной станции на кухню (Лайт), решил приколотить её к стене прямо над кухонным столом. Идея прижилась, но хотелось большего - экранчик, т.к. она висит прямо перед глазами. Всё нижеследующее скорее не готовый рецепт, а ход мыслей. Точнее выдержки. Полную ленту мозгового штурма выкладывать не буду, дабы не нанести психологическую травму читателю. Тех, кто верит в чудеса, сразу огорчу, это работает не на прямую, а через HomeAssistant. Для заинтересовавшихся маленький ролик: Поехали... Нам потребуется: Home Assistant: ESPHome Yandex.Station Железо: ESP8266 Дисплей SSD1306 * * Для меня вопрос с дисплеем остаётся открытым, т.к. под рукой оказался только SSD1306 0.96", а он, на мой взгляд, маловат. Создание сенсора Изначально, моё распалённое новогодним алкоголем воображение нагородило довольно громоздкую конструкцию взаимодействия, но это как следствие слабого знания темы, вознёй с HA я увлёкся около месяца назад. Почитав не много понял, что ESPHome прекрасно интегрирован в HA, и может слушать сенсоры без всяких лишних телодвижений. Идем в Панель разработчика, и видим вожделенное, а именно атрибуты : media_title и media_artist Одна незадача - в media_title присутствуют и название песни и имя исполнителя, а я хотел их отображать отдельно, в две строки. Работать будет и так, но это не наш путь. Обтяпаем строку с конца на длину названия исполнителя, и ещё точку и пробел. Можно было ещё вытянуть статус (play/pause) и уровень громкости, а также время воспроизведения, но миниатюрность экрана отбило желание Переходим на вкладочку Шаблоны, и при помощи богомерзкой Jinja2 пытаемся воплотить идею. Получилось. Осталось превратить полученный опыт в желаемый результат. Нужно вставить следующий код в ... (не знаю как у вас, а я рукоблудные сенсоры вынес в отдельный файл sensors.yaml) Код (Text): - platform: template sensors: ys_title: value_template: >- {% set str_len = state_attr('media_player.yandex_station_ВАШ_ID', 'media_artist')|length %} {{ state_attr('media_player.yandex_station_ВАШ_ID', 'media_title')[:-str_len-2]}} ys_artist: value_template: >- {{ state_attr('media_player.yandex_station_ВАШ_ID', 'media_artist')}} Первый этап пройден Создание нового устройства в ESPHome Описывать начальные этапы манипуляций, думаю нет смысла, поэтому сразу переходим к десерту. Нам нужно прицепиться к созданному ранее в HA сенсору. В редакторе кода устройства добавляем: Код (Text): text_sensor: - platform: homeassistant name: "ys_title" entity_id: sensor.ys_title id: ys_title - platform: homeassistant name: "ys_artist" entity_id: sensor.ys_artist id: ys_artist Не много занимаемся самолюбованием созерцанием прилетающих данных в логах, и двигаемся дальше. Натренированные в многочисленных приключениях нижние полушария мозга подсказываю, что необходимо подгрузить кириллический шрифт. Делается это копированием шрифта в папку /config/esphome и объявлением в конфигурации: Код (Text): font: - file: "arial.ttf" id: arial14 size: 14 Но фокус не удался. Вместо кириллических символов закрашенные прямоугольники. Нужно добавить список символов: Код (Text): glyphs: ' !"%() ,-.:/0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz°АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя' Не нужно бездумно копипастить эту строку. В русском алфавите я накосячил три раза ))) Прицепим дисплей и выведем на него данные с нашего сенсора: Код (Text): i2c: sda: GPIO4 scl: GPIO5 display: - platform: ssd1306_i2c model: "SSD1306 128x64" address: 0x3C lambda: |- it.printf(4, 4, id(arial14), "%s",id(ys_title).state.c_str()); it.printf(4, 20, id(arial14), "%s",id(ys_artist).state.c_str()); Вряд ли стоит заострять на этом пункте внимание, описаний подключения дисплея навалом, да и экземпляр не удачный. Замечу лишь, что две последние строки как раз и выводят информацию полученную от ЯС. Первая - композиция, вторая - исполнитель. Почему не наоборот? Я художник, я так вижу. Еще добавил часы. Модуля часов у меня не оказалось, поэтому опять же вытянул данные от сенсора HA. Этот момент решил пропустить. Он есть в общем коде. Ну и, собственно, результат: Код (Text): esphome: name: test esp8266: board: esp01_1m # Enable logging logger: # Enable Home Assistant API api: ota: password: "xzxzxz" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Test Fallback Hotspot" password: "xzxzxz" captive_portal: text_sensor: - platform: homeassistant name: "ys_title" entity_id: sensor.ys_title id: ys_title - platform: homeassistant name: "ys_artist" entity_id: sensor.ys_artist id: ys_artist time: - platform: homeassistant id: ha_time i2c: sda: GPIO4 scl: GPIO5 font: - file: "arial.ttf" id: arial14 glyphs: ' !"%() ,-.:/0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz°АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя' size: 14 - file: "arial.ttf" id: arial18 size: 18 display: - platform: ssd1306_i2c model: "SSD1306 128x64" address: 0x3C lambda: |- it.printf(4, 4, id(arial14), "%s",id(ys_title).state.c_str()); it.printf(4, 20, id(arial14), "%s",id(ys_artist).state.c_str()); it.strftime(40, 40, id(arial18), "%H:%M", id(ha_time).now()); На этом работа над аппаратно-программной частью закончена. Ещё сыровато, но работает. Всё выше описанное делалось руками дилетанта, возможно есть более правильные и элегантные решения, но мне не попадались, поэтому решил поделиться с общественностью. Колонка у меня закреплена на стене при помощи напечатанного кронштейна, нужно делать новый с учётом дисплея, но так как тот что есть меня не устраивает, пока таймаут. Корпус Come in soon