LSC smart plug 2578685
Warning
The latest LSC smart plug 2578685 devices use the Tuya BK7231N module, which is not compatible with ESPHome!
Notice
- This smart plug is flashable using the latest tuya-cloudcutter with a compiled ESPHome binary. I recommend following this Youtube Video.
- There is a version with BK7231N and a version with BK7231T. Both should work but you need to make sure to use the right version. I recommend to use the the configuration gererated by ltchiptool and esphome-kickstart as shown in the video instead of this configuration, because it might change.
- The second configuration is the version that worked for me (Version 1.1.8 in the App and with BK7231N)
Product Images
 

GPIO Pinout
Pinout for Version with BK7231T
| Pin | Function | 
|---|---|
| P7 | Switch button | 
| P26 | Blue LED | 
| P6 | Red LED | 
| P8 | Relay | 
Pinout for Version with BK7231N (Relay and LED Swapped)
| Pin | Function | 
|---|---|
| P7 | Switch button | 
| P26 | Blue LED | 
| P8 | Red LED | 
| P6 | Relay | 
Basic configuration
Version for BK7231T:
substitutions:
  name: lsc-switch-01
  friendly_name: lsc-switch-01
esphome:
  name: ${name}
  friendly_name: ${friendly_name}
libretuya:
  board: generic-bk7231t-qfn32-tuya
  framework:
    version: dev
# Enable logging
logger:
# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption_key
ota:
  password: !secret ota_password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot in case wifi connection fails
  ap:
    ssid: "Lsc-Switch-01 Fallback Hotspot"
    password: ""
#web_server:
#  port: 80
sensor:
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 60s
  - platform: uptime
    name: Uptime Sensor
    id: uptime_sensor
    update_interval: 60s
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? to_string(days) + "d " : "") +
                (hours ? to_string(hours) + "h " : "") +
                (minutes ? to_string(minutes) + "m " : "") +
                (to_string(seconds) + "s")
              ).c_str();
text_sensor:
  - platform: template
    name: Uptime Human Readable
    id: uptime_human
    icon: mdi:clock-start
  - platform: wifi_info
    ip_address:
      name: IP Address
      entity_category: diagnostic
binary_sensor:
  - platform: status
    name: Status
    entity_category: diagnostic
  - platform: gpio
    pin:
      number: P7
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Power Button"
    on_press:
      - switch.toggle: relay
switch:
  - platform: gpio
    # RED
    id: led_1
    pin:
      number: P6
      inverted: false
  - platform: gpio
    # BLUE
    id: led_2
    pin:
      number: P26
      inverted: false
  - platform: gpio
    name: Switch
    pin: P8
    id: relay
    # Turn off red LED to show blue when turned on
    on_turn_on:
      - switch.turn_on: led_2
      - switch.turn_off: led_1
    # Turns on the red LED once the plug is turned off
    on_turn_off:
      - switch.turn_off: led_2
      - switch.turn_on: led_1
button:
  - platform: restart
    id: restart_button
    name: Restart
    entity_category: diagnostic
Version for BK7231N:
esphome:
  name: lsc-plug-1
bk72xx:
  board: generic-bk7231n-qfn32-tuya
logger:
web_server:
captive_portal:
api:
  encryption:
    key: !secret encryption_key
ota:
  password: !secret ota_password_new
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "lsc_plug_1 Hotspot"
    password: "12345678"
text_sensor:
  - platform: libretiny
    version:
      name: LibreTiny Version
status_led:
  pin: P26
binary_sensor:
  - platform: status
    name: lsc-plug-1_status
  - platform: gpio
    pin:
      number: P7
      mode: INPUT_PULLUP
      inverted: true
    name: lsc-plug-1_button
    internal: true
    on_press:
      - switch.toggle: relay
output:
  - platform: gpio
    id: relay_led
    pin: P8
switch:
  - platform: gpio
    id: relay
    name: lsc-plug-1_relay
    pin: P6
    on_turn_on:
      - output.turn_on: relay_led
    on_turn_off:
      - output.turn_off: relay_led