devices.esphome.io
DETA Grid Connect Smart Switch (Single 6911HA / Double 6912HA / Triple 6903HA / Quad 6904HA)
DETA Grid Connect Smart Switch (Single 6911HA / Double 6912HA / Triple 6903HA / Quad 6904HA)
Device Type: switchElectrical Standard: auBoard: bk72xx
General Notes
The DETA Smart Single Switch (6911HA) and Smart Double Switch (6912HA) are made by Arlec as part of the Grid Connect ecosystem, and are sold at Bunnings in Australia and New Zealand.
Series 1
Series 1 models could be OTA flashed using using tuya-convert.
Series 2
Recently purchased devices are using the Beken BK7231T microcontroller and can be OTA flashed using using Cloudcutter.
Triple 6903HA and Quad 6904HA The pin outs on the 3 & 4 gang switches are different to the 1 and 2 gang switches. Some 4 gang switches are on random Tuya firmware 1.1.5 and may need to use the “Lonsonho” brand “X804A 4 Gang Smart Wifi Switch” option in Cloudcutter, otherwise use the Deta single gang switch.
Getting it up and running
Cloudcutter
Cloudcutter is a tool designed to simplify the process of flashing Tuya-based devices. It allows you to bypass the need for physically opening the device and swapping out chips. By leveraging the cloud APIs, Cloudcutter enables you to flash the firmware remotely, making it a convenient and less intrusive option. Follow the instructions on the Cloudcutter GitHub repository to use this method for flashing your device.
Disassembly
If you can't or don't wish to use Cloudcutter, you can flash directly to the outlet with USB to serial adapter.
Overview
This guide covers the DETA Smart Switches, including the Single (6911HA) and Double (6912HA), which are part of the Grid Connect ecosystem. These switches are available at Bunnings stores in Australia and New Zealand.
Series Information
Series 1 - Flashing
- Flashing Method: OTA via tuya-convert
Series 2 - Flashing
- Microcontroller: Beken BK7231T
- Flashing Method: OTA via Cloudcutter
Note: The Triple 6903HA and Quad 6904HA models have different pinouts compared to the 1 and 2 gang switches.
Setup Guide
Using Cloudcutter
Cloudcutter is a tool designed to simplify the flashing process. Follow the official guide for instructions.
Manual Flashing
If you prefer to flash manually, you'll need a USB to serial adapter. Follow the disassembly steps below:
- Remove the front plastic face.
- Unscrew the two exposed screws.
- Remove the clear panel and the small PCB underneath.
Tip: You can convert these switches to ESPHome by replacing the WB3S chip with an ESP-12E or ESP-12F chip and adding a 10k pull-down resistor on GPIO15.
GPIO Pinouts
Tuya-Based Models
Pin | Function |
---|---|
GPIO4 | Status LED (inverted) |
GPIO12 | Button, Bottom |
GPIO13 | Relay, Top (includes LED) |
GPIO14 | Relay, Bottom (includes LED) |
GPIO16 | Button, Top |
Triple 6903HA
Pin | Function |
---|---|
GPIO16 | Button, Top |
GPIO04 | Button, Middle |
GPIO03 | Button, Bottom |
GPIO05 | Relay, Top (includes LED) |
GPIO14 | Relay, Middle (includes LED) |
GPIO12 | Relay, Bottom (includes LED) |
GPIO0 | Status LED (inverted) |
BK72XX-Based Models
Pin | Function |
---|---|
P6 | Relay, Left (includes LED) |
P9 | Status LED (inverted) |
P14 | Button, Left |
P24 | Button, Right |
P26 | Relay, Right (includes LED) |
Note: Each relay shares a pin with its associated LED.
Advanced Modifications
To gain individual control of button LEDs, remove specific diodes and solder a wire from the cathode side of the diode pad to a spare GPIO pin. See this example.
Configuration Examples
1 & 2 Gang Configuration for the BK72XX configurations
substitutions: devicename: "deta-double-gang" friendlyname: Deta Double Gang Switch friendlyname_left: Deta Double Gang - Left friendlyname_right: Deta Double Gang - Right deviceid: deta_double_gang deviceicon: "mdi:light-recessed" devicemodel: Deta Grid Connect Double Gang 6912HAMBK (Matte Black)
#################################esphome: name: ${devicename}
bk72xx: board: generic-bk7231t-qfn32-tuya
packages: device_base: !include { file: common/device_base.yaml, vars: { friendlyname : 'Deta Double Gang Switch'} }
#################################
## ---------------- #### Status LED #### ---------------- ##status_led: pin: number: P9 inverted: true
## ---------------- #### Relays #### ---------------- ##output: # Left Relay - platform: gpio id: relay_left pin: P6 # Right Relay - platform: gpio id: relay_right pin: P26
## ------------ #### Lights #### ------------ ##light: # Left Light - platform: binary name: ${friendlyname_left} icon: ${deviceicon} output: relay_left id: light_left
# Right Light - platform: binary name: ${friendlyname_right} icon: ${deviceicon} output: relay_right id: light_right internal: True
## ----------------- #### Buttons #### ----------------- ##binary_sensor: # Left Button - platform: gpio id: button_left pin: number: P14 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_left internal: True
# Right Button - platform: gpio id: button_right pin: number: P24 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_right internal: True
3 Gang Configuration for BK72XX (Series 2)
substitutions: devicename: "deta-triple-gang-switch" friendlyname: Deta Triple Gang Switch friendlyname_1: Light 1 friendlyname_2: Light 2 friendlyname_3: Light 3 deviceid: deta_triple_gang deviceicon: "mdi:light-recessed" devicemodel: Deta Grid Connect Triple Gang 6903HA Series 2
#################################esphome: name: ${devicename}
bk72xx: board: generic-bk7231t-qfn32-tuya
wifi: ssid: !secret wifi_ssid password: !secret wifi_password ap: ssid: "ESPHOME" password: "123456"
#################################
logger:
web_server:
captive_portal:
api:
ota:
sensor: - platform: wifi_signal name: ${friendlyname} Wifi Signal Strength update_interval: 60s - platform: uptime name: ${friendlyname} Uptime
text_sensor: - platform: wifi_info ip_address: name: ${friendlyname} IP ssid: name: ${friendlyname} SSID bssid: name: ${friendlyname} BSSID mac_address: name: ${friendlyname} Mac
## ---------------- #### Status LED #### ---------------- ##status_led: pin: number: P1 inverted: true
## ---------------- #### Relays #### ---------------- ##output: # Relay 1 - platform: gpio id: relay_1 pin: P8 # Relay 2 - platform: gpio id: relay_2 pin: P26 # Relay 3 - platform: gpio id: relay_3 pin: P24
## ------------ #### Lights #### ------------ ##light: # Light 1 - platform: binary name: ${friendlyname_1} icon: ${deviceicon} output: relay_1 id: light_1
# Light 2 - platform: binary name: ${friendlyname_2} icon: ${deviceicon} output: relay_2 id: light_2
# Light 3 - platform: binary name: ${friendlyname_3} icon: ${deviceicon} output: relay_3 id: light_3
## ----------------- #### Buttons #### ----------------- ##binary_sensor: # Button 1 - platform: gpio id: button_1 pin: number: P14 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_1 internal: True
# Button 2 - platform: gpio id: button_2 pin: number: P9 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_2 internal: True
# Button 3 - platform: gpio id: button_3 pin: number: P10 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_3 internal: True
3 Gang Configuration for ESP
substitutions: device_name: deta3gangswitch friendly_name: "3 Gang Switch" device_ip: 192.168.0.x
#################################
esphome: platform: ESP8266 board: esp01_1m name: ${device_name} esp8266_restore_from_flash: true
wifi: ssid: !secret wifi_ssid password: !secret wifi_password manual_ip: static_ip: ${device_ip} gateway: 192.168.0.1 subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "ESPHOME" password: "12345678"
api: encryption: key: !secret api_encryption_key
ota: password: !secret ota_password
logger:
# The web_server & sensor components can be removed without affecting core functionaility.web_server: port: 80
sensor: - platform: wifi_signal name: ${device_name} Wifi Signal Strength update_interval: 60s - platform: uptime name: ${device_name} Uptime
#################################
status_led: pin: number: GPIO0 inverted: True
output: # 1st button - platform: gpio pin: GPIO5 id: relay1
# 2nd button - platform: gpio pin: GPIO14 id: relay2
# 3rd button - platform: gpio pin: GPIO12 id: relay3
light: # 1st button - platform: binary name: "${friendly_name} 1st" output: relay1 id: light1
# 2nd button - platform: binary name: "${friendly_name} 2nd" output: relay2 id: light2
# 3rd button - platform: binary name: "${friendly_name} 3rd" output: relay3 id: light3
# Buttonsbinary_sensor: # 1st button - platform: gpio pin: number: GPIO16 mode: INPUT inverted: True name: "${friendly_name} 1st Button" #toggle relay on push on_press: - light.toggle: light1
# 2nd button - platform: gpio pin: number: GPIO4 mode: INPUT_PULLUP inverted: True name: "${friendly_name} 2nd Button" #toggle relay on push on_press: - light.toggle: light2
# 3rd button - platform: gpio pin: number: GPIO3 mode: INPUT_PULLUP inverted: True name: "${friendly_name} 3rd Button" #toggle relay on push on_press: - light.toggle: light3
switch: - platform: restart name: "${friendly_name} REBOOT"
4 Gang Configuration for BK72XX (Series 2)
substitutions: devicename: "deta-quad-gang-switch" friendlyname: Deta Quad Gang Switch friendlyname_1: Light 1 friendlyname_2: Light 2 friendlyname_3: Light 3 friendlyname_4: Light 4 deviceid: deta_quad_gang deviceicon: "mdi:light-recessed" devicemodel: Deta Grid Connect Quad Gang 6904HA Series 2
#################################esphome: name: ${devicename}
bk72xx: board: generic-bk7231t-qfn32-tuya
wifi: ssid: !secret wifi_ssid password: !secret wifi_password ap: ssid: "ESPHOME" password: "123456"
#################################
logger:
web_server:
captive_portal:
api:
ota:
sensor: - platform: wifi_signal name: ${friendlyname} Wifi Signal Strength update_interval: 60s - platform: uptime name: ${friendlyname} Uptime
text_sensor: - platform: wifi_info ip_address: name: ${friendlyname} IP ssid: name: ${friendlyname} SSID bssid: name: ${friendlyname} BSSID mac_address: name: ${friendlyname} Mac
## ---------------- #### Status LED #### ---------------- ##status_led: pin: number: P1 inverted: true
## ---------------- #### Relays #### ---------------- ##output: # Relay 1 - platform: gpio id: relay_1 pin: P8 # Relay 2 - platform: gpio id: relay_2 pin: P26 # Relay 3 - platform: gpio id: relay_3 pin: P7 # Relay 4 - platform: gpio id: relay_4 pin: P24
## ------------ #### Lights #### ------------ ##light: # Light 1 - platform: binary name: ${friendlyname_1} icon: ${deviceicon} output: relay_1 id: light_1
# Light 2 - platform: binary name: ${friendlyname_2} icon: ${deviceicon} output: relay_2 id: light_2
# Light 3 - platform: binary name: ${friendlyname_3} icon: ${deviceicon} output: relay_3 id: light_3
# Light 4 - platform: binary name: ${friendlyname_4} icon: ${deviceicon} output: relay_4 id: light_4
## ----------------- #### Buttons #### ----------------- ##binary_sensor: # Button 1 - platform: gpio id: button_1 pin: number: P14 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_1 internal: True
# Button 2 - platform: gpio id: button_2 pin: number: P9 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_2 internal: True
# Button 3 - platform: gpio id: button_3 pin: number: P6 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_3 internal: True
# Button 4 - platform: gpio id: button_4 pin: number: P10 inverted: true mode: INPUT_PULLUP on_press: then: - light.toggle: light_4 internal: True
4 Gang Configuration for ESP
Note: Not updated for BK72XX.
substitutions: device_name: deta4gangswitch friendly_name: "4 Gang Switch" device_ip: 192.168.0.x
#################################
esphome: platform: ESP8266 board: esp01_1m name: ${device_name} esp8266_restore_from_flash: true
wifi: ssid: !secret wifi_ssid password: !secret wifi_password manual_ip: static_ip: ${device_ip} gateway: 192.168.0.1 subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "ESPHOME" password: "12345678"
api: encryption: key: !secret api_encryption_key
ota: password: !secret ota_password
logger:
# The web_server & sensor components can be removed without affecting core functionaility.web_server: port: 80
sensor: - platform: wifi_signal name: ${device_name} Wifi Signal Strength update_interval: 60s - platform: uptime name: ${device_name} Uptime
#################################
status_led: pin: number: GPIO0 inverted: True
output: # 1st button - platform: gpio pin: GPIO5 id: relay1
# 2nd button - platform: gpio pin: GPIO14 id: relay2
# 3rd button - platform: gpio pin: GPIO12 id: relay3
# 4th button - platform: gpio pin: GPIO15 id: relay4
light: # 1st button - platform: binary name: "${friendly_name} 1st" output: relay1 id: light1
# 2nd button - platform: binary name: "${friendly_name} 2nd" output: relay2 id: light2
# 3rd button - platform: binary name: "${friendly_name} 3rd" output: relay3 id: light3
# 4th button - platform: binary name: "${friendly_name} 4th" output: relay4 id: light4
# Buttonsbinary_sensor: # 1st button - platform: gpio pin: number: GPIO16 mode: INPUT inverted: True name: "${friendly_name} 1st Button" #toggle relay on push on_press: - light.toggle: light1
# 2nd button - platform: gpio pin: number: GPIO4 mode: INPUT_PULLUP inverted: True name: "${friendly_name} 2nd Button" #toggle relay on push on_press: - light.toggle: light2
# 3rd button - platform: gpio pin: number: GPIO3 mode: INPUT_PULLUP inverted: True name: "${friendly_name} 3rd Button" #toggle relay on push on_press: - light.toggle: light3
# 4th button - platform: gpio pin: number: GPIO13 mode: INPUT_PULLUP inverted: True name: "${friendly_name} 4th Button" #toggle relay on push on_press: - light.toggle: light4
switch: - platform: restart name: "${friendly_name} REBOOT"