Macropad 4x5 cho HomeAssistant / ESPHome

Mô hình Macropad 4x5 này tương thích ESPHome và sẵn sàng cho Home Assistant. Bao gồm hướng dẫn in và cấu hình, cùng với các tùy chỉnh cho cảm biến và đèn LED. Lý tưởng cho người dùng muốn tùy biến giao diện điều khiển nhà thông minh.

👁️
602
Lượt Xem
❤️
13
Lượt Thích
📥
38
Lượt Tải
Cập Nhật Dec 15, 2025
Chi tiết
Tải xuống
Bình Luận
Khoe bản in
Remix

Mô tả

Sau khi in xong, tui đã gỡ cái support ở giữa ra bằng kềm, hoặc bạn có thể xóa nó trong phần mềm slicer.

Cái Plate trên cùng cho Switch (công tắc) thì chắc chắn lắm, không cần support đâu.

esphome:
  name: buttonpad-v2
  friendly_name: ButtonPad-V2
  on_boot:
    priority: -10
    then:
      - lambda: !lambda |- 
              id(key_1_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_2_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_3_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_4_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_5_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_6_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_7_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_8_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_9_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_A_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_B_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_C_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_D_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_E_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_F_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_G_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_H_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_I_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_J_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_K_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_1_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_2_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_3_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_4_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_5_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_6_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_7_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_8_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_9_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_A_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_B_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_C_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_D_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_E_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_F_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_G_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_H_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_I_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_J_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_K_held_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_1_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_2_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_3_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_4_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_5_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_6_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_7_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_8_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_9_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_A_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_B_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_C_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_D_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_E_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_F_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_G_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_H_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_I_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_J_double_click_state).publish_state(false);
      - lambda: !lambda |- 
              id(key_K_double_click_state).publish_state(false);
      - light.turn_on:
          id: led_strip
          brightness: 100%
          red: 80%
          green: 60%
          blue: 100%

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger: 

# Enable Home Assistant API
api:
  encryption:
    key: "PnBg/ca/r7Z4uEva9CTEkSXgm1kJx6FmgYcFnWvE4+c="

ota:
  password: "dce4a01122c8c506a43fa3ebbdde628f"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Buttonpad-V2 Fallback Hotspot"
    password: "m8caOXm3DMsB"

captive_portal: 


light:
  - platform: neopixelbus
    id: led_strip
    type: GRB
    variant: WS2811
    pin: GPIO13
    num_leds: 16
    name: "Podsvietenie"

matrix_keypad:
  id: espdeck_keypad
  rows:
    - pin: GPIO33
    - pin: GPIO32
    - pin: GPIO16
    - pin: GPIO17
  columns:
    - pin: GPIO12
    - pin: GPIO14
    - pin: GPIO27
    - pin: GPIO26
    - pin: GPIO25
  keys: "123456789ABCDEFGHIJK"
  has_diodes: false

binary_sensor:
  - platform: template
    name: "Keypad 1 Held"
    id: key_1_held_state
  - platform: template
    name: "Keypad 1 Double Click"
    id: key_1_double_click_state
  - platform: template
    name: "Keypad 1 Click"
    id: key_1_click_state

  - platform: template
    name: "Keypad 2 Held"
    id: key_2_held_state
  - platform: template
    name: "Keypad 2 Double Click"
    id: key_2_double_click_state
  - platform: template
    name: "Keypad 2 Click"
    id: key_2_click_state

  - platform: template
    name: "Keypad 3 Held"
    id: key_3_held_state
  - platform: template
    name: "Keypad 3 Double Click"
    id: key_3_double_click_state
  - platform: template
    name: "Keypad 3 Click"
    id: key_3_click_state

  - platform: template
    name: "Keypad 4 Held"
    id: key_4_held_state
  - platform: template
    name: "Keypad 4 Double Click"
    id: key_4_double_click_state
  - platform: template
    name: "Keypad 4 Click"
    id: key_4_click_state

  - platform: template
    name: "Keypad 5 Held"
    id: key_5_held_state
  - platform: template
    name: "Keypad 5 Double Click"
    id: key_5_double_click_state
  - platform: template
    name: "Keypad 5 Click"
    id: key_5_click_state

  - platform: template
    name: "Keypad 6 Held"
    id: key_6_held_state
  - platform: template
    name: "Keypad 6 Double Click"
    id: key_6_double_click_state
  - platform: template
    name: "Keypad 6 Click"
    id: key_6_click_state

  - platform: template
    name: "Keypad 7 Held"
    id: key_7_held_state
  - platform: template
    name: "Keypad 7 Double Click"
    id: key_7_double_click_state
  - platform: template
    name: "Keypad 7 Click"
    id: key_7_click_state

  - platform: template
    name: "Keypad 8 Held"
    id: key_8_held_state
  - platform: template
    name: "Keypad 8 Double Click"
    id: key_8_double_click_state
  - platform: template
    name: "Keypad 8 Click"
    id: key_8_click_state

  - platform: template
    name: "Keypad 9 Held"
    id: key_9_held_state
  - platform: template
    name: "Keypad 9 Double Click"
    id: key_9_double_click_state
  - platform: template
    name: "Keypad 9 Click"
    id: key_9_click_state

  - platform: template
    name: "Keypad A Held"
    id: key_A_held_state
  - platform: template
    name: "Keypad A Double Click"
    id: key_A_double_click_state
  - platform: template
    name: "Keypad A Click"
    id: key_A_click_state

  - platform: template
    name: "Keypad B Held"
    id: key_B_held_state
  - platform: template
    name: "Keypad B Double Click"
    id: key_B_double_click_state
  - platform: template
    name: "Keypad B Click"
    id: key_B_click_state

  - platform: template
    name: "Keypad C Held"
    id: key_C_held_state
  - platform: template
    name: "Keypad C Double Click"
    id: key_C_double_click_state
  - platform: template
    name: "Keypad C Click"
    id: key_C_click_state

  - platform: template
    name: "Keypad D Held"
    id: key_D_held_state
  - platform: template
    name: "Keypad D Double Click"
    id: key_D_double_click_state
  - platform: template
    name: "Keypad D Click"
    id: key_D_click_state

  - platform: template
    name: "Keypad E Held"
    id: key_E_held_state
  - platform: template
    name: "Keypad E Double Click"
    id: key_E_double_click_state
  - platform: template
    name: "Keypad E Click"
    id: key_E_click_state

  - platform: template
    name: "Keypad F Held"
    id: key_F_held_state
  - platform: template
    name: "Keypad F Double Click"
    id: key_F_double_click_state
  - platform: template
    name: "Keypad F Click"
    id: key_F_click_state

  - platform: template
    name: "Keypad G Held"
    id: key_G_held_state
  - platform: template
    name: "Keypad G Double Click"
    id: key_G_double_click_state
  - platform: template
    name: "Keypad G Click"
    id: key_G_click_state

  - platform: template
    name: "Keypad H Held"
    id: key_H_held_state
  - platform: template
    name: "Keypad H Double Click"
    id: key_H_double_click_state
  - platform: template
    name: "Keypad H Click"
    id: key_H_click_state

  - platform: template
    name: "Keypad I Held"
    id: key_I_held_state
  - platform: template
    name: "Keypad I Double Click"
    id: key_I_double_click_state
  - platform: template
    name: "Keypad I Click"
    id: key_I_click_state

  - platform: template
    name: "Keypad J Held"
    id: key_J_held_state
  - platform: template
    name: "Keypad J Double Click"
    id: key_J_double_click_state
  - platform: template
    name: "Keypad J Click"
    id: key_J_click_state

  - platform: template
    name: "Keypad K Held"
    id: key_K_held_state
  - platform: template
    name: "Keypad K Double Click"
    id: key_K_double_click_state
  - platform: template
    name: "Keypad K Click"
    id: key_K_click_state

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key1
    key: 1
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_1_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_1_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 1 MultiHeld"
          - lambda: !lambda |- 
                  id(key_1_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_1_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 1 Double Click"
        - lambda: !lambda |- 
                id(key_1_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_1_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key2
    key: 2
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_2_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_2_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 2 MultiHeld"
          - lambda: !lambda |- 
                  id(key_2_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_2_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 2 Double Click"
        - lambda: !lambda |- 
                id(key_2_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_2_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key3
    key: 3
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_3_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_3_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 3 MultiHeld"
          - lambda: !lambda |- 
                  id(key_3_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_3_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 3 Double Click"
        - lambda: !lambda |- 
                id(key_3_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_3_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key4
    key: 4
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_4_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_4_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 4 MultiHeld"
          - lambda: !lambda |- 
                  id(key_4_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_4_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 4 Double Click"
        - lambda: !lambda |- 
                id(key_4_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_4_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key5
    key: 5
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_5_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_5_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 5 MultiHeld"
          - lambda: !lambda |- 
                  id(key_5_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_5_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 5 Double Click"
        - lambda: !lambda |- 
                id(key_5_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_5_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key6
    key: 6
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_6_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_6_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 6 MultiHeld"
          - lambda: !lambda |- 
                  id(key_6_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_6_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 6 Double Click"
        - lambda: !lambda |- 
                id(key_6_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_6_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key7
    key: 7
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_7_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_7_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 7 MultiHeld"
          - lambda: !lambda |- 
                  id(key_7_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_7_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 7 Double Click"
        - lambda: !lambda |- 
                id(key_7_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_7_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key8
    key: 8
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_8_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_8_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 8 MultiHeld"
          - lambda: !lambda |- 
                  id(key_8_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_8_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 8 Double Click"
        - lambda: !lambda |- 
                id(key_8_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_8_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: key9
    key: 9
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_9_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_9_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key 9 MultiHeld"
          - lambda: !lambda |- 
                  id(key_9_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_9_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key 9 Double Click"
        - lambda: !lambda |- 
                id(key_9_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_9_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyA
    key: A
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_A_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_A_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key A MultiHeld"
          - lambda: !lambda |- 
                  id(key_A_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_A_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key A Double Click"
        - lambda: !lambda |- 
                id(key_A_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_A_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyB
    key: B
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_B_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_B_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key B MultiHeld"
          - lambda: !lambda |- 
                  id(key_B_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_B_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key B Double Click"
        - lambda: !lambda |- 
                id(key_B_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_B_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyC
    key: C
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_C_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_C_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key C MultiHeld"
          - lambda: !lambda |- 
                  id(key_C_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_C_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key C Double Click"
        - lambda: !lambda |- 
                id(key_C_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_C_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyD
    key: D
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_D_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_D_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key D MultiHeld"
          - lambda: !lambda |- 
                  id(key_D_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_D_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key D Double Click"
        - lambda: !lambda |- 
                id(key_D_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_D_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyE
    key: E
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_E_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_E_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key E MultiHeld"
          - lambda: !lambda |- 
                  id(key_E_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_E_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key E Double Click"
        - lambda: !lambda |- 
                id(key_E_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_E_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyF
    key: F
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_F_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_F_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key F MultiHeld"
          - lambda: !lambda |- 
                  id(key_F_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_F_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key F Double Click"
        - lambda: !lambda |- 
                id(key_F_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_F_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyG
    key: G
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_G_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_G_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key G MultiHeld"
          - lambda: !lambda |- 
                  id(key_G_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_G_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key G Double Click"
        - lambda: !lambda |- 
                id(key_G_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_G_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyH
    key: H
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_H_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_H_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key H MultiHeld"
          - lambda: !lambda |- 
                  id(key_H_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_H_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key H Double Click"
        - lambda: !lambda |- 
                id(key_H_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_H_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyI
    key: I
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_I_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_I_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key I MultiHeld"
          - lambda: !lambda |- 
                  id(key_I_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_I_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key I Double Click"
        - lambda: !lambda |- 
                id(key_I_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_I_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyJ
    key: J
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_J_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_J_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key J MultiHeld"
          - lambda: !lambda |- 
                  id(key_J_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_J_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key J Double Click"
        - lambda: !lambda |- 
                id(key_J_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_J_double_click_state).publish_state(false);

  - platform: matrix_keypad
    keypad_id: espdeck_keypad
    id: keyK
    key: K
    on_multi_click:
      - timing:
          - ON for at most 950ms
          - OFF for at least 500ms
        then:
          - lambda: !lambda |- 
                  id(key_K_click_state).publish_state(true);
          - delay: 500ms
          - lambda: !lambda |- 
                  id(key_K_click_state).publish_state(false);
      - timing:
          - ON for at least 1s
        then:
          - logger.log: "Key K MultiHeld"
          - lambda: !lambda |- 
                  id(key_K_held_state).publish_state(true);
          - delay: 1s
          - lambda: !lambda |- 
                  id(key_K_held_state).publish_state(false);
    on_double_click:
      min_length: 25ms
      max_length: 350ms
      then:
        - logger.log: "Key K Double Click"
        - lambda: !lambda |- 
                id(key_K_double_click_state).publish_state(true);
        - delay: 1s
        - lambda: !lambda |- 
                id(key_K_double_click_state).publish_state(false);

Giấy phép

Tác phẩm này được cấp phép theo

Creative Commons — Attribution — Noncommercial

CC-BY-NC

Yêu cầu ghi công
Remix & phái sinh Được phép
Sử dụng thương mại Không được phép

File mô hình

TẤT CẢ FILE MÔ HÌNH (3 Tập tin)
Đang tải files, vui lòng chờ...
Vui lòng đăng nhập để bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Vui lòng đăng nhập để khoe bản in của bạn.

Chưa có bản in nào được khoe. Hãy là người đầu tiên!

Remix (0)