Link

Unbranded Smart Plug BSD01

This device did not have a serial number, brand name or FCC ID. Bought from AliExpress. The plugs I received did not respond to tuya-convert so a hard flash was necessary.

The plug uses a wifi module with ID ajw-02_8285. Not much online but enough to figure out the pin pads for a hard flash. A couple of users have gone before me and desoldered the module from the main board but I chose to solder DuPont cables to the pin pads and then use a pik tool to trigger flash mode via GPIO0. If I can figure out how to upload images here I’ll do that later.

The GPIO pinout was learned from Blakadder Tasmota documentation and adapted through trial and error.

  1. GPIO Pinout
  2. Basic Configuration

GPIO Pinout

Pin Function
GPIO1 Status LED - Red
GPIO12 Relay
GPIO13 Button (inverted)
GPIO14 Status LED - Blue (inverted)

Basic Configuration

# Type BSD01 plug (AliExpress x 5)
esphome:
  name: ${lower_devicename}
  platform: ESP8266
  board: esp01_1m

logger:

wifi:
  manual_ip:
    static_ip: ${static_ip}
    gateway: 192.168.10.1
    subnet: 255.255.255.0
    dns1: 192.168.10.1
    dns2: 0.0.0.0
  ap:
    ssid: Fallback-${lower_devicename}
    password: ""
    ap_timeout: 1min
  domain: .local
  reboot_timeout: 5min
  power_save_mode: NONE
  fast_connect: false
  output_power: 20.0
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
    priority: 0.0
  use_address: ${static_ip}

captive_portal:

api:
  password: !secret api_password
  port: 6053
  reboot_timeout: 15min

ota:
  password: !secret ota_password
  safe_mode: true
  port: 8266

binary_sensor:
- platform: status
  name: ${upper_short_devicename} Status
  device_class: connectivity
- platform: gpio
  id: button
  internal: true
  pin:
    number: 13
    mode: INPUT
    inverted: true
  on_press:
  - then:
    - switch.toggle:
        id: ${id_devicename}_relay
  name: button

switch:
- platform: gpio
  name: ${upper_short_devicename}
  id: ${id_devicename}_relay
  pin:
    number: 12
    mode: OUTPUT
    inverted: false
  on_turn_on:
  - then:
    - light.turn_off:
        id: status_led_red
        state: false
    - light.turn_on:
        id: status_led_blue
        state: true
  on_turn_off:
  - then:
    - light.turn_off:
        id: status_led_blue
        state: false
    - light.turn_on:
        id: status_led_red
        state: true
  restore_mode: RESTORE_DEFAULT_OFF
  interlock_wait_time: 0ms

- platform: restart
  name: ${upper_short_devicename} Restart
  
output:
- platform: gpio
  id: led_blue
  pin:
    number: 14
    inverted: false
    mode: OUTPUT

- platform: gpio
  id: led_red
  pin:
    number: 1
    inverted: false
    mode: OUTPUT

light:
- platform: binary
  name: Status LED Blue
  id: status_led_blue
  internal: true
  output: led_blue
  restore_mode: RESTORE_DEFAULT_OFF

- platform: binary
  name: Status LED Red
  id: status_led_red
  internal: true
  output: led_red
  restore_mode: RESTORE_DEFAULT_ON

sensor:
- platform: wifi_signal
  name: ${upper_short_devicename} Wifi Signal
  id: ${id_devicename}_wifi_signal
  update_interval: 15s
  force_update: false
  unit_of_measurement: dB
  icon: mdi:wifi
  accuracy_decimals: 0

text_sensor:
  - platform: wifi_info
    mac_address:
      name: ${upper_short_devicename} Mac Address
      icon: mdi:network