Konfiguracja Wielokliku (Multi-click)
Naucz się, jak skonfigurować jeden przycisk do obsługi wielu akcji (klik, dwuklik, przytrzymanie) w ESPHome na urządzeniach boneIO.
Konfiguracja Wielokliku (Multi-click) w ESPHome
Funkcja wielokliku (multi-click) to jedna z najpotężniejszych możliwości automatyzacji. Pozwala jednemu fizycznemu przyciskowi na ścianie wywoływać różne akcje w zależności od sposobu jego naciśnięcia.
Przykładowe zastosowania:
- Pojedyncze kliknięcie: Włącz/wyłącz główne światło w pokoju.
- Podwójne kliknięcie: Aktywuj scenę "relaks" (np. światło główne na 30%, włączona lampa stojąca).
- Długie przytrzymanie: Płynnie rozjaśniaj/ściemniaj oświetlenie.
Ten poradnik pokaże Ci, jak to skonfigurować na dwa sposoby.
Wymagania Wstępne
Zanim zaczniesz, upewnij się, że:
- Masz zainstalowany i działający dodatek ESPHome.
- Twoje urządzenie boneIO jest dodane ("adoptowane") w panelu ESPHome.
- Wiesz, jak edytować plik konfiguracyjny YAML swojego urządzenia.
- Używasz przycisków monostabilnych (dzwonkowych), co jest warunkiem koniecznym do działania wielokliku.
Metoda 1: Logika bezpośrednio w ESPHome (Zalecane dla prostych akcji)
Ta metoda jest najszybsza i idealna, gdy akcje, które chcesz wywołać, dotyczą encji dostępnych bezpośrednio w ESPHome (np. włączanie/wyłączanie przekaźników w tym samym urządzeniu).
Krok 1: Przygotuj swoje encje light
Na potrzeby tego przykładu załóżmy, że masz trzy obwody oświetlenia podłączone do wyjść OUT01, OUT02 i OUT03. Twoja konfiguracja powinna zawierać podobny blok:
light:
- platform: binary
name: 'Główne Światło'
output: out_01
id: light_01
- platform: binary
name: 'Kinkiet'
output: out_02
id: light_02
- platform: binary
name: 'Lampa Stojąca'
output: out_03
id: light_03Krok 2: Znajdź i zmodyfikuj swój binary_sensor
Odszukaj w konfiguracji wejście (binary_sensor), które chcesz zaprogramować, np. IN_01. Standardowa konfiguracja wygląda tak:
binary_sensor:
- platform: gpio
name: 'Przycisk Salon'
pin:
pcf8574: pcf_inputs_1to14
number: 0
mode:
input: true
inverted: true
on_press:
then:
- light.toggle: light_01Usuń całą sekcję on_press. Jest ona zbyt prosta do naszych celów. Musimy ją zastąpić bardziej zaawansowaną logiką.
Krok 3: Dodaj akcję on_multi_click
W miejsce usuniętej sekcji on_press dodaj nową, o nazwie on_multi_click. To tutaj zdefiniujemy nasze akcje.
binary_sensor:
- platform: gpio
name: 'Przycisk Salon'
id: in_01
pin:
pcf8574: pcf_inputs_1to14
number: 0 # Odpowiada IN01
mode:
input: true
inverted: true
# Nowa, zaawansowana sekcja
on_multi_click:
# WAŻNE: Kolejność ma znaczenie! ESPHome sprawdza warunki od góry do dołu.
# Najpierw definiujemy najbardziej złożone kliknięcia (np. potrójne, podwójne).
- timing: # Podwójne kliknięcie (dwuklik)
- ON for at most 1s # Naciśnięcie trwało krócej niż 1 sek.
- OFF for at most 0.5s # Puszczenie trwało krócej niż 0.5 sek.
- ON for at most 1s # Drugie naciśnięcie trwało krócej niż 1 sek.
- OFF for at least 0.2s# Końcowe puszczenie
then:
- light.toggle: light_02 # Akcja: przełącz kinkiet
- timing: # Długie przytrzymanie
- ON for at least 1s # Naciśnięcie trwało DŁUŻEJ niż 1 sek.
then:
- light.toggle: light_03 # Akcja: przełącz lampę stojącą
- timing: # Pojedyncze kliknięcie
- ON for at most 1s # Naciśnięcie trwało krócej niż 1 sek.
- OFF for at least 0.5s# Puszczenie trwało DŁUŻEJ niż 0.5 sek.
then:
- light.toggle: light_01 # Akcja: przełącz światło główneWskazówka: Wartości timing (np. 1s, 0.5s) możesz dostosować do swoich preferencji, aby kliknięcia były bardziej lub mniej czułe.
Po zapisaniu pliku wgraj nową konfigurację na urządzenie. Twój przycisk obsługuje teraz trzy różne akcje!
Metoda 2: Wysyłanie zdarzeń do Home Assistant (Dla zaawansowanych)
Ta metoda jest idealna, gdy chcesz, aby kliknięcie przycisku wywołało złożoną automatyzację w Home Assistant, która steruje wieloma różnymi urządzeniami (nie tylko tymi podpiętymi do boneIO).
Krok 1: Stwórz encję event w ESPHome
Najpierw musimy stworzyć "kanał" do wysyłania zdarzeń do Home Assistant. Dodaj poniższy kod na górze swojej konfiguracji YAML.
event:
- platform: template
name: "Zdarzenia Przycisku Salon"
id: "in_01_events"
event_types:
- "single"
- "double"
- "long"Krok 2: Modyfikacja akcji on_multi_click
Teraz, oprócz przełączania światła, dodamy akcję wysyłania zdarzenia do Home Assistant dla każdego rodzaju kliknięcia.
# ... (sekcja binary_sensor pozostaje bez zmian, modyfikujemy tylko sekcje 'then')
on_multi_click:
- timing: # Podwójne kliknięcie
# ... (definicja czasu bez zmian)
then:
- light.toggle: light_02 # Akcja lokalna (opcjonalne)
- event.trigger:
id: in_01_events
event_type: "double" # Wyślij zdarzenie "double" (podwójne)
- timing: # Długie naciśnięcie
# ... (definicja czasu bez zmian)
then:
- light.toggle: light_03
- event.trigger:
id: in_01_events
event_type: "long" # Wyślij zdarzenie "long" (długie)
- timing: # Pojedyncze kliknięcie
# ... (definicja czasu bez zmian)
then:
- light.toggle: light_01
- event.trigger:
id: in_01_events
event_type: "single" # Wyślij zdarzenie "single" (pojedyncze)Krok 3: Utworzenie automatyzacji w Home Assistant
Po wgraniu nowej konfiguracji, w Home Assistant pojawi się nowa encja event.in01_events. Możesz teraz użyć jej do wyzwalania automatyzacji.
Przejdź do Ustawienia > Automatyzacje i sceny > Utwórz automatyzację i wybierz "Utwórz nową automatyzację". W trybie YAML wyzwalacz będzie wyglądał następująco:
# Przykładowa automatyzacja dla podwójnego kliknięcia
trigger:
- platform: event
event_type: esphome.in_01_events # Nazwa zdarzenia, zgodna z ID w ESPHome
event_data:
type: "double" # Nasłuchuj tylko zdarzenia "double"
condition: []
action:
# Zdefiniuj tutaj, co powinno się wydarzyć w Home Assistant
- service: scene.turn_on
target:
entity_id: scene.movie_night
mode: single