После апгрейда обычного дома до «полуумного» появилась очень простая, но неочевидная проблема в виде удобства управления домом. У тебя может быть самый крутой в мире дашборд с кучей кнопок, датчиков и остальных интересных элементов, но управлять всем этим с телефона банально неудобно, так как требует воспроизвести целый список действий (найти его, взять, разблокировать, открыть приложение дома и т. д.). Но недавно мне попался интересный проект настольного макрокейпада, который, как мне кажется, идеально подходит для быстрого управления некоторыми функциями дома.
О сборке и настройке макрокейпада можно почитать далее в статье.
▍ Цимес
Проблема, описанная в начале статьи, реальна. К сожалению, управление умным домом с телефона не совсем удобно, когда тебе надо сделать какие-то действия быстро, или не хочется возиться с этим всем перед сном, а хочется просто нажать одну кнопку, чтобы всё «заснуло».
В моём случае «заснуло» — это целый список переключателей, и отход ко сну обычно сопровождался этаким локальным взлётом на Боинге с переключением кучи тумблеров в умном доме, выключением вентилятора, убавлением подсветок и т. д.
Скриншот панели управления светом в умном дома
На скриншоте можно заметить кнопки «Спать» и «Дневной режим» — это уже попытки улучшить ситуацию за счёт объединения светильников в группы, а также управление группами через NodeRed (да-да, вот так по-ламерски, а не через трушные автоматизации HA). И на самом деле попытки очень даже успешные: время на настройку света перед сном сократилось с полминуты до буквально секунд, но всё ещё хотелось чего-то большего меньшего.
Появляется логичный вопрос — «Что ты там настраиваешь то каждый раз?». На самом деле ответ банальный. Как-то вышло, что один потолочный светильник или куча спотов в натяжном потолке дают максимально неуютную засветку, и если этот свет слабый, то ощущаешь себя в бункере, а если свет сильный, то на приёме врача — уюта нет ни там, ни тут.
Кроме того, большое кол-во отдельных светильников с возможностью глубокой настройки позволяют получить «слоёное» освещение, которое заметно улучшает восприятие интерьера. Подробнее об этом можно послушать тут:
▍ Решение
Цимес проблемы понятен, решение проблемы нашлось буквально случайно. Гуляя по просторам yeggi в поисках 3D-модели для печати в проекте, я случайно наткнулся на приятного вида MacroPad. Глаз зацепился за простой лаконичный дизайн, а также минимум элементов. Ранее я рассматривал макропады, но почти все они были с большим количеством кнопок, с кастомными платами, под ардуины и т. д., но тут все звёзды сошлись, и все мои хотелки были учтены в таком простом на вид девайсе.
Macro Pad за авторством @petrepa
Первым важным элементом дизайна данного устройства можно отметить кнопки, или «свичи». Тут вместо готовых модулей с кнопками предлагается использовать дискретные компоненты, а именно механические свичи, которые встают в корпус защёлкиваясь, и на которые можно сделать свои кейкапы любой формы и с любым рисунком. И плоские кейкапы не предел, на рынке есть множество вариантов низкопрофильных кейкапов с рисунками, а также необычные варианты разных форм и материалов.
Искать такие свичи долго не придётся, они используются повсеместно в механических клавиатурах с поддержкой технологии HotSwap. Купить их можно как отдельно, так и в составе клавиатуры, благо барахолки завалены недорогими механическими клавиатурами.
Также не обязательно искать какой то особый энкодер, можно взять любой, что закручивается гайкой в отверстии. Например KY-040. Для работы такого модуля достаточно подключить провода, пайка либо установка дополнительных компонентов не требуется, а сам модуль настолько недорогой, что купить его можно даже дешевле, чем сам энкодер без обвязки.
Модуль энкодера KY-040
В роли контроллера выступает ESP8266 либо ESP32, мощности обоих вариантов прекрасно хватает для обработки прерываний от энкодера и всего четырёх кнопок. Корпус макропада рассчитан на модуль Wemos D1 Mini с установленным на него модулем ESP8266 в виде модели с защитным экраном, но при желании можно установить ESP32 s2, просверлив пару отверстий для болтов на плате.
Wemos D1 Mini
▍ Приступаем к работе
Печать компонентов в общем заняла около 5 часов. Для корпуса и ручки энкодера я решил использовать пластик PLA с цветом Galaxy Black. Это по сути обычный чёрный PLA, но с добавлением блёсток, за счёт чего пластик смотрится менее скучно, и линии от FDM-печати меньше бросаются в глаза, но я уже пожалел, так как его немного повело и корпус получился не совсем ровный, хотя в целом в глаза это не бросается.
2 половинки корпуса в цвете Galaxy Black
На нижнюю часть можно и нужно наклеить резиновые ножки, иначе почти невесомый пульт просто ездит по столу при использовании. Ранее я печатал подставку для стилуса Wacom и в её основание заливал алибастр, дабы она не скользила по столу. В данное же устройство такой финт внедрить не получится в связи с малыми размерами, но китайские братья подкидывают прекрасную идею со свинцовыми грузиками внутри корпуса.
На крышке можно отметить пару инородных отверстий, это крепление для ESP32 S2 mini платы. По мере работ с умным домом я пристроил её в более подходящее по её возможностям место, а в этот кейпад поставил wemos d1 mini, для которого разрабатывался корпус.
2 половинки корпуса с других сторон
В уши на крышке требуется установить гайки, я ставил их с паяльником, от чего они встали намертво и не выпадают при сборке девайса.
Ухо с гайкой
Для сборки корпуса также нужны винты. Я нашёл в запасе винты под Торкс, которые остались после модификации принтера. Они выглядят интереснее, чем обычные под головку Филипс. Как показала практика, смотрятся они интересно, но инородно. В будущем я заменю их на потайные винты чёрного цвета.
Винты с прекрасной отвёрткой Xiaomi wiha
В качестве кнопок используются стандартные механические свичи для клавиатур. Клавиатуры в запасе у меня не было, как и свичей, но удалось выпросить ненужные у друга взамен шоколадки Сникерс. Это красные ноунейм-свичи без клика.
Красные и оранжевые свичи
Встали они как родные, защёлкиваются без проблем и вытаскиваются стандартным съёмником свичей. Поверхность у свичей выглядит неаккуратно, но она закроется кейкапами.
Свичи на месте
Для поддержки хотсвапа требуется печатная плата со специальными гильзами под контакты свича. В таком устройстве, как макропад, можно обойтись без излишеств, припаяв все провода напрямую к свичам.
Свичи — вид сзади
Свичи голые и требуют кейкапов. Таковых у меня тоже нет, поэтому в ход пошёл 3D-принтер. Я напечатал низкопрофильные кейкапы двух цветов, дабы кнопки было проще различать. Серая кнопка включает ночной режим для дома, остальные по желанию настрою далее.
Кейкапы
Кейкапы на своём законном месте
Прозрачные кейкапы
Далее установка энкодера. Перед установкой пришлось расширить отверстие, так как мой энкодер — это немного другая модель, нежели использует автор модели кейпада. Также для более удобного расположения платы пришлось отпаять гребёнку с контактами.
Энкодер
Установленный энкодер
Проводка устройства максимально простая. Я сделал длинные провода и пожалел, так как закрывать коробку было проблематично, но в целом ничего сложного. Смысла описывать её нет, все пины указаны в настройках YAML-файла прошивки, а остальные контакты — это либо земля, либо подтяжка 3,3в.
Паук из проводов кнопок
Паук побольше из всех проводов
Схема подключения проводов
На фото видно, что к энкодеру идёт всего 4 провода + 3в подтяжка не подключена (без неё он работал нестабильно и за кадром я допаял недостающий провод, который решил эту проблему).
Провода, подключённые к контроллеру
Ручка энкодера также напечатана из Galaxy black PLA. Встала как родная. Кажется, что она слишком большая, но села как родная и итоговое устройство выглядит прекрасно.
Провода, подключённые к контроллеру
Вид на законченное устройство сразу после сборки. Кривые кейкапы немного портят впечатление, но в целом в глаза не бросаются.
Вид спереди
Вид сбоку
Вид сзади
▍ Прошивка и настройка
В своём умном доме я использую прошивку ESPHOME. Для большинства устройств она очень проста в освоении и прекрасно интегрирована в HomeAssistant, а главное, что максимально стабильна, поэтому настройку буду делать именно с этой прошивкой.
После первоначальной настройки и конфига wifi, а также добавления девайса в HA можно приступать к написанию конфига.
Можно взять готовый код YAML у автора модели макропада, но там он управляет звуком при помощи энкодера. В моих же планах управлять светом, поэтому я сделаю свой конфиг.
У меня же энкодер добавлен в качестве сенсора. Каждый шаг энкодера увеличивает его состояние на 4 единицы, диапазон энкодера стоит 0-64, вся эта конструкция нужна для более быстрого регулирования подсветки, а также на удивление оно работает стабильнее, чем с шагом в единицу.
Все остальные кнопки добавлены как бинарные сенсоры, всем им также включена подтяжка, дабы не паять резисторы, а также инвертированный ввод, так как кнопки подтянуты.
sensor:
# энкодер
- platform: rotary_encoder
name: "esp82_Encoder"
pin_b:
number: 14
mode: INPUT
pin_a:
number: 13
mode: INPUT
min_value: 0
resolution: 4
max_value: 64
binary_sensor:
#Кнопка энкодера
- platform: gpio
pin:
number: 12
mode: INPUT_PULLUP
inverted: true
name: "esp82_keypad_KnobButton"
#Button 1
- platform: gpio
icon: "mdi:dialpad"
name: "Keypad Key 1"
pin:
number: 2
inverted: true
mode: INPUT_PULLUP
id: esp82_keypad_b1
#Button 2
- platform: gpio
icon: "mdi:dialpad"
name: "Keypad Key 2"
pin:
number: 0
inverted: true
mode: INPUT_PULLUP
id: esp82_keypad_b2
#Button 3
- platform: gpio
icon: "mdi:dialpad"
name: "Keypad Key 3"
pin:
number: 4
inverted: true
mode: INPUT_PULLUP
id: esp82_keypad_b3
#Button 3
- platform: gpio
icon: "mdi:dialpad"
name: "Keypad Key 4"
pin:
number: 5
inverted: true
mode: INPUT_PULLUP
id: esp82_keypad_b4
После настройки можно создать карточку объекта и протестировать работоспособность. Кнопки будут менять состояние с выключено на включено при нажатии, а при вращении экнкодера будет меняться цифра шагов.
Карточка макропада в HomeAssistant
Теперь можно делать автоматизации. Всё можно провернуть через стандартную автоматику в HA, но я давно поставил NodeRed, и в нём всё делается намного проще.
При смене состояния датчика я меняю состояние лампы или зоны, они настроены как Toggle.
Кухня и прихожая настроены только на выключение. Это банально удобно, если ты забыл выключить свет и ушёл в рабочую комнату.
Старые автоматизации
Одна из кнопок кейпада управляет ночным режимом. После его нажатия полностью выключается свет во всём доме, во всех зонах, после чего после задержки в 2 секунды включается лампа в прихожей в виде ночника, а также фоновая RGB-подсветка лампы в спальне. Режим ночника в спальне тоже есть, но слабая красная подсветка оказалась приятнее глазу в ночи, чем более яркая и оранжевая.
Новая автоматизация с учётом макропада
C вращением энкодера всё просто, его Payload это цифра, значение. Его можно обернуть в JSON и отправить в светильник как яркость, заодно указав, что переход при этой регулировке просто не нужен. Тогда светильник регулируется быстро.
Новая автоматизация с учетом макропада
▍ Итог
На этом, наверное, всё! Данный кейпад работает в моём умном доме уже продолжительное время и вызывает только позитивные эмоции. Как ни крути, а нажимать физическую кнопку намного быстрее и проще, чем искать что-то на тачскрине в телефоне. Единственное, что хочется, так это избавиться от провода, запитав это устройство от аккумулятора. Это, конечно, можно сделать, но пострадает отзывчивость (при глубоком сне надо будить контроллер, подключать к сети и отправлять данные), либо время работы (постоянно работающий контроллер ест приличное количество энергии по меркам аккумуляторов и не проживёт долго). Также хочется поставить маленький и узкий OLED-экран между энкодером и кнопками, а на него выводить погоду, но это уже в будущем.
Хотел бы спросить у читателей: а как вы управляете умным домом?
Автор:
Tirarex