OpenBK7231T/OpenBeken is a Tasmota/Esphome replacement for new Tuya modules featuring MQTT and Home Assistant compatibility. This repository is named "OpenBK7231T_App", but now it's a multiplatform app, supporting build for multiple separate chips:
- BK7231T (WB3S, WB2S, WB2L, etc)
- BK7231N (CB2S, CB2L, WB2L_M1, etc)
- T34 (T34 is based on BK7231N)
- BL2028N (BL2028N is a Belon version of BK7231N)
- XR809 (XR3, etc)
- BL602 (SM-028_V1.3 etc)
- W800 (W800-C400, WinnerMicro WiFi & Bluetooth), W801
- W600 (WinnerMicro chip), W601 (WIS600, ESP-01W, TW-02, TW-03, etc)
Please use automatically compiled binaries from the Releases tab. To build yourself for a given platform, just checkout first our version of SDK and then checkout this app repository into it, details later.
See our guides in Russian: BK7231N/T34, and BL602 RGB, and Youtube guide for BK7231/T34
If you want to get some generic information about BK7231 modules, pinout, peripherals, consult our docs topic.
Supported Devices/Templates List (Get 🏆free SD Card🏆 for submitting new one!)
We have our own interactive devices database that is maintained by users. The database is also accessible from inside our firmware (but requires internet connection to fetch). Have a not listed device? HELP US, submit a teardown here and 🏆get free SD card and gadgets set🏆 ! Thanks to cooperation with Elektroda.com, if you submit a detailed teardown/article/review, we can send you this set of gadgets for free (🚚shipping with normal letter🚚). NOTE: Obviously almost any device with supported chip (BK7231, BL602, W600, etc is potentially supported and it's not possible to list all available devices in the market, so feel free to try even if your device is not listed - we are here to help and guide you step by step!)
OpenBeken features:
- Tasmota-like setup, configuration and experience on all supported platforms (supports common Tasmota JSON over http and MQTT, etc)
- OTA firmware upgrade system (for BK, W*00, BL602); to use OTA, drag and drop proper OTA file on OTA field on new Web App Javascript Console
- Online builds for all platforms via Github, also supports Docker builds
- MQTT compatibility with Home Assistant (with both Yaml generator and HA Discovery)
- Support for multiple relays, buttons, leds, inputs and PWMs, everything fully scriptable
- Driver system for custom peripherals, including TuyaMCU, I2C bus and BL0942, BL0937 power metering chips, Motor Driver Bridge.
- Supports multiple I2C devices, like TC74 temperature sensor, MCP23017 port expander, PCF8574T LCD 2x16 (or other?), etc
- NTP time from network (can be used with TH06 and other TuyaMCU devices), can run any script on selected weekday hour:minute:second
- basic support for TuyaMCU Battery Powered devices protocol (TuyaMCU enables WiFi module only to report the state, eg. for door sensors, water sensors)
- RGBCW LED lighting control compatible with Home Assistant (both PWM LEDs, SM2135 LEDs and BP5758 LEDs)
- LittleFS integration for large files (you can write scripts there, you can host a page there with REST interface control of device)
- Command line system for starting and configuring drivers, for controlling channels, etc
- Short startup command (up to 512 characters) storage in flash config, so you can easily init your drivers (eg. BL0942) without LittleFS
- Advanced scripting and events system (allows you to mirror Tasmota rules, for example catch button click, double click, hold)
- Easily configurable via commands (see tutorial)
- Thanks to keeping Tasmota standard, OBK has basic compatibility with ioBroker and similiar systems through TELE/STAT/CMND MQTT packets, Tasmota Control app is also supported
- DDP lighting protocol support ("startDriver DDP" in autoexec.bat/short startup command), works with xLights
- Automatic reconnect when WiFi network goes out
- and much more
There is also a bit more outdated WIKI
OpenBeken supports online builds for all platforms (BK7231T, BK7231N, XR809, BL602, W800), but if you want to compile it yourself, see BUILDING.md
See FLASHING.md
Device is counting full boots (full boot is a boot after which device worked for 30 seconds). If you power off and on device multiple times, it will enter open access point mode and safe mode (safe mode means even pin systems are not initialized). Those modes are used to recover devices from bad configs and errors.
You can enable a simple TCP server in device Generic/Flags option, which will listen by default on port 100. Server can accept single connection at time from Putty in RAW mode (raw TCP connection) and accepts text commands for OpenBeken console. In future, we may add support for multiple connections at time. Server will close connection if client does nothing for some time.
There are some extra short commands for TCP console:
- GetChannel [index]
- GetReadings - returns voltage, current and power
- ShortName the commands above return a single ASCII string as a reply so it's easy to parse.
Some MQTT variables are being published only at the startup, some are published periodically (if you enable "broadcast every minute" flag), some are published only when a given value is changed. Below is the table of used publish topics (TODO: add full descriptions)
Hint: in HA, you can use MQTT wildcard to listen to publishes. OBK_DEV_NAME/#
Publishes send by OBK device:
Topic | Sample Value | Description |
---|---|---|
OBK_DEV_NAME/connected | "online" | Send on connect. |
OBK_DEV_NAME/sockets | "5" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/rssi | "-70" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/uptime | "653" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/freeheap | "95168" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/ip | "192.168.0.123" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/datetime | "" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/mac | "84:e3:42:65:d1:87 " | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/build | "Build on Nov 12 2022 12:39:44 version 1.0.0" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/host | "obk_t_fourRelays" | Send on connect and every minute (if enabled) |
OBK_DEV_NAME/voltage/get | "221" | voltage from BL0942/BL0937 etc |
OBK_DEV_NAME/led_enableAll/get | "1" | send when LED On/Off changes or when periodic broadcast is enabled |
OBK_DEV_NAME/led_basecolor_rgb/get | "FFAABB" | send when LED color changes or when periodic broadcast is enabled. |
OBK_DEV_NAME/led_dimmer/get | "100" | send when LED dimmer changes or when periodic broadcast is enabled |
Publishes received by OBK device:
Topic | Sample Value | Description |
---|---|---|
OBK_DEV_NAME/INDEX/set | "1" | Sets the channel of INDEX to given value. This can set relays and also provide DIRECT PWM access. If channel is mapped to TuyaMCU, TuyaMCU will also be updated |
todo | "100" | tooodo |
MQTT based integration with Home Assistant is possible in 2 ways from the Home Assistant configuration page (Config > Generate Home Assistant cfg
).
One can paste the generated yaml configuration into Home Assistant configuration manually.
Or add the devices automatically via discovery. To do click the Start Home Assistant Discovery
button which sends outs MQTT discovery messages, one for each entity (switch, light).
- The discovery topic should match the
discovery_prefix
defined in Home Assistant, the default value ishomeassistant
. - More details about Home Assistant discovery can be found here.
Note: Currently, discovery is only implemented for light and relay entities.
For technical insights and generic SDK information related to Beken, WinnerMicro, Bouffallo Lab and XRadio modules, please refer:
https://www.elektroda.com/rtvforum/topic3850712.html
https://www.elektroda.com/rtvforum/topic3866123.html
https://www.elektroda.com/rtvforum/topic3806769.html
If you want to support project, please donate at: https://www.paypal.com/paypalme/openshwprojects
Special thanks for Tasmota/Esphome/etc contributors for making a great reference for implementing Tuya module drivers