Układy Beken BK72xx z ESPHome do tej pory nie potrafiły odczytać żadnego czujnika I2C. Zmiana #21586 autorstwa Korkuttum, scalona z gałęzią rozwojową ESPHome 26 października 2026, dodaje dla platformy bk72xx programową magistralę I2C. Trafi do wydania ESPHome 2026.11.
Skąd brak I2C
ESPHome działa na układach Beken dzięki LibreTiny, a LibreTiny nie ma dla nich implementacji Wire. Ogólna magistrala I2C dla Arduino w ESPHome nigdy nie była budowana dla LibreTiny, więc komponent i2c po prostu nie obsługiwał bk72xx. Na tych układach żaden czujnik I2C nie wchodził w grę.
Opis zmiany podaje typowy przykład: piloty podczerwieni Tuya z wbudowanym czujnikiem temperatury i wilgotności, oparte na module CBU z układem BK7231N. Czujnik jest na płytce, ale ESPHome nie miał jak go odczytać.
Jak działa nowa magistrala
Nowy SoftwareI2CBus to programowy kontroler I2C, który steruje liniami bezpośrednio z procesora:
- linie
sdaisclmożna przypisać do dowolnych dwóch pinów GPIO, ale nie ma domyślnych pinów, więc oba trzeba podać; - linię zwalnia się, przełączając pin na wejście z podciąganiem, a ściąga w dół, ustawiając go jako wyjście, co naśladuje wyjście z otwartym drenem;
- obsługuje powtórzony start, potwierdzenia ACK i NACK oraz rozciąganie zegara przez urządzenie z opcją
timeout(domyślnie 1 ms); - działa skanowanie magistrali (
scan), a przy starcie magistrala wykonuje procedurę odblokowania, która podaje impulsy zegara, gdy jakieś urządzenie trzyma linię SDA w stanie niskim; - częstotliwość można ustawić, a domyślnie na
bk72xxwynosi 100 kHz.
Istniejące komponenty czujników I2C działają na niej bez zmian. Autor sprawdził komponent hdc1080 na płytce z BK7231N i czujnikiem CHT8305, który ma te same rejestry co HDC1080. Skanowanie znalazło urządzenie pod adresem 0x40, a temperatura i wilgotność były odczytywane poprawnie.
Minimalna konfiguracja z opisu zmiany wygląda tak:
bk72xx:
board: cbu
i2c:
sda: P6
scl: P26
scan: true
sensor:
- platform: hdc1080
temperature:
name: "Temperature"
humidity:
name: "Humidity"
Ograniczenia
Autor wymienia dwa. Każda transmisja blokuje główną pętlę ESPHome na cały czas jej trwania, a rzeczywista częstotliwość zegara jest niższa od ustawionej, bo część czasu zajmuje sam program. Przy czujniku temperatury odczytywanym co kilka sekund nie ma to większego znaczenia, ale szybka magistrala z wieloma urządzeniami to nie jest zastosowanie, z myślą o którym ją napisano.
Włączono ją tylko dla BK72xx. Układy RTL87xx i LN882x, które też korzystają z LibreTiny, pominięto, bo autor nie miał sprzętu, żeby je przetestować.
Przed wgraniem oprogramowania
Trzeba sprawdzić, na których pinach jest czujnik na danej płytce, bo nie ma domyślnych wartości. Dokumentacja nowej magistrali czeka w osobnej zmianie w esphome.io, #7900. Funkcja przyjdzie z ESPHome 2026.11, w 2026.10 jej nie ma.