Od kilku lat na Elektrodzie rozwijane jest uniwersalne, otwarte oprogramowanie przeznaczone dla różnego rodzaju urządzeń automatyki budynkowej sterowanych przez Wi-Fi, takich jak przekaźniki, kontrolery lamp LED i pasków LED (w tym WS2812), termostaty, mierniki energii, czy tam czujniki temperatury, wilgotności, ruchu. Wraz z firmware tworzona jest lista wspieranych urządzeń oraz bogata dokumentacja ich wnętrze. Tutaj pokażę stan tego projektu na 2025.12.31.
Po co zmieniać firmware?
Zastanówmy się teraz jaki jest ogólny cel tego projektu. Po co zmieniać firmware, skoro produkty przychodzą już z oprogramowaniem producenta? Czy jest sens kombinować? Motywacje mogą być różne, poniżej wymieniam powody w losowej kolejności:
- rozszerzenie funkcjonalności - po zmianie firmware można dowolnie dodawać czujniki, skrypty, mechanizmy. Mamy wtedy pełną kontrolę nad GPIO, można do każdego włącznika światła dodać czujnik temperatury, itd, czy tam nawet odbiornik IR, co kto woli
- uwolnienie od chmury i potencjalnej inwigilacji - przeprogramowane urządzenie działa 100% lokalnie i nie raportuje nigdzie danych
- bezpieczeństwo na wypadek problemów u producenta - wiele urządzeń jest uzależnionych od chmury, więc jak u dostawcy pójdzie coś nie tak, możemy skończyć z bezużytecznym sprzętem. Znane są też już sytuacje, że dostawca po fakcie wprowadził płatną subskrypcję...
- połączenie z różnymi ekosystemami i Home Assistant - nie każde urządzenie można łatwo połączyć z HA lub jest to ograniczone, OBK wspiera HA bez limitów
- użycie urządzenia jako platformy DIY w stylu Arduino - po zmianie firmware można realizować dowolny projekt na wspieranym układzie Wi-Fi
- oszczędzanie energii i przedłużenie życia produktu - np. w przypadku lamp LED (prezentacja)
Repozytorium i nazwa projektu
Projekt został zapoczątkowany jako firmware dla układów BK7231 i ochrzczony jako OpenBeken/OBK. Na ten moment nazwa została, ale całość jest wieloplatformową aplikacją wspierającą około 32 platformy.
Wspierane platformy na 2025.12.31
Oto stan wsparcia platform na 2025.12.31. Po najnowszą wersję, zobacz na GitHub.
Liczenia platform dokonałem wedle kryterium osobnych plików binarnych. To oznacza, że np. W800 / W801 jest liczony jako jedna platforma, bo ma wspólny wsad, a ESP32 jest liczony jako kilka platform, bo są osobne wersje C3, C6, itd.
| Platforma | Rodzina | WPA3 | OTA | GPIO | Przerwanie GPIO | UART | PWM | ADC | Głęboki sen | WDT | SPI LED | IR | BK7231T | Beken | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅¹² | ✅ | BK7231N | Beken | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | BK7231S / BK7231U | Beken | ✅ | ✅¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | BK7238 | Beken | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | BK7252 | Beken | ✅ | ⚠️¹'¹⁴ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | BK7252N | Beken | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | XR809 | XRadio | ❌ | ❌⁵ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ | XR806 | XRadio | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ | XR872 / XF16 | XRadio | ✅ | ✅² | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ | BL602 / LF686 | Bouffalo Lab | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | W800 / W801 | Winner Micro | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | W600 / W601 | Winner Micro | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | LN882H | Lightning Semi | ✅ | ✅⁴ | ✅ | ✅ | ❌ | ✅ | ❗️ | ❌ | ✅ | ✅ | ✅ | ESP8266 / ESP8285 | Espressif | ⚠️¹³ | ✅²'⁴ | ✅ | ✅ | ✅ | ✅⁷ | ❌ | ❗️ | ❓⁹ | ❌ | ❌ | ESP32 / C2 / C3 / C5 / C6 / C61 / S2 / S3 | Espressif | ⚠️¹³ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❓ | ✅¹⁰ | ✅ | ✅ | ❌ | TR6260 | Transa Semi | ❌ | ❗️³'⁴ | ✅ | ✅ | ❌ | ✅⁸ | ❌ | ❌ | ✅⁹ | ❌ | ❌ | RTL8711AM (Ameba1) | Realtek | ❗️ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ❌ | RTL8710B (AmebaZ) | Realtek | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ❌ | RTL8710C / RTL8720C (AmebaZ2) | Realtek | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ➖ | ❌ | ✅ | ✅ | ✅ | RTL8720D / RTL872xCSM / RTL8720CS (AmebaCS) | Realtek | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ❗️ | RTL8721DA / RTL8711DAF (AmebaDplus) | Realtek | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❗️ | RTL8720E / RTL8710ECF (AmebaLite) | Realtek | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❗️ | ECR6600 | ESWIN | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ❗️ | ❗️¹¹ | ✅ | ❌ | ❌ | TXW81X | Taixin | ❌ | ❗️ | ✅ | ❓ | ❌ | ❌ | ❌ | ❌ | ❓ | ❌ | ❌ | RDA5981 | RDA | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ➖ | ❌ |
Cytat:✅ - Działa
❓ - Nie testowano
❌ - Niezaimplementowane
❗️ - Uszkodzone / nie działa
⚠️ - Ostrzeżenie
➖ - Nie dotyczy
Cytat:¹ Sukces zależny od układu partycji ustawionego w bootloaderze. Firmware SPI flash QIO wymagany dla pewnego OTA
² Z wyłączeniem wariantu 1 MB
³ Zaimplementowane, ale brak narzędzia do generowania pliku
⁴ Brak OTA HTTP, tylko przez aplikację webową
⁵ Próba OTA powoduje zawieszenie urządzenia
⁶ OTA w aplikacji webowej jest uszkodzone, użyj OTA HTTP
⁷ Programowy PWM – możliwe migotanie
⁸ Uwaga na przypisanie pinów – niektóre kanały PWM się nakładają
⁹ WDT skonfigurowany w SDK
¹⁰ Tylko uśpienie czasowe, brak wybudzania przez GPIO
¹¹ Po wybudzeniu urządzenie nie łączy się z Wi-Fi aż do ponownego odłączenia zasilania
¹² Tylko w buildach _ALT
¹³ Musi być włączone ręcznie (CONFIG_ESP8266_WIFI_ENABLE_WPA3_SAE / CONFIG_ESP_WIFI_ENABLE_WPA3_SAE = y w sdkconfig.defaults)
¹⁴ OTA na Tuya BK7252 nie jest wspierane (stockowy bootloader nic nie robi, customowy nie szyfruje partycji main – brick)
Jak wgrywany jest wsad?
Wsad wgrywamy przez UART, potrzebny jest konwerter USB na UART. Mamy do tego własny flasher:
https://github.com/openshwprojects/BK7231GUIFlashTool
Po wgraniu łączymy urządzenie z naszym Wi-Fi i konfigurujemy GPIO. Nasz Flasher często umie automatycznie wykryć GPIO - nie trzeba zgadywać, nie ma tego problemu co w Tasmota.
A nawet jeśli by trzeba zgadywać - to i tak mamy ułatwiające to narzędzie:
GPIODoctor w OpenBeken - wygodny sposób na poznanie ról GPIO w urządzeniu IoT [EN]
GPIODoctor w OpenBeken - wygodny sposób na poznanie ról GPIO w urządzeniu IoT [PL]
Kompilacje online i automatyczne OTA
Projekt można skompilować w pełni online. Używane jest to nawet przy normalnym rozwoju firmware. Toolchain na lokalnym komputerze jest zbędny.
Więcej informacji:
System online builds OpenBeken - kompilacja firmware dla wszystkich platform na Github [EN]
System online builds OpenBeken - kompilacja firmware dla wszystkich platform na Github [PL]
Dodatkowo mamy narzędzie, które z każdą kompilacją sama pobiera i aktualizuje firmware na docelowych urzadzeniach:
Jak programowo uzyskiwać dostęp do pull requestów, commitów i pobierać artefakty z Githuba?[EN]
Jak programowo uzyskiwać dostęp do pull requestów, commitów i pobierać artefakty z Githuba? [PL]
https://github.com/openshwprojects/OBKotaTool
Symulator na Windows i automatyczne testy
Kolejną cechą wyróżniającą ten projekt jest Symulator OBK na Windows/Linux. Jest to implementacja HAL dla tych platform połączona z edytorem wizualnym schematów.
Symulator urządzeń OpenBeken IoT - pierwsza wczesna wersja alfa do testów [EN]
Symulator urządzeń OpenBeken IoT - pierwsza wczesna wersja alfa do testów [PL]
Pozwala to testować zaawansowane układy bezpośrednio na komputerze. Wszystko co potrzebne jest wspierane - nawet parowanie z Home Assistant, więc można podłączyć wirtualne urządzenie przez MQTT.
Drugą oczywistą konsekwencją portu na Windows jest możliwość łatwego użycia automatycznych testów:
Automatyczne testy OpenBeken na platformie Windows oraz na docelowych platformach [EN]
Automatyczne testy OpenBeken na platformie Windows oraz na docelowych platformach [PL]
Odpalane są one na GitHub przy każdej kompilacji. Jeśli testy wykryją problem, to commit oznaczany jest jako błędny.
Lista urządzeń
Dodatkowo społeczność OBK utrzymuje listę urządzeń. Większość z nich jest wspierana bądź w trakcie rozwoju, choć ostatnio umieszczam tam również urządzenia Zigbee - tylko informacyjnie.
https://openbekeniot.github.io/webapp/devicesList.html
Urządzenia można grupować wedle platform oraz wedle typu opisu (szablon GPIO lub pełny artykuł).
Na 2025.12.31 mamy tam 817 urządzeń.
Skrypty Berry
OBK można skryptować Berry - oczywiście też działa to w Symulatorze, więc można testować bez docelowego urządzenia. Informacje:
Skrypty Berry dla różnych platform IoT - samouczek skryptowania OBK, część 1 [EN]
Skrypty Berry dla różnych platform IoT - samouczek skryptowania OBK, część 1 [PL]
Moduł Wi-Fi jako hosting
OBK posiada integracje LFS i może hostować pliki. Obecny jest również interfejs REST, więc można zrobić własny panel w HTML i Javascript:
OpenBeken jako mini hosting HTTP - pisanie stron w Javascript, REST API Tasmota itd [EN]
OpenBeken jako mini hosting HTTP - pisanie stron w Javascript, REST API Tasmota itd [PL]
LFS wspiera kompresję GZIP dla plików pobieranych przez przeglądarkę - można zmieścić naprawdę dużo tekstu, który się dobrze kompresuje:
Wydajny hosting prostej strony HTML na mikrokontrolerze - kompresja GZip w HTTP [EN]
Wydajny hosting prostej strony HTML na mikrokontrolerze - kompresja GZip w HTTP [PL]
Wspierane sterowniki
Oto niekompletna lista wspieranych sterowników. Wiele z nich obsługuje po kilka urządzeń tego typu, więc nawet jeśli czegoś na liście nie ma, to i tak może być wspierane.
TuyaMCU (zwykły i zasilany bateryjnie) GirierMCU, TCA9554, DMX, PIR, PixelAnim (animacje WS2812), Drawers, HGS02, PinMutex, GosundSW2, TCL (klimatyzacja), OpenWeatherMap, Widget (kontrolki HTML), Charts (wykresy), NTP, DS3231, HTTPButtons, SimpleEEPROM, MultiPinI2CScanner, I2C, RN8209, BL0942, PWMG, BL0942SPI, HLW8112SPI, ChargingLimit, BL0937, CSE7761, CSE7766, MAX6675, MAX31855, PT6523, TextScroller, SM16703P, SM15155E, IR (podczerwień), RC (radio), IR2, DDPSend, DDP, SSDP, DGR, Wemo, Hue, PWMToggler, DoorSensor, ADCButton, MAX72XX_Clock, SM2135, BP5758D, BP1658CJ, SM2235, BMP280, MAX72XX, BMPI2C, CHT83XX, MCP9808, KP18058, ADCSmoother, SHT3X, SGP, ShiftRegister, AHT2X, DS1820, DS1820_FULL, HT16K33, TM1637, GN6932, TM1638, HD2015, Battery, Bridge, UartTCP, TXWCAM, DHT11, DHT12, DHT21, DHT22, Shutters (zasłony).
Stan na 2025.12.31, więcej zostanie dodane wkrótce!
Dodatkowe materiały
Dokumentacja OBK jest dostępna w naszym repozytorium:
https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/README.md
Przykładowo, tu jest lista sterowników:
https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/drivers.md
Dużo luźnych materiałów na temat OBK jest w naszym dziale poradnikowym:
https://www.elektroda.pl/rtvforum/forum517.html
Część materiałów jest w formie filmów - np. na YouTube:
https://www.youtube.com/@elektrodacom
Podsumowanie
Pokazany firmware jest w pełni open source, darmowy, i wspiera na ten moment 32 platformy. Wgrywa się go przez UART, choć szczegółowe instrukcje zależą od danej platformy. Pozwala to uwolnić dane urządzenie od chmury, dowolnie skryptować i programować, oraz połączyć z Home Assistant.
Firmware posiada wiele sterowników (czujniki, protokoły komunikacji, kontrolery LED, itd) oraz integracji (DDP, DMX, grupy Tasmota Device Groups).
Dodatkowo całość ma liczne udogodnienia ułatwiające rozwój i testowanie, takie jak testy i kompilacje online, symulator na Windows, czy tam narzędzia do automatycznego OTA z danego PR (pull request - propozycji zmian) na GitHubie.
Jeśli chcecie wesprzeć projekt, to zapraszam do:
https://paypal.me/openshwprojects
Czy macie sugestie, jakie ciekawe czujniki bądź peryferia można jeszcze obsługiwać i wspierać? A może znacie jakieś inne przydatne platformy?
Specjalne podziękowania dla @insmod, @divadiow , @DeDaMrAz , @max4elektroda za ogromny wkład w rozwój projektu!
Fajne? Ranking DIY Pomogłem? Kup mi kawę.