![](https://habrastorage.org/webt/iz/ie/ph/iziephct3bwlfvr-czzstmk23ny.png)
После апгрейда обычного дома до «полуумного» появилась очень простая, но неочевидная проблема в виде удобства управления домом. У тебя может быть самый крутой в мире дашборд с кучей кнопок, датчиков и остальных интересных элементов, но управлять всем этим с телефона банально неудобно, так как требует воспроизвести целый список действий (найти его, взять, разблокировать, открыть приложение дома и т. д.). Но недавно мне попался интересный проект настольного макрокейпада, который, как мне кажется, идеально подходит для быстрого управления некоторыми функциями дома.
О сборке и настройке макрокейпада можно почитать далее в статье.
▍ Цимес
Проблема, описанная в начале статьи, реальна. К сожалению, управление умным домом с телефона не совсем удобно, когда тебе надо сделать какие-то действия быстро, или не хочется возиться с этим всем перед сном, а хочется просто нажать одну кнопку, чтобы всё «заснуло».
В моём случае «заснуло» — это целый список переключателей, и отход ко сну обычно сопровождался этаким локальным взлётом на Боинге с переключением кучи тумблеров в умном доме, выключением вентилятора, убавлением подсветок и т. д.
![](https://habrastorage.org/webt/yl/1y/zc/yl1yzcfvyup_4zxwpwesd1nxsw8.png)
На скриншоте можно заметить кнопки «Спать» и «Дневной режим» — это уже попытки улучшить ситуацию за счёт объединения светильников в группы, а также управление группами через NodeRed (да-да, вот так по-ламерски, а не через трушные автоматизации HA). И на самом деле попытки очень даже успешные: время на настройку света перед сном сократилось с полминуты до буквально секунд, но всё ещё хотелось чего-то
Появляется логичный вопрос — «Что ты там настраиваешь то каждый раз?». На самом деле ответ банальный. Как-то вышло, что один потолочный светильник или куча спотов в натяжном потолке дают максимально неуютную засветку, и если этот свет слабый, то ощущаешь себя в бункере, а если свет сильный, то на приёме врача — уюта нет ни там, ни тут.
Кроме того, большое кол-во отдельных светильников с возможностью глубокой настройки позволяют получить «слоёное» освещение, которое заметно улучшает восприятие интерьера. Подробнее об этом можно послушать тут:
▍ Решение
Цимес проблемы понятен, решение проблемы нашлось буквально случайно. Гуляя по просторам yeggi в поисках 3D-модели для печати в проекте, я случайно наткнулся на приятного вида MacroPad. Глаз зацепился за простой лаконичный дизайн, а также минимум элементов. Ранее я рассматривал макропады, но почти все они были с большим количеством кнопок, с кастомными платами, под ардуины и т. д., но тут все звёзды сошлись, и все мои хотелки были учтены в таком простом на вид девайсе.
Посмотреть его можно тут
![](https://habrastorage.org/webt/sa/5r/js/sa5rjsq80ypku-pvtvv6xyd1cg8.png)
Первым важным элементом дизайна данного устройства можно отметить кнопки, или «свичи». Тут вместо готовых модулей с кнопками предлагается использовать дискретные компоненты, а именно механические свичи, которые встают в корпус защёлкиваясь, и на которые можно сделать свои кейкапы любой формы и с любым рисунком. И плоские кейкапы не предел, на рынке есть множество вариантов низкопрофильных кейкапов с рисунками, а также необычные варианты разных форм и материалов.
Искать такие свичи долго не придётся, они используются повсеместно в механических клавиатурах с поддержкой технологии HotSwap. Купить их можно как отдельно, так и в составе клавиатуры, благо барахолки завалены недорогими механическими клавиатурами.
Также не обязательно искать какой то особый энкодер, можно взять любой, что закручивается гайкой в отверстии. Например KY-040. Для работы такого модуля достаточно подключить провода, пайка либо установка дополнительных компонентов не требуется, а сам модуль настолько недорогой, что купить его можно даже дешевле, чем сам энкодер без обвязки.
![](https://habrastorage.org/webt/pm/as/_b/pmas_b8_ovlci7tugohgii0uohc.png)
В роли контроллера выступает ESP8266 либо ESP32, мощности обоих вариантов прекрасно хватает для обработки прерываний от энкодера и всего четырёх кнопок. Корпус макропада рассчитан на модуль Wemos D1 Mini с установленным на него модулем ESP8266 в виде модели с защитным экраном, но при желании можно установить ESP32 s2, просверлив пару отверстий для болтов на плате.
![](https://habrastorage.org/webt/25/sv/fe/25svfeurtiw9g4pkinpr5dldi8m.png)
▍ Приступаем к работе
Печать компонентов в общем заняла около 5 часов. Для корпуса и ручки энкодера я решил использовать пластик PLA с цветом Galaxy Black. Это по сути обычный чёрный PLA, но с добавлением блёсток, за счёт чего пластик смотрится менее скучно, и линии от FDM-печати меньше бросаются в глаза, но я уже пожалел, так как его немного повело и корпус получился не совсем ровный, хотя в целом в глаза это не бросается.
![](https://habrastorage.org/webt/os/sz/ta/ossztazaibmqfgweqrjhgpzu5ti.png)
На нижнюю часть можно и нужно наклеить резиновые ножки, иначе почти невесомый пульт просто ездит по столу при использовании. Ранее я печатал подставку для стилуса Wacom и в её основание заливал алибастр, дабы она не скользила по столу. В данное же устройство такой финт внедрить не получится в связи с малыми размерами, но китайские братья подкидывают прекрасную идею со свинцовыми грузиками внутри корпуса.
На крышке можно отметить пару инородных отверстий, это крепление для ESP32 S2 mini платы. По мере работ с умным домом я пристроил её в более подходящее по её возможностям место, а в этот кейпад поставил wemos d1 mini, для которого разрабатывался корпус.
![](https://habrastorage.org/webt/_v/ev/tq/_vevtqlpjygm0dixm2vihuvuqxe.png)
В уши на крышке требуется установить гайки, я ставил их с паяльником, от чего они встали намертво и не выпадают при сборке девайса.
![](https://habrastorage.org/webt/h2/nd/6g/h2nd6gotqlu_-a9foqxxvd7irsu.png)
Для сборки корпуса также нужны винты. Я нашёл в запасе винты под Торкс, которые остались после модификации принтера. Они выглядят интереснее, чем обычные под головку Филипс. Как показала практика, смотрятся они интересно, но инородно. В будущем я заменю их на потайные винты чёрного цвета.
![](https://habrastorage.org/webt/6d/f4/6l/6df46lw1dusdzg1c17u_kfjlt1u.png)
В качестве кнопок используются стандартные механические свичи для клавиатур. Клавиатуры в запасе у меня не было, как и свичей, но удалось выпросить ненужные у друга взамен шоколадки Сникерс. Это красные ноунейм-свичи без клика.
![](https://habrastorage.org/webt/ev/cz/05/evcz05g7cpiepspnsyguxjwx6ka.png)
Встали они как родные, защёлкиваются без проблем и вытаскиваются стандартным съёмником свичей. Поверхность у свичей выглядит неаккуратно, но она закроется кейкапами.
![](https://habrastorage.org/webt/s3/nu/j5/s3nuj5tpy7yuuxaoxy5jcxzw8s8.png)
Для поддержки хотсвапа требуется печатная плата со специальными гильзами под контакты свича. В таком устройстве, как макропад, можно обойтись без излишеств, припаяв все провода напрямую к свичам.
![](https://habrastorage.org/webt/vu/7o/mg/vu7omg0fbd5cveist3hlglgjxnk.png)
Свичи голые и требуют кейкапов. Таковых у меня тоже нет, поэтому в ход пошёл 3D-принтер. Я напечатал низкопрофильные кейкапы двух цветов, дабы кнопки было проще различать. Серая кнопка включает ночной режим для дома, остальные по желанию настрою далее.
![](https://habrastorage.org/webt/l_/en/rk/l_enrklnykewvgwzylnpftv_kde.png)
![](https://habrastorage.org/webt/qg/nv/z7/qgnvz7aw4ici088dczah-mqvbsk.png)
Более изящное решение проблемы кейкапов
Старые добрые китайские производители не спят. При желании можно купить вот такой набор кейкапов, которые разбираются. Можно печатать на белом пластике, а защитный колпачок не даст краске стереться. А можно напечатать и вложить туда бумажки с нужными иконками.
Купить их можно тут
Прозрачные кейкапы
Купить их можно тут
![](https://habrastorage.org/webt/n4/3t/6d/n43t6dc0rhshtqoagimmlnenx3s.png)
Далее установка энкодера. Перед установкой пришлось расширить отверстие, так как мой энкодер — это немного другая модель, нежели использует автор модели кейпада. Также для более удобного расположения платы пришлось отпаять гребёнку с контактами.
![](https://habrastorage.org/webt/bs/dj/xz/bsdjxztdqlh9uyfv7ozvc4fdqq4.png)
![](https://habrastorage.org/webt/sw/gs/wf/swgswfwllg8jfen1m1qsb5pflz4.png)
Проводка устройства максимально простая. Я сделал длинные провода и пожалел, так как закрывать коробку было проблематично, но в целом ничего сложного. Смысла описывать её нет, все пины указаны в настройках YAML-файла прошивки, а остальные контакты — это либо земля, либо подтяжка 3,3в.
![](https://habrastorage.org/webt/pc/-h/3s/pc-h3syaeb-eyn7w2qb3th9_jh0.png)
![](https://habrastorage.org/webt/cr/ck/x8/crckx8sha6uoptsngvfqvyj5noi.png)
Схема
Схема подключения проводов
![](https://habrastorage.org/webt/ov/vd/hn/ovvdhnqc89hqxajs2taucbsr1gi.png)
На фото видно, что к энкодеру идёт всего 4 провода + 3в подтяжка не подключена (без неё он работал нестабильно и за кадром я допаял недостающий провод, который решил эту проблему).
![](https://habrastorage.org/webt/xg/yu/3v/xgyu3vqgrtba483fon0u6dcqnlc.png)
Ручка энкодера также напечатана из Galaxy black PLA. Встала как родная. Кажется, что она слишком большая, но села как родная и итоговое устройство выглядит прекрасно.
![](https://habrastorage.org/webt/8c/vw/gq/8cvwgqk8r13mep8txxqaj-x-csi.png)
Вид на законченное устройство сразу после сборки. Кривые кейкапы немного портят впечатление, но в целом в глаза не бросаются.
![](https://habrastorage.org/webt/rw/0b/tc/rw0btc2jhikqhn0i6oj2a-u-bny.png)
![](https://habrastorage.org/webt/rm/-y/s_/rm-ys_9xs-p8lwqqh2epfgy3re0.png)
![](https://habrastorage.org/webt/vw/9i/ei/vw9iein9wkw5u24mdwcjcllm_nc.png)
▍ Прошивка и настройка
В своём умном доме я использую прошивку ESPHOME. Для большинства устройств она очень проста в освоении и прекрасно интегрирована в HomeAssistant, а главное, что максимально стабильна, поэтому настройку буду делать именно с этой прошивкой.
После первоначальной настройки и конфига wifi, а также добавления девайса в HA можно приступать к написанию конфига.
Можно взять готовый код YAML у автора модели макропада, но там он управляет звуком при помощи энкодера. В моих же планах управлять светом, поэтому я сделаю свой конфиг.
Код от автора макропада
У меня же энкодер добавлен в качестве сенсора. Каждый шаг энкодера увеличивает его состояние на 4 единицы, диапазон энкодера стоит 0-64, вся эта конструкция нужна для более быстрого регулирования подсветки, а также на удивление оно работает стабильнее, чем с шагом в единицу.
Все остальные кнопки добавлены как бинарные сенсоры, всем им также включена подтяжка, дабы не паять резисторы, а также инвертированный ввод, так как кнопки подтянуты.
YAML
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
После настройки можно создать карточку объекта и протестировать работоспособность. Кнопки будут менять состояние с выключено на включено при нажатии, а при вращении экнкодера будет меняться цифра шагов.
![](https://habrastorage.org/webt/on/ho/ie/onhoiex9cprfkwwwuyjzhjrhdd0.png)
Теперь можно делать автоматизации. Всё можно провернуть через стандартную автоматику в HA, но я давно поставил NodeRed, и в нём всё делается намного проще.
При смене состояния датчика я меняю состояние лампы или зоны, они настроены как Toggle.
Кухня и прихожая настроены только на выключение. Это банально удобно, если ты забыл выключить свет и ушёл в рабочую комнату.
![](https://habrastorage.org/webt/el/2p/yr/el2pyrle3k2s_u8-wp9win5oxue.png)
Одна из кнопок кейпада управляет ночным режимом. После его нажатия полностью выключается свет во всём доме, во всех зонах, после чего после задержки в 2 секунды включается лампа в прихожей в виде ночника, а также фоновая RGB-подсветка лампы в спальне. Режим ночника в спальне тоже есть, но слабая красная подсветка оказалась приятнее глазу в ночи, чем более яркая и оранжевая.
![](https://habrastorage.org/webt/z3/fe/5q/z3fe5q1xauaso9rsbyu4t707lj8.png)
C вращением энкодера всё просто, его Payload это цифра, значение. Его можно обернуть в JSON и отправить в светильник как яркость, заодно указав, что переход при этой регулировке просто не нужен. Тогда светильник регулируется быстро.
![](https://habrastorage.org/webt/ku/81/u5/ku81u5vm2zcagkr7flhzztk0mck.png)
▍ Итог
На этом, наверное, всё! Данный кейпад работает в моём умном доме уже продолжительное время и вызывает только позитивные эмоции. Как ни крути, а нажимать физическую кнопку намного быстрее и проще, чем искать что-то на тачскрине в телефоне. Единственное, что хочется, так это избавиться от провода, запитав это устройство от аккумулятора. Это, конечно, можно сделать, но пострадает отзывчивость (при глубоком сне надо будить контроллер, подключать к сети и отправлять данные), либо время работы (постоянно работающий контроллер ест приличное количество энергии по меркам аккумуляторов и не проживёт долго). Также хочется поставить маленький и узкий OLED-экран между энкодером и кнопками, а на него выводить погоду, но это уже в будущем.
Хотел бы спросить у читателей: а как вы управляете умным домом?
Узнавайте о новых акциях и промокодах первыми из нашего Telegram-канала 💰
![](https://habrastorage.org/webt/os/g2/ms/osg2msglmcba81cfkh0vl0nlnu4.jpeg)