Найти в Дзене
HASSStas: Рецепты HomeAssistant

Tuya Smart Knob: кручу, верчу, музыкой управлять хочу

Ох как долго эта заметка лежала у меня в черновиках. То одно, то другое, то вот и лето наступило - всё никак не мог добраться и нормально написать. Но всё же надо собраться, не раз ведь уже обещал про эту штучку рассказать. Итак, что за зверь такой и зачем он может быть нужен? Когда-то давным-давно, когда в нашей стране существовала Икеа, я успел купить интересный пультик, который в умах инженеров, его создавших, должен был управлять светом, а у меня стал управлять музыкой. Но это было немножечко не то, как-то неинтуитивно нажимать лево-право и, тем более, вверх-вниз. Поэтому как только на горизонте замаячила крутящаяся кнопка, она была сложена в корзину, оплачена и доставлена мне в руки. Сразу в количестве двух штук. Не буду тут описывать, как я опять напоролся на неоднократно описанный мною же эффект "поспешишь - людей насмешишь", когда эта штучка не заработала штатно через deConz, но со временем, когда я перешёл на z2m, эта штучка наконец-то нашла своё применение. Даже два. Но обо в
Оглавление

Ох как долго эта заметка лежала у меня в черновиках. То одно, то другое, то вот и лето наступило - всё никак не мог добраться и нормально написать. Но всё же надо собраться, не раз ведь уже обещал про эту штучку рассказать. Итак, что за зверь такой и зачем он может быть нужен?

Когда-то давным-давно, когда в нашей стране существовала Икеа, я успел купить интересный пультик, который в умах инженеров, его создавших, должен был управлять светом, а у меня стал управлять музыкой. Но это было немножечко не то, как-то неинтуитивно нажимать лево-право и, тем более, вверх-вниз. Поэтому как только на горизонте замаячила крутящаяся кнопка, она была сложена в корзину, оплачена и доставлена мне в руки. Сразу в количестве двух штук.

Не буду тут описывать, как я опять напоролся на неоднократно описанный мною же эффект "поспешишь - людей насмешишь", когда эта штучка не заработала штатно через deConz, но со временем, когда я перешёл на z2m, эта штучка наконец-то нашла своё применение. Даже два.

Но обо всём по-очереди.

Итак, крутилка.

Достаточно большая. Питается от одной батарейки CR2030.

Картинка взята со страницы товара на Aliexpress
Картинка взята со страницы товара на Aliexpress

Имеет функционал: крутиться влево, крутиться вправо, нажать, нажать-нажать, нажать и держать, нажать и крутить (тоже влево и вправо).

Может работать в двух режимах - event и command. Это важно! Потому что в режиме event доступно меньше функций и нет возможности получить данные о вращении.

Первое, что приходит в голову (и для чего эту кнопку задумывали инженеры, как будет понятно далее) - это использовать штуку для управления светом - изменение яркости и цвета.

Первое, что пришло в голову мне - это, конечно же, управлять музыкой. Нажатие - play/pause, крутилка влево-вправо - изменение громкости, крутилка с нажатием - предыдущий-следующий трек.

Справедливости ради - вторая крутилка была поставлена в спальне и управляла яркостью светодиодной ленты у кровати, пока лента не ёкнулась.

Тем не менее.

Настраиваем кнопку

Первая итерация: deConz. Тупо не завелось - не было готовой интеграции, а возиться с DDF было как-то лениво.

Вторая итерация: zigbee2mqtt. Добавил в HomeAssistant, настроил простые автоматизации в режиме event, в command как-то не удалось. Отложил.

Третья итерация: zigbee2mqtt в режиме command. Здесь было несколько заходов с автоматизациями, сначала использовал какие-то blueprints из интернета, но они просто читали событие из топика z2m и делали какую-то команду. Для плавного увеличения яркости или громкости такое не очень подходит.

Далее искал информацию и скрипты, чтобы считывать угол поворота и от этого менять яркость или громкость в зависимости от интенсивности кручения. Какое-то время это проработало, более-менее меня устраивало, но вот буквально сегодня, сев писать эту заметку, я подумал что "доколе!" и решил сделать нормально.

Что имелось:

  • скрипт автоматизации на блюпринте от pbergman
  • ручная автоматизация с собственными доработками

Что получилось:

  • скрипт для управления освещения, модернизированный под нужды управления музыкой через Broadlink RM4

Код публиковать не буду, Дзен для этого совсем не подходит, поэтому если кому-то нужен код автоматизации - всегда можно попросить у меня в комментариях или в личку (или в телеграме, на который можно подписаться). Покажу в скриншотах итоговую рабочую схему.

Собственно, сам триггер, который ловит все срабатывания устройства в z2m:

-3

Каждое срабатывание триггера определяет две переменные:

  • command - что, собственно, произошло с устройством
  • size - на сколько прокрутилось колесо (актуально для поворотов)
-4

Далее обработка всех нужных нам событий.

-5

1. Событие toggle (нажатие) запускает или приостанавливает воспроизведение

-6

2. Событие brigtness_step_up (увеличение яркости, как задумано инженером или поворот по часовой стрелке) - увеличивает громкость, по сути отправляет на пульт команду увеличения громкости количество раз, равное size/12.5, где size - переменная, назначенная выше, а 12.5 - экспериментальным путём подобранное значение, при котором поворот кнопки не слишком быстро и не слишком медленно меняет значение громкости.

-7

3. Событие brigtness_step_down (поворот против часовой стрелки) - делает то же самое, что и brigtness_step_up, но со знаком минус, то есть уменьшает громкость

4. Событие color_temperature_step_up, оно же поворот по часовой стрелке при нажатой кнопке - включает следующий трек на активной колонке

-8

5. Событие color_temperature_step_down, соответтсвенно, поворото с нажатием против часовой стрелки, включает предыдущий трек.

Что очень важно - вся указанная автоматизация должна быть в режиме single! Не queued, не parallel - иначе начнётся бардак с последовательностью выполнения команд, отправляемых кнопкой. Single обеспечивает выполнение только одного действия за раз, что не позволит промотать треки сразу на несколько штук вперёд и назад.

Так что вот, пользуйтесь, а я буду подыскивать нормальную светодиодную ленту себе в спальню, потому что дешёвая лента от Yeelight меня сильно разочаровала, в первую очередь тем, что она работает по своему какому-то bluetooth-протоколу и ничем не поддерживается в Home Assistant. А во вторую очередь тем, что оказалась очень хрупкая и микрочипы в ленте начали гореть, что превратило 6 метров ленты в ненужное барахло.