Умные тактильные кнопки стола
Компактный настольный блок управления с пятью физическими кнопками, каждая из которых имеет собственную OLED-наклейку, предназначенный для использования с Home Assistant. У него действительно приятное действие кнопок и щелчок.
Требуются навыки сборки и пайки.
Возможно, сделаю более подробную инструкцию или подумаю о продаже полусобранных агрегатов позже, если будет достаточный интерес.
Мой вариант использования
Я сделал этот небольшой кнопочный блок для своей установки Home Assistant, потому что хотел иметь возможность физически запускать все, что захочу, с приятным на ощупь и внешним видом. Светодиод выдвигается вперед с помощью нейлоновой нити и реагирует на триггер или статус.
Интегрируется через ESPHome
Каждая кнопка может запускать:
Объекты Home Assistant
Сцены
Скрипты или автоматизация
Надписи кнопок являются дружественными метками выбранного объекта.
Питание через USB
Вы можете реализовать свои идеи, дайте мне знать об этом в комментариях или оставьте Make.
Хотелось бы услышать об этом!
Инструкции
Простое подключение: шлейфовое зазе��ление для кнопок и заземление 3,3 В для OLED-экранов.
Три прорези внизу предназначены для монет номиналом 5 центов (€) для увеличения веса.
OLEDS-дисплеи вставляются прямо в кнопки, штифты обращены к верхней стороне кнопки.
Части:
5x OLED 64x32
Экран I2C
5x микропереключатель
TCA9548A I2C ИИК
Мультиплексор 8-канальный
5x пружин
Диаметр: 7 мм
Толщина: 0,5 мм
Длина: 20 мм
ESP32-C3 СуперМини
Разное:
1 мм нейлон
Магниты 5x2 мм (2 шт.)
Вырез на резиновых ножках
22AWG-28AWG
кабель
Код:
Конфигурация.yaml:
шаблон:
— двоичный_сенсор:
— имя: «Кнопка 1 на рабочем столе — Кнопка 1 включена»
уникальный_ид: Desk_button_1_button_1_on
состояние: >
{% set ent_id = States('input_text.desk_button_1_target_1') | обрезать %}
{%, если ent_id в состояниях %}
{{ is_state(ent_id, 'вкл') }}
{% еще %}
ложный
{% конечный %}
— имя: «Кнопка 1 на рабочем столе — Кнопка 2 включена»
уникальный_ид: Desk_button_1_button_2_on
состояние: >
{% set ent_id = States('input_text.desk_button_1_target_2') | обрезать %}
{%, если ent_id в состояниях %}
{{ is_state(ent_id, 'вкл') }}
{% еще %}
ложный
{% конечный %}
— имя: «Кнопка 1 на рабочем столе — Кнопка 3 включена»
unique_id: Desk_button_1_button_3_on
состояние: >
{% set ent_id = States('input_text.desk_button_1_target_3') | обрезать %}
{%, если ent_id в состояниях %}
{{ is_state(ent_id, 'вкл') }}
{% еще %}
ложный
{% конечный %}
— имя: «Кнопка рабочего стола 1 — Кнопка 4 включена»
unique_id: Desk_button_1_button_4_on
состояние: >
{% set ent_id = States('input_text.desk_button_1_target_4') | обрезать %}
{%, если ent_id в состояниях %}
{{ is_state(ent_id, 'вкл') }}
{% еще %}
ложный
{% конечный %}
— имя: «Кнопка 1 на рабочем столе — Кнопка 5 включена»
unique_id: Desk_button_1_button_5_on
состояние: >
{% set ent_id = States('input_text.desk_button_1_target_5') | обрезать %}
{%, если ent_id в состояниях %}
{{ is_state(ent_id, 'вкл') }}
{% еще %}
ложный
{% конечный %}
— датчик:
— имя: «Настольная кнопка 1, метка 1»
уникальный_ид: Desk_button_1_label_1
состояние: >
{% set ent = States('input_text.desk_button_1_target_1') | обрезать %}
{% если ent | regex_match('^[a-z_]+\\.[a-z0-9_]+$') %}
{{state_attr(ent, 'Friend_name') или ent }}
{% еще %}
БТН 1
{% конечный %}
— имя: «Настольная кнопка 1, метка 2»
уникальный_ид: Desk_button_1_label_2
состояние: >
{% set ent = States('input_text.desk_button_1_target_2') | обрезать %}
{% если ent | regex_match('^[a-z_]+\\.[a-z0-9_]+$') %}
{{state_attr(ent, 'Friend_name') или ent }}
{% еще %}
Б��Н 2
{% конечный %}
— имя: «Кнопка 1 на столе, метка 3»
уникальный_ид: Desk_button_1_label_3
состояние: >
{% set ent = States('input_text.desk_button_1_target_3') | подрезать





























