I didn’t see this posted anywhere online, but the SwitchBot led strip uses an ESP32-C3 just like their other devices (plug, lightbulb)
It is possible that the switchbot OTA process works to convert it to tasmota or ESPHome, but I didn’t do that. It also has the pins available for flashing. With ESPHome you can use the bluetooth proxy
The photo doesn’t show the pins, but they look like this
GND IO9 RX
VCC EN TX
(the pin spacing is smaller than normal)
In order to flash, simply connect IO9 to ground to start the bootloader.
here is my basic esphome configuration (does not include Bluetooth proxy, or mapping for the physical buttons yet)
esphome:
name: switchbotledstrip
friendly_name: switchbotledstrip
platformio_options:
board_build.mcu: esp32c3
board_build.variant: esp32c3
# added the line below to prevent bootloops when flashing modern bin via serial
board_build.flash_mode: dio
esp32:
variant: ESP32C3
board: esp32-c3-devkitm-1
framework:
type: esp-idf
sdkconfig_options:
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
- platform: esphome
password: "PASSWORD"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Switchbotled Fallback Hotspot"
password: "password"
# Individual outputs
output:
- platform: ledc
id: output_5
pin: 5
- platform: ledc
id: output_6
pin: 6
- platform: ledc
id: output_7
pin: 7
light:
- platform: rgb
restore_mode: RESTORE_DEFAULT_OFF
name: LEDSTRIP
red: output_6
green: output_5
blue: output_7
captive_portal: