Керування пристроями з сенсорними кнопками за допомогою ESPHome

Дайте відповідь на опитування Розумний Будинок 2024 🏠

У цьому топіку поділюсь досвідом Олександра, з української спільноти розумного будинку, як хакнути будь який побутовий пристрій на сенсорних кнопках (з пружинками на платі) за допомогою аналога fingerbot — зволожувачі, очисники повітря, витяжки тощо. Якщо сказати інакше ця збірка імітує натискання клавіш користувачем, без втручання у логіку роботи пристрою, такий собі fingerbot.

Ця модифікація дозволяє отримати цікаві та зручні девайси за дуже низьку ціну та створювати автоматизації для дистанційного керування ними (вмикання/вимикання з урахуванням часу, присутності людей, якості повітря, тощо). Наприклад Олександр поєднав такі кнопки з очисником повітря.

Монтажний набір:

  • ESP 8266 D1 Mini;
  • Резистор 100 Ом;
  • Транзистор 2N3904;
  • Частина мідної оплітки в двосторонньому скотчі; (довжина щоб обмотати пружину кнопки)
  • Датчик струму та напруги INA226 (зворотній зв’язок щодо стану пристрою) Не рекомендую брати 219 — він працює некоректно

Сенсорні кнопки пристрою залишаються на місці. Додається мідний контактний резистивний шлейф, який обплітається навколо пружини кнопки та імітує фізичного натиснення на неї. Додатково, за допомогою сенсора напруги та струму зчитується стан приладу — увімкнено/вимкнено, після виконання команди фінгерботу

приклад обмотки пружини

substitutions:
  AirPurifier_id: Airpurifier
  updates: 5s
  api_key: "your api"
  ota_password: "your ota pass"
esphome:
  name: airpurifier
  friendly_name: Airpurifier
esp8266:
  board: esp01_1m
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip: 
    static_ip: 192.168.XX.XXX
    gateway: 192.168.XX.X
    subnet: 255.255.255.0    
captive_portal:
logger:
  level: DEBUG
api:
  encryption:
    key: ${api_key}
ota:
  - platform: esphome
    password: ${ota_password}
text_sensor:
  - platform: wifi_info
    ip_address:
      name: ESP IP Address
    ssid:
      name: ESP Connected SSID
binary_sensor:
  - platform: status
    name: "Aircleaner Status"
i2c:
  sda: 4 # pin 21 for an ESP32
  scl: 5 # pin 22 for an ESP32
switch:
  - platform: gpio
    pin:
      number: GPIO14
      mode:
        output: true
    name: "Aircleaner touch button"
    id: output_vcc
    
    device_class: switch
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: restart
    name: "Aircleaner Restart"
button:
  - platform: template
    name: "Aircleaner Cycle mode"
    on_press:
      then:
        - switch.toggle: output_vcc
        - delay: 300ms
        - switch.toggle: output_vcc
    
sensor:
  #- platform: adc
    #pin: GPIO17
    #name: "Aircleaner Voltage"
    #update_interval: 5s
    #filters:
    #  - multiply: 1
  
  - platform: wifi_signal
    name: "WiFi signal percent:"  
    entity_category: diagnostic
    id: wifi_sign
    update_interval: 60s
    filters:
      - lambda: return x + 100.0;
    unit_of_measurement: "%"
  
  - platform: ina226
    address: 0x40
    shunt_resistance: 0.1 ohm
    max_current: 3.2A
    # adc time used for both, Bus Voltage and Shunt Voltage
    adc_time: 140us
    adc_averaging: 128
    update_interval: 5s
    current:
      name: "Vent Current"
      filters:
      - multiply: 1
    power:
      name: "Vent Power"
    bus_voltage:
      name: "Vent Bus Voltage"
      filters:
      - multiply: 5
    shunt_voltage:
      name: "Vent Shunt Voltage"
      
  

Приклад як виглядає пристрій у інтерфейсі Home Assistant. Для керування пристроєм потрібно використовувати лише нижню кнопку з написом натиснути. З верхнього вимикача створена нижня кнопка з затримкою увімкнення в 300 мілісекунд.

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі