Wieloprotokołowa bramka automatyki domowej AR01V3

CI

English README · Strona projektu

Nauka RF/IR i import Flippera, ESP-RC01, natywna klimatyzacja IR, Hob²Hood/Faber i opcjonalny Steinel NightmatIQ Plus w jednym firmware AR01V3.

Pilot RF/IR -> Flipper Zero -> plik .sub/.ir -> bramka AR01V3 (+ opcjonalne piloty ESP-RC01) -> Home Assistant
Płyta Electrolux/AEG Hob²Hood -> IR -> AR01V3 -> IR -> okap Faber (+ opcjonalnie Home Assistant)
Steinel NightmatIQ Plus <-> Bluetooth Mesh <-> bramka AR01V3 -> Home Assistant

Społecznościowy firmware ESPHome, który przekształca oparty na ESP32 Athom AR01V3 w wieloprotokołową bramkę automatyki domowej. Jeden wspólny firmware łączy trwałą naukę i odtwarzanie RF/IR, import zgodny z Flipperem, obsługę pilotów ESP-RC01 przez ESP-NOW, natywne sterowanie klimatyzacją IR, opcjonalny lokalny most Hob²Hood → Faber, opcjonalną integrację Steinel NightmatIQ Plus przez Bluetooth Mesh oraz łączność z Home Assistant. Funkcje można włączać niezależnie, bez utrzymywania osobnych odmian firmware.

Bramka zapewnia 16 trwałych slotów RF i 10 trwałych slotów IR, zdalne programowanie sygnałów przez sieć, standardowe encje przycisków Home Assistant, parametryzowane i wygodne w GUI akcje nadawania oraz obsługę do 10 pilotów ESP-RC01 przez maksymalnie 10 odbiorników AR01V3. Każdy przycisk ESP-RC01 może zostać przekazany do Home Assistant albo bezpośrednio przypisany do zapisanego slotu IR/RF, co umożliwia autonomiczne działanie bez dostępnego Home Assistant. Zapisane polecenia można również przypisywać do wirtualnych urządzeń, skryptów, scen i automatyzacji bez zahardkodowanych mapowań sprzętu.

Wersja 1.2.4 dodaje opcjonalny lokalny most Electrolux/AEG Hob²Hood → Faber. AR01V3 może bezpośrednio tłumaczyć polecenia podczerwieni wentylatora i światła wysyłane przez płytę, bez udziału Home Assistant w ścieżce sterowania i bez zajmowania zapisanych slotów IR. Osobne urządzenie Faber w Home Assistant pozostaje opcjonalne.

Autor i opiekun projektu: Bartosz Supczińskibartek@env.pl

Dlaczego powstał ten projekt

AR01V3 jest niedrogi, zasilany z sieci, podłączony do sieci i dobrze nadaje się do stałego umieszczenia w pomieszczeniu, w którym trzeba wysyłać polecenia RF lub IR. Projekt zmienia zapisane w nim sygnały w zasoby Home Assistant wielokrotnego użytku zamiast pozostawiać sterowanie wyłącznie na stronie urządzenia. Każdy slot ma osobną encję przycisku, a akcje parametryzowane pozwalają korzystać z zapisanych i przekazywanych bezpośrednio sygnałów z poziomu GUI Home Assistant.

Gdy dostępny jest zgodny plik albo definicja sygnału, zainstalowaną bramkę można zaprogramować i przetestować przez sieć. Nie trzeba podłączać jej przez USB, ponownie kompilować firmware, znajdować się obok AR01V3 ani przynosić oryginalnego pilota do miejsca instalacji. Jest to szczególnie przydatne dla bramek zamontowanych w oddalonych, trudno dostępnych albo wielu różnych lokalizacjach.

Obsługa ESP-RC01 dodaje drugą rolę: niedrogie fizyczne piloty mogą przez ESP-NOW uruchamiać działania Home Assistant albo bezpośrednio wysyłać zapisane polecenie IR/RF z odbierającego AR01V3. Przypisanie lokalne jest zapisane w bramce i nie wymaga aktywnego połączenia z Home Assistant. Dla przycisków przekazywanych do HA kilka odbiorników AR01V3 może słuchać tego samego pilota, zapewniając większy zasięg, a dołączony pakiet usuwa duplikaty odbioru i generuje jedno kanoniczne zdarzenie.

Sygnał można dostarczyć do systemu na trzy sposoby: przez lokalną naukę, import obsługiwanego pliku albo bezpośrednią akcję Home Assistant, która nie korzysta ze slotu.

Dodawanie sygnałów i opcjonalna obsługa Flippera

Flipper Zero nie jest wymagany. AR01V3 może bezpośrednio uczyć się obsługiwanych sygnałów IR oraz sygnałów RF, które potrafi zdekodować jako RC-Switch. Import plików zgodnych z Flipperem jest opcjonalną drogą awaryjną, gdy AR01V3 nie potrafi niezawodnie nauczyć się sygnału albo gdy zgodny plik .sub lub .ir jest już dostępny. Plik można zaimportować bez posiadania urządzenia, którym został pierwotnie przechwycony.

AR01V3 korzysta z niedrogiego sprzętu OOK/ASK pracującego na stałej częstotliwości 433,92 MHz. Sprawdza się jako bramka automatyki, ale nie jest pełnym analizatorem RF i nie można oczekiwać, że niezawodnie zdekoduje każdy własnościowy protokół. Flipper Zero albo inny odpowiedni analizator może dostarczyć zweryfikowane przechwycenie referencyjne dla sygnałów wykraczających poza możliwości niezawodnej lokalnej nauki.

Nie każde przechwycenie RF jest uniwersalne. Plik może zawierać identyfikator nadajnika, kanał, adres albo informacje związane z parowaniem, dlatego sygnał pochodzący z innej instalacji nie musi bez zmian zadziałać z każdym silnikiem lub odbiornikiem. Nawet gdy bezpośrednie wykorzystanie pliku nie jest możliwe, zweryfikowane przechwycenie może dostarczyć danych potrzebnych do poprawienia natywnej obsługi protokołu.

Zgodność z Flipperem jest ograniczona do formatów wymienionych poniżej oraz do sprzętu RF 433,92 MHz OOK/ASK i obsługiwanej ścieżki nadawczej IR w AR01V3.

Zgodność z formatami Flippera

Format Flippera Import Odtwarzanie
Princeton 433,92 MHz OOK/ASK Tak Tak
Statyczny Dooya 40-bit 433,92 MHz OOK/ASK Tak Tak
SubGhz RAW OOK 433,92 MHz Tak Tak
IR NEC Tak Tak
IR RAW Tak Tak
Rolling code Nie Nie
FSK, inne częstotliwości RF lub nieobsługiwane presety Nie Nie

Zrzuty ekranu

Główna strona AR01V3

Interfejs ESPHome Web Server v3 łączy sterowanie sygnałami, parowanie ESP-RC01 i autonomiczne przypisania przycisków, diagnostykę oraz zachowane funkcje AR01V3.

Główna strona ESPHome AR01V3

Zintegrowany importer Flippera

Strona /flipper importuje i testuje obsługiwane pliki .sub i .ir bezpośrednio w tych samych trwałych slotach, z których korzystają strona główna i Home Assistant.

Zintegrowana strona importu sygnałów Flippera

Akcje zapisanych sygnałów w Home Assistant

Każdy zapisany slot IR i RF jest dostępny jako zwykły przycisk Home Assistant w urządzeniu AR01V3 Stored Signal Actions.

AR01V3 Stored Signal Actions w Home Assistant

Steinel NightmatIQ Plus

Chroniona strona /steinel importuje wybraną sieć Steinel, steruje opcjonalnym trybem Bluetooth Mesh oraz pokazuje potwierdzony stan urządzenia i diagnostykę.

Strona integracji Steinel NightmatIQ Plus

Najważniejsze możliwości

Sloty RF i IR

RF 433,92 MHz

IR

Opcjonalne natywne sterowanie klimatyzacją IR

Opcjonalny most Electrolux/AEG Hob²Hood → Faber

Dokładne mapowanie, czasy światła, sposób prezentacji w Home Assistant i działanie przełączników opisuje instrukcja Hob²Hood/Faber.

Import z Flippera

Zdalne programowanie sygnałów

Wbudowany interfejs WWW korzysta z uwierzytelniania HTTP Digest, ale nie zapewnia szyfrowania transmisji HTTPS. Nie należy wystawiać go bezpośrednio do publicznego Internetu; powinien być używany w zaufanej sieci lokalnej albo przez VPN.

ESP-RC01 i wiele odbiorników

Home Assistant

Zachowane funkcje bazowe

Opcjonalna integracja Steinel NightmatIQ Plus

Zwykły firmware zawiera chronioną stronę /steinel, która może pobrać z chmury Steinel kopię wybranej sieci bez zapisywania hasła konta. Integracja tworzy w Home Assistant osobne urządzenie NightmatIQ z natężeniem światła, progiem zmierzchowym, trybem pracy, odpornym stanem rzeczywistego wyjścia, zainstalowaną wersją firmware, rewizją sprzętową, Company ID, Product ID i diagnostyczną siłą sygnału Mesh. AR01V3 wybiera i trwale zapisuje adres źródłowy z wolnej części zakresu provisionera. Jeżeli po usunięciu, ponownym imporcie albo wymianie bramki nowa sekwencja Mesh zostanie odrzucona przez Replay Protection List urządzenia, firmware może ostrożnie przejść do następnego zapisanego adresu i blokuje dalsze zmiany po pierwszej uwierzytelnionej odpowiedzi. AR01V3 domyślnie działa jako Bluetooth Proxy; włączenie NightmatIQ przełącza następny start na Bluetooth Mesh. Wyłączenie przez WWW zachowuje dane Mesh i po restarcie przywraca Bluetooth Proxy. RF, IR i ESP-NOW pozostają dostępne w obu trybach. Szczegóły zawiera polska instrukcja NightmatIQ.

Sprzęt i GPIO

Projekt jest przeznaczony dla Athom AR01V3 z ESP32 i pamięcią flash 8 MB.

Funkcja GPIO Informacja
Odbiornik RF 19 wejście odwrócone, 433,92 MHz
Nadajnik RF 18 wyjście OOK/ASK
Odbiornik IR 33 wejście odwrócone
Nadajnik IR 25 wyjście z nośną
Przycisk lokalny 0 wejście odwrócone
Dioda statusu 27 wyjście statusu

Nie należy wgrywać tej konfiguracji do innej rewizji urządzenia bez sprawdzenia schematu i pinów.

Struktura repozytorium

Ścieżka Przeznaczenie
esphome/ar01v3-01.yamlar01v3-10.yaml Dziesięć unikalnych konfiguracji odbiorników
esphome/ar01v3-multi-protocol-base.yaml Wspólna konfiguracja wieloprotokołowego firmware
esphome/components/ Pamięć sygnałów, importer Flippera, klimatyzacja, most Hob²Hood/Faber i NightmatIQ
home-assistant/ Pakiety ESP-RC01 i Faber, blueprinty automatyzacji GUI, opcjonalny moduł obszaru Faber i przykłady
examples/ Neutralne przykłady Princeton, Dooya i NEC
scripts/ Instalacja, konfiguracja, walidacja, kompilacja, wgrywanie i logi
tests/ Testy regresji i kompilacji komponentów na komputerze

Wymagania

Dla stabilnego ESP-NOW wszystkie punkty dostępowe obsługujące odbiorniki powinny używać tego samego, stałego kanału 2,4 GHz. ESP32 przechodzi na kanał swojego Wi-Fi, dlatego automatyczna zmiana kanału może sprawić, że odbiorniki podłączone do różnych AP nie usłyszą tej samej transmisji ESP-NOW.

1. Pobranie i przygotowanie

git clone https://github.com/supczinskib/athom-ar01v3-multi-protocol-gateway.git
cd athom-ar01v3-multi-protocol-gateway

Instalacja przypiętej wersji ESPHome na Debianie lub Ubuntu:

sudo bash scripts/01_install_esphome.sh

Powstanie środowisko /opt/esphome-10x10. Jeżeli ESPHome jest zainstalowany gdzie indziej, przed uruchamianiem skryptów można ustawić zmienną ESPHOME na ścieżkę do jego programu wykonywalnego.

2. Konfiguracja instalacji

bash scripts/02_configure.sh 03

Argument wybiera konfigurację fizycznego AR01V3 używaną później przez polecenia kompilacji, wgrywania i logów. Konfigurator pokazuje bieżące wartości, a Enter pozostawia je bez zmian. Hasła są prezentowane wyłącznie jako ********; Enter zachowuje rzeczywistą wartość zapisaną wcześniej w pliku. Konfigurator obejmuje:

Skrypt tworzy lub aktualizuje esphome/secrets.yaml, zachowuje nieznane istniejące klucze i ustawia prawa 0600. Wybrany numer odbiornika i ustawienia klimatyzacji trafiają osobno do esphome/climate.local.json. Oba pliki lokalne są ignorowane przez Git. Wyświetlane gwiazdki nigdy nie zastępują istniejącego hasła.

Przy konfiguracji ręcznej należy skopiować esphome/secrets.example.yaml jako esphome/secrets.yaml i zastąpić wszystkie wartości przykładowe, a następnie mimo to uruchomić scripts/02_configure.sh NUMER_URZĄDZENIA, aby wybrać odbiornik i sprawdzić jego profil klimatyzacji. Konfiguracje bez zapisanego wyboru zachowują opublikowane ustawienie domyślne Coolix.

3. Dostosowanie wybranego odbiornika

Każdy fizyczny AR01V3 otrzymuje osobny plik:

Każdy ma unikalną nazwę ESPHome i receiver_id. Numer wybrany przez scripts/02_configure.sh jest zapamiętywany lokalnie; późniejsze polecenia go wyświetlają, ale nie pytają o niego ponownie. Nie należy wgrywać tego samego numeru do dwóch aktywnych urządzeń. Można zmienić friendly_name, room i timezone, zachowując unikalne name i receiver_id. Domyślna wersja publiczna używa UTC i pustego obszaru.

4. Walidacja

Pełna kontrola źródeł, parsera, komponentów C++, YAML i wszystkich dziesięciu konfiguracji:

bash scripts/03_validate_all.sh

Szybsze testy lokalne bez pełnej walidacji ESPHome:

bash scripts/00_self_test.sh

Przed utworzeniem czystego archiwum albo wydania GitHub należy uruchomić ostrzejszy tryb publikacyjny w kopii, która nie zawiera esphome/secrets.yaml:

bash scripts/00_self_test.sh --publication

Zwykła walidacja instalacji celowo dopuszcza lokalny, ignorowany przez Git plik secrets.yaml; tryb publikacyjny go odrzuca.

Poprawna walidacja nie potwierdza zasięgu RF ani zgodności z konkretnym sprzętem — to trzeba sprawdzić fizycznie.

5. Kompilacja

Dla odbiornika wybranego podczas konfiguracji:

bash scripts/04_compile_one.sh

Skrypt wypisze ścieżki do utworzonych plików firmware.factory.bin, firmware.bin i/lub firmware.ota.bin. Wszystkie konfiguracje należy kompilować tylko wtedy, gdy rzeczywiście potrzebne jest dziesięć obrazów:

bash scripts/06_compile_all.sh

6. Pierwsze wgranie i odzyskiwanie przez USB

Podłącz AR01V3 przewodem USB-C obsługującym dane. Wyświetl porty:

bash scripts/08_list_serial_ports.sh

Następnie użyj dokładnej ścieżki /dev/serial/by-id/... pokazanej przez skrypt:

sudo bash scripts/09_upload_usb.sh /dev/serial/by-id/WŁAŚCIWY_PORT

ESPHome w razie potrzeby skompiluje i wgra właściwy obraz szeregowy. Nie wolno odłączać zasilania w czasie zapisu. Brak portu zwykle oznacza przewód bez danych, problem z uprawnieniami albo zajęcie portu przez inny program.

7. Aktualizacja OTA z terminala

Po pierwszej instalacji USB można używać natywnego, chronionego hasłem OTA ESPHome:

bash scripts/05_upload_ota.sh

Skrypt używa nazwy .local zapamiętanego odbiornika. Jako jedyny opcjonalny argument można podać adres IP albo inną nazwę hosta. Przed wgraniem skrypt wyświetla odbiornik, profil klimatyzacji, plik konfiguracji i cel OTA, ale nie pyta ponownie o numer.

8. Aktualizacja przez stronę WWW

  1. Skompiluj konfigurację właściwego odbiornika skryptem scripts/04_compile_one.sh.
  2. Otwórz http://ADRES_URZĄDZENIA/.
  3. Zaloguj się danymi ustawionymi w scripts/02_configure.sh.
  4. Znajdź sekcję OTA Update.
  5. Wybierz pasujący plik firmware.bin albo firmware.ota.bin pokazany po kompilacji.
  6. Uruchom aktualizację i poczekaj na restart.

Nie wolno używać firmware.factory.bin do OTA — jest przeznaczony do pierwszej instalacji szeregowej/fabrycznej. Podczas aktualizacji strona może przestać odpowiadać; jest to normalne. Nie odłączaj zasilania.

9. Logi

bash scripts/10_logs.sh

Adres IP albo nazwę hosta można podać jako jedyny opcjonalny argument.

Firmware wyłącza logowanie na UART (baud_rate: 0), dlatego należy używać logów sieciowych API.

Główna strona urządzenia

Po wejściu na http://ADRES_URZĄDZENIA/ i zalogowaniu dostępne są:

Usunięcie slotu kasuje jego rekord NVS. Factory reset usuwa ustawienia, pary pilotów i zapisane sygnały, więc jest operacją destrukcyjną.

Nauka IR

  1. Wybierz Signal 0Signal 9 w IR Signal Slot.
  2. Naciśnij IR Learn.
  3. Skieruj oryginalny pilot na AR01V3 i raz wciśnij odpowiedni przycisk.
  4. Poczekaj na informację o zapisaniu NEC albo RAW w IR Learning Status.
  5. Sprawdź sygnał przyciskiem IR Send.
  6. Wartość IR Slot N i przycisk HA Send IR Slot N zaktualizują się automatycznie.

Rozpoznany NEC jest preferowany, ponieważ daje mały i powtarzalny rekord. Dla innych protokołów zapisywany jest znormalizowany RAW, jeżeli odbiornik otrzyma poprawną ramkę.

Nauka RF

  1. Wybierz Signal 0Signal 15 w RF Signal Slot.
  2. Na początek zostaw RF Repeat Count równy 5.
  3. Naciśnij RF Learn.
  4. Przytrzymaj przycisk oryginalnego pilota, aż status potwierdzi trzy zgodne ramki i zapis.
  5. Sprawdź slot przyciskiem RF Send.

Lokalna nauka obsługuje sygnały dekodowane przez RC-Switch. Zmienna liczba surowych czasów przy kolejnych próbach nie oznacza, że sygnał nadaje się do odtworzenia. Jeżeli nie ma zdekodowanej ramki, należy użyć odpowiedniego narzędzia do przechwycenia i zaimportować obsługiwany plik Flippera.

Import plików Flippera

  1. Otwórz http://ADRES_URZĄDZENIA/flipper albo wciśnij Flipper Import Page na stronie głównej.
  2. W panelu IR lub RF wybierz slot docelowy.
  3. Wskaż obsługiwany plik .ir albo .sub.
  4. Uruchom import i sprawdź status online.
  5. Przed przypisaniem do HA wykonaj transmisję testową.
  6. Na stronie głównej sprawdź, czy podgląd slotu nie pokazuje już None.

Import do zajętego slotu zastępuje poprzedni rekord. Oryginalne pliki warto zachować jako kopię. Dooya jest obsługiwany tylko dla statycznych kodów 40-bitowych; rolling code nie działa. Projekt nie dodaje FSK ani innych częstotliwości.

Integracja z Home Assistant

Dodanie AR01V3

  1. Otwórz Ustawienia → Urządzenia i usługi.
  2. Dodaj integrację ESPHome, jeżeli urządzenie nie zostało wykryte automatycznie.
  3. Podaj IP lub nazwę .local AR01V3.
  4. Zakończ połączenie i opcjonalnie przypisz obszar.

Główne urządzenie jest widoczne jako AR01V3 Gateway NN, gdzie NN oznacza skonfigurowany numer odbiornika. Home Assistant może osobno pokazać AR01V3 Stored Signal Actions. To celowe podurządzenie z 26 przyciskami przygotowanymi do użycia w wirtualnych urządzeniach, skryptach, scenach i automatyzacjach.

Jeżeli po aktualizacji firmware przycisków nie widać, przeładuj integrację ESPHome lub uruchom ponownie Home Assistant i sprawdź wersję projektu 1.2.4.

Wywołanie zapisanego slotu w GUI

Należy użyć akcji encji, a nie szukać akcji urządzenia ESPHome:

  1. W skrypcie lub automatyzacji wybierz Dodaj akcję.
  2. Wyszukaj Przycisk: Naciśnij.
  3. Wybierz Send RF Slot N albo Send IR Slot N z AR01V3 Stored Signal Actions.
  4. Zapisz i uruchom.

Encja podglądu w rodzaju sensor...rf_slot_0 tylko wyświetla zawartość i niczego nie wysyła. Do wysyłania służy odpowiadająca jej encja button...send_rf_slot_0.

Wirtualny ekran/roleta utworzony w GUI

Przykład zakłada, że RF slot 0 to góra, a RF slot 1 to dół:

  1. Otwórz Ustawienia → Urządzenia i usługi → Pomocnicy → Utwórz pomocnika.
  2. Utwórz Przełącznik o nazwie Ekran przypuszczalnie otwarty. Zapamiętuje on przewidywaną pozycję, ponieważ jednokierunkowy RF nie zwraca stanu.
  3. Utwórz kolejny pomocnik: Szablon → Zasłona.
  4. Nazwij go Ekran i wybierz klasę Roleta.
  5. W polu Stan wpisz:

    open
    

    Użyj faktycznego identyfikatora encji utworzonego przełącznika.

  6. W Akcje przy otwieraniu dodaj Przycisk: Naciśnij → Send RF Slot 0, a następnie włącz pomocniczy przełącznik.
  7. W Akcje przy zamykaniu dodaj Przycisk: Naciśnij → Send RF Slot 1, a następnie wyłącz pomocniczy przełącznik.
  8. Jeżeli istnieje osobny zapisany sygnał STOP, przypisz go do Akcje przy zatrzymaniu.
  9. Zapisz zasłonę i dodaj encję Ekran do pulpitu.

Pokazana pozycja jest przewidywana, a nie mierzona. Po sterowaniu fizycznym pilotem trzeba poprawić przełącznik ręcznie albo dodać prawdziwy czujnik położenia.

Wirtualne przyciski urządzeń

Dla projektora, amplitunera, lampy lub innego polecenia bez stanu:

  1. Otwórz Ustawienia → Automatyzacje i sceny → Skrypty → Utwórz skrypt.
  2. Nadaj nazwę, np. Projektor ON.
  3. Dodaj Przycisk: Naciśnij i wybierz odpowiedni Send IR Slot N lub Send RF Slot N.
  4. Zapisz skrypt.
  5. Dodaj encję skryptu na pulpit jako przycisk.

Tak samo tworzy się OFF, wybór wejścia, tryb dźwięku, ruch ekranu i inne polecenia. Skrypty są najprostszymi wielokrotnie używanymi elementami wirtualnego pilota tworzonego w GUI.

Połączenie sygnałów ze sceną

Scena Home Assistant zapisuje oczekiwane stany encji, ale nie wykonuje dowolnych transmisji. Do połączenia obu funkcji służy skrypt:

  1. W Ustawienia → Automatyzacje i sceny → Sceny utwórz scenę stanową, np. przyciemnione światła.
  2. W Skrypty utwórz Tryb filmowy.
  3. Dodaj Scena: Aktywuj i wybierz scenę.
  4. Dodaj akcje Przycisk: Naciśnij dla potrzebnych slotów IR/RF.
  5. Jeżeli urządzenia tego wymagają, dodaj opóźnienia pomiędzy zasilaniem, wyborem wejścia i ruchem silnika.
  6. Zapisz skrypt i użyj go na pulpicie, w automatyzacji lub w asystencie głosowym.

Scena odpowiada wtedy za stany, a skrypt za kolejność fizycznych poleceń.

Bezpośredni kod z HA bez zapisu do slotu

Dostępne są akcje z polami widocznymi w GUI. Pełna nazwa zależy od nazwy odbiornika, np. esphome.ar01v3_espnow_01_transmit_rf_princeton.

Końcówka akcji Pola
transmit_ir_nec address, command, repeats
transmit_ir_raw tekst podpisanych timings, carrier_hz, duty_percent, repeats
transmit_rf_princeton code_hex, bit_count, te_us, guard_multiplier, repeats, gap_ms
transmit_rf_dooya 40-bitowy code_hex, repeats
transmit_rf_raw tekst podpisanych timings, repeats, gap_ms

W Narzędzia deweloperskie → Akcje wyszukaj pełną nazwę, uzupełnij pola i wykonaj test. Po sprawdzeniu tę samą akcję można wybrać w skrypcie albo automatyzacji. Akcja bezpośrednia niczego nie zapisuje i nie zmienia slotów.

Istnieją też warianty zwracające status: send_ir_nec, send_ir_raw, send_rf_princeton, send_rf_dooya, send_rf_raw, send_ir_slot i send_rf_slot. W zwykłym GUI do zapisanych slotów wygodniejsze są jednak encje przycisków.

Parowanie ESP-RC01 i deduplikacja

Parowanie

Ten sam fizyczny pilot należy zapisać w tym samym logicznym slocie na każdym AR01V3:

  1. Na odbiorniku 01 wybierz ESP-NOW Pairing Slot → Pilot 1.
  2. Naciśnij Pair ESP-NOW Remote; okno parowania trwa 60 sekund.
  3. Naciśnij przycisk ESP-RC01 i sprawdź MAC w Paired ESP-NOW Pilot 1.
  4. Powtórz na odbiorniku 02, 03 itd., zawsze wybierając Pilot 1 dla tego samego pilota.
  5. Drugiemu pilotowi przypisz Pilot 2, aż do Pilot 10.

Logiczny slot jest częścią mechanizmu deduplikacji. Ten sam pilot nie może znajdować się w różnych slotach logicznych na różnych odbiornikach.

Przypisanie przycisku pilota do autonomicznej akcji lokalnej

Najpierw zapisz i przetestuj potrzebne polecenie w slocie IR albo RF. Następnie otwórz chronioną hasłem stronę główną AR01V3, który ma je nadawać:

  1. W sekcji ESP-RC01 Button Assignment wybierz sparowanego Pilot.
  2. Wybierz fizyczny Button.
  3. W polu Action wybierz slot IR, slot RF, Home Assistant albo Ignore.
  4. Sprawdź gotowe mapowanie w wierszu Assignment.
  5. Naciśnij fizyczny przycisk i sprawdź reakcję sterowanego urządzenia.

Przypisanie zapisuje się automatycznie i pozostaje po zwykłym restarcie oraz aktualizacji firmware. Lokalna akcja slotu jest wykonywana w całości przez AR01V3, dlatego działa również wtedy, gdy Home Assistant jest niedostępny. Akcje RF korzystają z bieżących ustawień RF Repeat Count i RF Repeat Gap. Home Assistant przekazuje przycisk do zdarzenia właściwego dla danego pilota, a Ignore nie nadaje sygnału i nie generuje zdarzenia HA.

Każdy odbiornik przechowuje własne przypisania. Jeżeli kilka AR01V3 słyszy ten sam pilot, lokalną akcję należy ustawić tylko na urządzeniu, które ma ją wykonać; w przeciwnym razie kilka odbiorników może nadać to samo polecenie. Deduplikacja Home Assistant dotyczy wyłącznie przycisków przekazywanych do HA, a nie autonomicznych transmisji lokalnych.

Instalacja pakietu HA

Najpierw wykonaj kopię konfiguracji Home Assistant. Na systemie z konfiguracją dostępną jako zwykły katalog:

sudo bash scripts/07_install_ha_package.sh /var/lib/homeassistant

W razie potrzeby zmień ścieżkę. Instalator tworzy kopię configuration.yaml, wykrywa typowe warianty packages, instaluje jeden właściwy plik i zatrzymuje się zamiast przepisywać nietypową konfigurację.

W Home Assistant OS należy skopiować ręcznie jeden wariant przez Studio Code Server, File editor, Sambę albo SSH:

Zainstaluj tylko jeden wariant, sprawdź konfigurację i zrestartuj Home Assistant. Automatyzacja pakietu może być tylko do odczytu w GUI, ponieważ nie znajduje się w automations.yaml; jest to prawidłowe. Własne automatyzacje tworzy się normalnie w GUI i wyzwala zdarzeniem wynikowym.

Uproszczona konfiguracja całego pilota w GUI

Dołączony schemat automatyzacji ESP-RC01 pilot button actions pozwala skonfigurować wszystkie przyciski jednego logicznego pilota w jednej automatyzacji GUI, bez ręcznego wpisywania nazw zdarzeń i danych YAML.

Skrypt instalacyjny kopiuje pakiet deduplikujący i schemat automatyzacji:

sudo bash scripts/07_install_ha_package.sh /var/lib/homeassistant

Po instalacji:

  1. Zrestartuj Home Assistant.
  2. Otwórz Ustawienia → Automatyzacje i sceny → Schematy.
  3. Wybierz ESP-RC01 pilot button actions, aby utworzyć z niego automatyzację.
  4. Nadaj automatyzacji nazwę, np. Pilot 1.
  5. W polu ESP-RC01 pilot wybierz logiczny numer pilota użyty podczas parowania, np. Pilot 1.
  6. W sekcji Main buttons dodaj działania dla ON, OFF, Night oraz regulacji jasności.
  7. W sekcji Preset buttons P1–P7 dodaj potrzebne działania przycisków programowalnych.
  8. Nieużywane pola pozostaw puste.
  9. Zapisz automatyzację i sprawdź fizyczny pilot.
  10. Dla kolejnego pilota utwórz następną automatyzację z tego samego schematu.

