prefixkit Ask an engineerAsk Support RU

ESPHome devices

Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch: ESPHome

Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch (wall switches, BK72XX): GPIO pinout and a starter ESPHome config with relays, buttons, LED. Local Home Assistant control with no cloud.

Type
Wall switches
Chip
BK72XX
Region standard
AU

Pinout

PinFunction
GPIO0Button2
GPIO1None
GPIO2None
GPIO3LedLink
GPIO4Relay3
GPIO5Button3
GPIO9None
GPIO10None
GPIO12None
GPIO13Relay2
GPIO14Relay1
GPIO15Relay4
GPIO16Button1
P14Button1
P1Button2
P8Button3
P10Led
P26Light Relay
P6Fan Relay 1
P7Fan Relay 2
P9Fan Relay 3
P14Button1
P20Button2
P7Button3
P10Led
P26Light Relay
P6Fan Relay 1
P8Fan Relay 2
P9Fan Relay 3

Find it in shops: AliExpress

Links open a search in the shop; some are affiliate links: buying through them costs you nothing extra and supports this site. We do not sell devices or get them from manufacturers.

Starter ESPHome config

Built from the pinout above. Keys and the Wi-Fi password come from secrets.yaml in ESPHome. Check the pins against your hardware revision before flashing: one model can ship with different boards.

substitutions:
  name: deta-grid-connect-smart-

esphome:
  name: ${name}
  friendly_name: "Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch"

bk72xx:
  board: generic-bk7231n-qfn32-tuya  # BK7231T or BK7231N: check the chip marking

logger:
api:
  encryption:
    key: !secret api_key
ota:
  - platform: esphome
    password: !secret ota_password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap: {}
captive_portal:

switch:
  - platform: gpio
    pin: GPIO4
    id: relay1
    name: "Relay 1"  # Relay3
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO13
    id: relay2
    name: "Relay 2"  # Relay2
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO14
    id: relay3
    name: "Relay 3"  # Relay1
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: GPIO15
    id: relay4
    name: "Relay 4"  # Relay4
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P26
    id: relay5
    name: "Relay 5"  # Light Relay
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P6
    id: relay6
    name: "Relay 6"  # Fan Relay 1
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P7
    id: relay7
    name: "Relay 7"  # Fan Relay 2
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P9
    id: relay8
    name: "Relay 8"  # Fan Relay 3
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P26
    id: relay9
    name: "Relay 9"  # Light Relay
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P6
    id: relay10
    name: "Relay 10"  # Fan Relay 1
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P8
    id: relay11
    name: "Relay 11"  # Fan Relay 2
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    pin: P9
    id: relay12
    name: "Relay 12"  # Fan Relay 3
    restore_mode: RESTORE_DEFAULT_OFF

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 1"  # Button2
    on_press:
      - switch.toggle: relay1
  - platform: gpio
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 2"  # Button3
    on_press:
      - switch.toggle: relay2
  - platform: gpio
    pin:
      number: GPIO16
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 3"  # Button1
    on_press:
      - switch.toggle: relay3
  - platform: gpio
    pin:
      number: P14
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 4"  # Button1
    on_press:
      - switch.toggle: relay4
  - platform: gpio
    pin:
      number: P1
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 5"  # Button2
    on_press:
      - switch.toggle: relay5
  - platform: gpio
    pin:
      number: P8
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 6"  # Button3
    on_press:
      - switch.toggle: relay6
  - platform: gpio
    pin:
      number: P14
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 7"  # Button1
    on_press:
      - switch.toggle: relay7
  - platform: gpio
    pin:
      number: P20
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 8"  # Button2
    on_press:
      - switch.toggle: relay8
  - platform: gpio
    pin:
      number: P7
      mode: INPUT_PULLUP
      inverted: true
    name: "Button 9"  # Button3
    on_press:
      - switch.toggle: relay9

status_led:
  pin:
    number: GPIO3
    inverted: false  # LedLink

# Other pins from the pinout:
#   P10: Led
#   P10: Led
#   GPIO1: None
#   GPIO2: None
#   GPIO9: None
#   GPIO10: None
#   GPIO12: None

How to flash

  • Most devices are flashed over UART: a 3.3 V USB-TTL adapter to RX, TX, GND and 3V3, holding GPIO0 to ground at power-on (ESP8266/ESP32). Mains power disconnected.
  • Beken (BK72xx) and Realtek chips are flashed with ltchiptool, or with cloudcutter without opening the case if the firmware allows it.
  • Details and board photos: the device page in the ESPHome database.

A config from scratch: ESPHome generator. Which pins are safe: pinout.

Similar devices

Idea?