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 sda i scl moż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 bk72xx wynosi 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.