Na stronie AR01V3 każdy przycisk obsługiwany przez schemat musi mieć przypisaną akcję Home Assistant. Przypisanie lokalnego slotu albo Ignore nie generuje zdarzenia HA. Nie przypisuj tego samego przycisku jednocześnie do schematu i osobnej automatyzacji Home Assistant, chyba że oba działania są zamierzone.

Automatyzacja przycisku pilota w GUI

Przy jednym odbiorniku AR01V3 wybierz jako wyzwalacz właściwą encję zdarzeń ESP-NOW Pilot N Button, a następnie typ zdarzenia, np. on, off albo p1. Każdy pilot ma osobną encję, dlatego nie jest potrzebny filtr numeru pilota ani szablon YAML.

Encje te pozostają dostępne w Home Assistant, ale nie są wyświetlane na wbudowanej stronie WWW AR01V3, ponieważ są źródłami zdarzeń, a nie lokalnymi elementami sterującymi.

Jeżeli ten sam pilot jest odbierany przez kilka AR01V3, użyj zainstalowanego pakietu deduplikującego i wyzwalacza Zdarzenie. Jako typ wpisz nazwę konkretnego pilota, np. esp_rc01_pilot_1_button, a w danych zdarzenia podaj przycisk:

button: "on"

Pakiet generuje zdarzenia od esp_rc01_pilot_1_button do esp_rc01_pilot_10_button. Pilot 1 i Pilot 2 mają więc różne typy zdarzeń nawet wtedy, gdy na obu naciśnięto przycisk on:

  1. Otwórz Ustawienia → Automatyzacje i sceny → Utwórz automatyzację.
  2. Dodaj wyzwalacz Zdarzenie.
  3. Typ zdarzenia: esp_rc01_pilot_1_button.
  4. W danych zdarzenia wybierz przycisk, np.:

    button: "on"
    
  5. Dodaj dowolną akcję z GUI: aktywację sceny, uruchomienie skryptu, naciśnięcie przycisku slotu albo sterowanie zwykłą encją.
  6. Zapisz i przetestuj.

Zdarzenie pilota zawiera również sequence, button_code, battery, remote_mac i receiver. Dodatkowe przykłady są w home-assistant/automation_examples.yaml.

Sposób zapisu sygnałów

Ograniczenia

Rozwiązywanie problemów

Strona ładuje się częściowo albo urządzenie znika z sieci

Timeout nauki RF

Kod jest poprawnie odbierany, ale urządzenie nie reaguje

Akcji nie widać w HA

Rozwój lokalnych stron WWW

Plik esphome/ar01v3_web_v3.js jest osadzany bezpośrednio przez ESPHome za pomocą js_include. Po jego zmianie nie trzeba uruchamiać osobnego generatora.

Po zmianie esphome/components/flipper_importer/flipper_page.html należy odtworzyć skompresowany nagłówek:

python3 scripts/generate_flipper_page.py

Po zmianie esphome/components/nightmatiq_mesh/nightmatiq_page.html należy odtworzyć jego skompresowany nagłówek:

python3 scripts/generate_nightmatiq_page.py

Następnie trzeba uruchomić scripts/00_self_test.sh. Wygenerowanych nagłówków nie należy edytować ręcznie.

Powiązany projekt

Ta sama funkcjonalność Steinel NightmatIQ Plus jest również dostępna w dedykowanym projekcie Bramka Steinel NightmatIQ Plus dla ESP32-C3. Wybierz tamten projekt dla małej, samodzielnej instalacji ESP32-C3 bez funkcji RF/IR AR01V3 i pilotów ESP-RC01; wybierz to repozytorium, jeśli NightmatIQ ma być opcjonalną integracją w wielofunkcyjnej bramce AR01V3.

Autor, licencja i bezpieczeństwo

Część konfiguracji sprzętowej i komponentu pamięci pochodzi z publicznego repozytorium konfiguracji ESPHome firmy Athom. Athom zachowuje prawa do swojej oryginalnej pracy. Dodatki specyficzne dla tego projektu są udostępniane na licencji GPL-3.0-only, a szczegółowe informacje o pochodzeniu i statusie elementów zewnętrznych znajdują się w THIRD_PARTY_NOTICES.md.

Jest to niezależny projekt społecznościowy, a nie oficjalny produkt Athom, ESPHome, Home Assistant ani Flipper Devices.