Automatyzacje Wewnętrzne
Przygotuj swoje pierwsze automatyzacje wewnętrzne!
Czym są Automatyzacje Wewnętrzne?
Automatyzacje wewnętrzne to potężny sposób na tworzenie prostych, kluczowych automatyzacji, które działają bezpośrednio na Twoim sterowniku boneIO ESP. Oznacza to, że będą działać nawet wtedy, gdy Twoja główna centrala inteligentnego domu (jak Home Assistant) będzie offline. Są idealne do obsługi krytycznych funkcji, takich jak włączanie światła za pomocą przełącznika naściennego.
Podstawowa automatyzacja: Przełączanie światła
Zacznijmy od domyślnej konfiguracji, która łączy naciśnięcie przycisku ze światłem.
binary_sensor:
- platform: gpio
name: 'IN_01_Przycisk_Sypialnia1'
id: in_01
pin:
pcf8574: pcf_inputs
number: 0
mode:
input: true
inverted: true
on_press: # To jest nasz wyzwalacz automatyzacji
then:
- light.toggle: lchl_01 # To jest akcja do wykonania
light:
- platform: monochromatic
output: chl01
name: 'CHL 01'
id: chl_01
default_transition_length: 2s
gamma_correct: 0W sekcji on_press: definiujemy, co dzieje się po naciśnięciu przycisku.
Akcja - light.toggle: lchl_01 przełączy stan światła o identyfikatorze light_01.
Zaawansowana automatyzacja: Multi-Click (Wielokrotne Kliknięcie)
ESPHome pozwala zdefiniować wiele akcji dla jednego przycisku w zależności od sposobu jego naciśnięcia (pojedyncze, podwójne lub długie naciśnięcie). Służy do tego komponent on_multi_click.
Skonfigurujmy jeden przycisk (in_01) do sterowania trzema różnymi światłami.
1. Cel
- Pojedyncze kliknięcie: Przełącz
chl_01. - Podwójne kliknięcie: Przełącz
chl_02. - Długie naciśnięcie: Przełącz
chl_03.
2. Konfiguracja
Najpierw upewnij się, że masz zdefiniowane swoje światła. Następnie w konfiguracji binary_sensor zamień on_press na on_multi_click.
# Upewnij się, że te światła są zdefiniowane w innej części Twojej konfiguracji
light:
- platform: monochromatic
output: chl01
name: 'CHL 01'
id: chl_01
default_transition_length: 2s
gamma_correct: 0
- platform: monochromatic
output: chl02
name: 'CHL 02'
id: chl_02
default_transition_length: 2s
gamma_correct: 0
- platform: monochromatic
output: chl03
name: 'CHL 03'
id: chl_03
default_transition_length: 2s
gamma_correct: 0
# Teraz skonfiguruj automatyzację multi-click
binary_sensor:
- platform: gpio
name: 'IN_01_Przycisk_MultiClick'
id: in_01
pin:
pcf8574: pcf_inputs
number: 0
mode:
input: true
inverted: true
on_multi_click:
# Uwaga: Kolejność ma znaczenie! ESPHome sprawdza od góry do dołu.
# Najlepiej jest definiować najbardziej złożone wzorce (najdłuższe kliknięcia) jako pierwsze.
# 1. Akcja dla długiego naciśnięcia
- timing:
- ON for at least 1.4s
then:
- logger.log: 'Wykryto długie naciśnięcie, przełączam Światło 1'
- light.toggle: chl_01
# 2. Akcja dla podwójnego kliknięcia
- timing:
- ON for at most 1s
- OFF for at most 0.5s
- ON for at most 1s
- OFF for at least 0.2s
then:
- logger.log: 'Wykryto podwójne kliknięcie, przełączam Światło 2'
- light.toggle: chl_02
# 3. Akcja dla pojedynczego kliknięcia
- timing:
- ON for at most 1s
- OFF for at least 0.5s
then:
- logger.log: 'Wykryto pojedyncze kliknięcie, przełączam Światło 3'
- light.toggle: chl_033. Jak to działa?
Automatyzacja on_multi_click sprawdza sekwencję bloków timing od góry do dołu. Wykonywany jest pierwszy, który pasuje do wzorca naciśnięcia przycisku przez użytkownika.
-
timing: Definiuje wzorzec stanów ON (wciśnięty) i OFF (puszczony). Możesz dostosować wartości czasu (np.at most 1s,at least 0.5s), aby precyzyjnie dostroić responsywność, ale domyślne ustawienia są zazwyczaj dobrym punktem wyjścia. -
then: Ten blok zawiera akcje do wykonania, gdy wzorzectimingzostanie dopasowany. Dodaliśmy akcjęlogger.log, która jest bardzo pomocna przy debugowaniu automatyzacji w logach urządzenia.
Układając kliknięcia od najbardziej złożonego (długie naciśnięcie) do najprostszego (pojedyncze kliknięcie), zapewniasz, że długie naciśnięcie nie wywoła również akcji pojedynczego kliknięcia.
Rozjaśnianie świateł przy pomocy przycisku
binary_sensor:
- platform: gpio
name: 'IN_01'
id: in_01
pin:
pcf8574: pcf_inputs
number: 1
mode:
input: true
inverted: true
on_press:
then:
- while:
condition:
binary_sensor.is_on: in_01
then:
- if:
condition:
lambda: 'return id(chl_01).current_values.get_brightness() >= 0.90f;'
then:
- light.control:
id: chl_01
brightness: 0%
- light.turn_off:
id: chl_01
else:
- light.dim_relative:
id: chl_01
relative_brightness: 5%
transition_length: 0.2s
- delay: 200msJak to działa?
- Wyzwalacz
on_press: Automatyzacja uruchamia się przy naciśnięciu przycisku i natychmiast wchodzi w pętlęwhile. whilez warunkiem:binary_sensor.is_on: in_01utrzymuje działanie pętli tak długo, jak długo przycisk jest fizycznie wciśnięty.- Próg jasności:
lambda: 'return id(chl_01).current_values.get_brightness() >= 0.90f;'odczytuje aktualną jasność światłachl_01(0.0–1.0). Gdy osiągnie ≥ 90%, wykonywana jest sekwencja wyłączenia:light.control: brightness: 0%ustawia jasność na 0 bez przejścia,light.turn_offwyłącza światło, aby upewnić się, że jest w stanie OFF.
- Rozjaśnianie krokiem: Jeśli próg nie został osiągnięty,
light.dim_relative: relative_brightness: 5%zwiększa jasność o 5% z krótkim przejściem0.2s. - Kadencja zmian:
delay: 200msustala tempo powtarzania kroku w pętli (co 200 ms) aż do puszczenia przycisku lub osiągnięcia progu.
Wskazówki
- Upewnij się, że światło o
id: chl_01jest zdefiniowane w konfiguracjilight:(jak w przykładach powyżej). - Chcesz ściemniać zamiast rozjaśniać? Użyj wartości ujemnej, np.
relative_brightness: -5%. - Dostosuj
5%,0.2si200ms, aby zmienić wielkość kroku, płynność i szybkość reakcji.
Multi-Click: Pojedynczy klik — toggle, krótkie przytrzymanie — ściemnianie
Uwaga
Poniższy przykład nie był testowany w środowisku produkcyjnym — może wymagać dostosowań, aby działał poprawnie.
binary_sensor:
- platform: gpio
name: 'IN_01_MultiClick_Sciemniaj'
id: in_01
pin:
pcf8574: pcf_inputs
number: 1
mode:
input: true
inverted: true
on_multi_click:
# 1. Krótkie przytrzymanie: ściemnianie podczas trzymania
- timing:
- ON for at least 0.6s
then:
- while:
condition:
binary_sensor.is_on: in_01
then:
- light.dim_relative:
id: chl_01
relative_brightness: -5%
transition_length: 0.2s
- delay: 200ms
# 2. Pojedynczy klik: przełącz światło
- timing:
- ON for at most 0.5s
- OFF for at least 0.2s
then:
- light.toggle: chl_01Jak to działa?
- Kolejność wzorców: Krótszy wzorzec pojedynczego kliknięcia jest na dole, aby nie „przechwytywał” przytrzymania.
- Ściemniaj podczas trzymania: Gdy przycisk jest ON co najmniej
0.6s, zaczyna działać pętla, która co200mszmniejsza jasność o5%aż do puszczenia. - Dostosowanie progów: Zmieniaj
0.6s,0.5si0.2s, aby dostroić rozpoznawanie gestów — zależą od typu przycisku i oczekiwanej responsywności.
Zmiana barwy RGBW przy kliknięciu
Uwaga
Poniższy przykład nie był testowany w środowisku produkcyjnym — może wymagać dostosowań, aby działał poprawnie.
# Paleta kolorów dostępna jako select (widoczna w Home Assistant)
select:
- platform: template
name: "RGBW Color Preset"
id: rgbw_palette
optimistic: true
options:
- White
- Red
- Green
- Blue
- Cyan
- Magenta
- Yellow
- Amber
- Purple
set_action:
# White (kanał W)
- if:
condition:
lambda: 'return id(rgbw_palette).state == "White";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
white: 100%
red: 0%
green: 0%
blue: 0%
# Red
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Red";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 100%
green: 0%
blue: 0%
white: 0%
# Green
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Green";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 0%
green: 100%
blue: 0%
white: 0%
# Blue
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Blue";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 0%
green: 0%
blue: 100%
white: 0%
# Cyan
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Cyan";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 0%
green: 100%
blue: 100%
white: 0%
# Magenta
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Magenta";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 100%
green: 0%
blue: 100%
white: 0%
# Yellow
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Yellow";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 100%
green: 100%
blue: 0%
white: 0%
# Amber
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Amber";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 100%
green: 60%
blue: 0%
white: 0%
# Purple
- if:
condition:
lambda: 'return id(rgbw_palette).state == "Purple";'
then:
- light.turn_on:
id: rgbw_l
brightness: 80%
red: 60%
green: 0%
blue: 100%
white: 0%
# Klik = następny kolor z palety
binary_sensor:
- platform: gpio
id: in_01
name: "IN_01_Color_Next"
pin:
pcf8574: pcf_inputs
number: 1
mode:
input: true
inverted: true
on_press:
then:
- select.next: rgbw_paletteJak to działa?
- Paleta jako
select: Umożliwia wybór i podgląd aktualnego koloru również z poziomu Home Assistant. select.nextna klik: Każde naciśnięcie przechodzi do kolejnego presetu i ustawia barwę nargbw_l.- Przewidywalność: Ustalona lista (White, Red, Green, …) ułatwia obsługę i szybki powrót do bieli.
Wskazówki
- Upewnij się, że masz zdefiniowaną lampę
rgbw_l(typ RGBW) w sekcjilight:. - Możesz dodać podwójny klik do szybkiego powrotu na „White” lub długie przytrzymanie do ściemniania/rozjaśniania.