Вот и настал тот день, когда мне стало тесно в рамках обычного стереозвука. Захотелось объёма, окружения. Захотелось 5.1, в общем.
Поэтому у меня появился ресивер, купленный на авито.
План был прост и надёжен как швейцарские часы - получить устройство с HDMI ARC для вывода цифрового звука с телевизора и с выходами pre-out, чтобы фронтальные колонки прицепить по уже отработанной схеме через микшер. Казалось бы, что может пойти не так? Ответ - всё. Ниже достаточно пространное лирическое отступление, которое в целом объясняет, зачем мне понадобилось городить огород. Если это не интересно - можно промотать до следующего заголовка.
Итак. Начнём с того, что ресиверов относительно недорого с pre-out кроме сабвуфера - очень мало. Поэтому в процессе бесплодных поисков концепция изменилась с pre-out на zone 2 (у pioneer такое часто встречается). Было решено источник с телевизора пустить как на основные выходы, так и на зону 2, откуда взять стерео-сигнал для фронтов и по опять же отработанной схеме завернуть на микшер вместе с яндекс-колонкой. Под такую схему и был взят Pioneer VSX-819H.
Но не тут-то было.
Практически сразу обнаружилось, что подружить телевизор с HDMI ресивера не получается. Причём проблема не в ресивере - ноутбук с ним работает прекрасно, а вот телевизор - нет. Был перепробован пучок проводов HDMI разных длин и версий, включай тот, которым я подключаю ноутбук к телевизору в режиме 4k. Увы. Пришлось подключать по оптике, а значит - я потерял регулировку звука пультом от телевизора (1).
Идём далее. Рабочий план: вывести звук с телевизора, заведённый по оптике, на зону 2, оттуда кинуть проводом 2RCA-3.5jack на микшер, к которому так же подключен AUX-выход Яндекс.Мини, с микшера на компактный усилитель SMSL и оттуда на фронтальные колонки. Сабвуфер можно взять так же с SMSL, а можно прицепить со штатного выхода на саб ресивера. Surround же напрямую с ресивера. Но. Цифровой звук на выходе без усилителя оказался очень и очень слабым. В итоге с выхода зоны 2 через усилитель на максимальном уровне - еле слышно. В качестве проверки завёл на вход ресивера звук от AUX Яндекс.Мини, вывел на выходы зоны 2 - более-менее норм играет. Так я потерял одновременный звук с яндекс-колонки и телевизора (2).
Можно было бы, конечно, пойти путём продажи этого ресивера там же на авито и искать новый, с рисками напороться на вообще нерабочие преауты или какие-то другие косяки. Но что-то не захотелось.
Вот эти два фактора и натолкнули меня на нижеописанный колхоз.
Собственно, делаем ресивер умным
Что делать, когда есть ресивер и хочется управлять им не только дистанционно с пульта, но и вписать в существующие автоматизации умного дома?
Мальчик: покупает ресивер с LAN-портом и готовой интеграцией HomeAssistant
Мужчина: собирает контроллер ESP и пишет программу
Я:
Первым делом, конечно же, я вспомнил самые первые свои шаги и устройства. А именно - ИК-пульт Broadlink, через который я на заре становления своего дома управлял светильником в гостиной и (опа!) переключал аудиовходы саундбара. Звучит знакомо!
Пульт долгие годы лежал в коробке, в которой я складирую всякие выведенные из эксплуатации устройства, откуда оный пульт был достан, протёрт и быстренько обучен новым командам - громкость добавить, громкость убавить, переключить на AUX, переключить на оптику, ну и вкл/выкл.
И тут я вспомнил, чем меня в принципе не устраивал ИК-пульт: куда бы его ни разместить, всегда возникнут ситуации, когда между пультом и управляемым устройством что-то находится. А обратной связи никакой нет, непонятно дошла команда или нет.
Давайте думать, как разместить пульт так, чтобы ничто не мешало ему светить прямо в ИК-приёмник ресивера. Разместил его сбоку от ресивера, плотняком, откуда он практически по касательной попадал прямо в нужный глазок. Но для этого всё же немного приходилось вытащить пульт внаружу. Работает, но глаз мозолит.
Выносной ИК-датчик, который можно спрятать вместе с пультом где-то в недрах тумбы. Вариант, но увы, почему-то выносные ИК-датчики на 3,5 jack отказались работать с моим ресивером (причина, как я выяснил несколько позже - где-то не подавалось питание на разъём).
И тут мою голову посетила эпичная по своей колхозности идея. Поскольку знаний и оборудования для программирования самодельного контроллера на базе какого-нибудь ESP у меня нет, зато есть куча уже готовых ненужных устройств - давайте присобачим эти устройства к ресиверу так, чтобы оно работало. Но как? Впрочем - вот же он, Broadlink, который умеет принимать команды по Wi-Fi и отправлять кодированные команды через ИК. Нужно только подключить его напрямую.
Жаль, но идея подпаять ИК-трансмиттер бродлинка к ИК-ресиверу напрямую - не удалась. Что-то не взлетело. Поэтому идея стала ещё более простой и колхозной - в коробочку к пучку ИК-трансмиттеров broadlink был подложен ИК-датчик, оторванный от выносного датчика и подпаянный к контактам ИК-датчика самого ресивера. Ну а раз мы тут подпаялись, то давайте и питание на broadlink подадим с платы ресивера, зачем нам отдельный шнур USB тянуть? Тем более что, несмотря на подаваемые по USB 5 вольт, для работы элементов пульта требуется только 3.2, что написано прямо на плате. А на распайке шлейфа ресивера, очень удачно расположенного в легкодоступном для пайки месте, как раз присутствуют 3 вольта, требующиеся в том числе для кнопки standby, то есть присутствующие всегда, пока вилка ресивера воткнута в розетку.
Подпаялись, проверили - работает! Колхоз, но этот колхоз можно спрятать в корпус ресивера и никто ничего не узнает это будет выглядеть опрятно и работать практически напрямую:
ИК-датчик пульта я чутка подогнул, чтобы он смотрел вверх и можно было обучить пульт новым командам через вентиляционные отверстия, не разбирая ресивер. Как обучать пульт и слать команды я отдельно описывать не буду, за пять лет с написания предыдущей статьи практически ничего не изменилось, можно пользоваться.
Так я получил достаточно надёжно работающий способ регулировки громкости и переключения входов. Когда-нибудь я доберусь до Tuya Smart Knob и напишу как работает эта крутилка для регулировки громкости, в том числе ресивера. Ну а автоматизация переключения каналов простая: включен ТВ - включить оптику; выключен ТВ - включить вход AUX. Обратная связь тут не нужна, потому что нам, в принципе, пофиг в каком состоянии ресивер, даже если мы с AUX переключаем на AUX - никому от этого не поплохеет.
Включение-выключение тоже работает прекрасно, но добавить в автоматизации его нельзя, потому что вот тут без обратной связи никак, непонятно, то ли ресивер включился, то ли выключился от команды.
Поэтому размышляем дальше. У нас есть кнопка Standby, на которую можно было бы навесить датчик открытия, подпаяв вместо геркона контакты кнопки. Я даже так сделал, но увы, это работает только если включать-выключать с кнопки. Если выключить ресивер с пульта через ИК, то контакты не замыкаются и датчик не срабатывает, а значит статус не меняется.
Два дня думал, что можно было бы впендюрить ещё, пока не понял, что есть же простейшее решение, которое уже годами используют на 4pda применительно к стиральным машинам - умная розетка с датчиками потребляемой мощности и тока. У меня как раз валяется одна такая, через которую я подключал гирлянду в прихожей на новый год.
Выключаем ресивер, перетыкаем вилку, вставляем между вилкой и розеткой это чудесное устройство и замеряем показания. В режиме standby мощность на розетке - 0, ток - 0. Во включенном состоянии - мощность 35 ватт, ток ~ 0,2А. В целом схема выглядит как рабочая.
Сделаем себе виртуальный переключатель, который будет показывать текущее состояние ресивера. За основу возьмём потребляемую мощность. Ровно на 0 закладываться не будем, но с учётом 35 ватт в простое вполне можно взять за пороговое значение 10 ватт:
Теперь у нас состояние этого выключателя синхронизировано с состоянием самого ресивера и его можно использовать в условиях автоматизаций: если нужно ресивер выключить, то проверяем что ресивер включен и если включен - отправляем команду вкл/выкл. Если ресивер не включен - не отправляем, иначе у нас ресивер включится, а нам этого не надо.
Ну и чтобы можно было руками издалека включать-выключать ресивер - добавим наш переключатель на главный дашборд и навесим на него обработчик нажатия. Я в последнее время использую для таких вещей карточки Mushroom, и здесь тоже создам Mushroom Entity. Стандартные настройки карточки, здесь из нужного только сам объект:
Ну и полезное - действие на нажатие:
Теперь наша кнопулечка не только отображает актуальный статус, но и при нажатии - переключает ресивер:
Вот такой вот колхозец, но в целом - это всё работает.
Жаль, конечно, схему с микшером - было прикольнее. Но в целом особой необходимости одновременно играть музыку и смотреть кино на одни и те же колонки у меня никогда и не было, а чтобы было слышно что лопочет Алиса при включенном телевизоре (и отключенном входе с яндекс-колонки на ресивере, пришлось разобрать Яндекс.Мини и поставить перемычку на транзистор, чтобы звук на колонке шёл и на встроенный динамик, и на AUX. Ну и на совсем крайний случай, если вдруг где-то что-то не переключилось как надо - есть пультик Ugoos UR02 с четырьмя программируемыми на ИК кнопками, где две заняты под громкость, а ещё две назначены на включение входов оптики и AUX.