Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch
General Information
Deta 6914HA is a smart fan controller with light switch sold in Australia and New Zealand.
Series 1
Original version uses ESP8266 controller.
Series 2
Newer revision uses BK7231T controller on the Tuya WB3S module.
Series 3
revision uses BK7231N controller on the Tuya CB3S module
GPIO Pinout
ESP8266 Version
| GPIO # | Component |
|---|---|
| GPIO00 | Button2 |
| GPIO01 | None |
| GPIO02 | None |
| GPIO03 | LedLink |
| GPIO04 | Relay3 |
| GPIO05 | Button3 |
| GPIO09 | None |
| GPIO10 | None |
| GPIO12 | None |
| GPIO13 | Relay2 |
| GPIO14 | Relay1 |
| GPIO15 | Relay4 |
| GPIO16 | Button1 |
| FLAG | None |
BK72xx Version
| Pin # | Component |
|---|---|
| P14 | Button1 |
| P1 | Button2 |
| P8 | Button3 |
| P10 | Led |
| P26 | Light Relay |
| P6 | Fan Relay 1 |
| P7 | Fan Relay 2 |
| P9 | Fan Relay 3 |
BK7231N Version
| Pin # | Component |
|---|---|
| P14 | Button1 |
| P20 | Button2 |
| P7 | Button3 |
| P10 | Led |
| P26 | Light Relay |
| P6 | Fan Relay 1 |
| P8 | Fan Relay 2 |
| P9 | Fan Relay 3 |
Getting it up and running
Series 1 - Tuya Convert
These switches are Tuya devices, so if you don't want to open them up to flash directly, you can attempt to use tuya-convert to initially get ESPHome onto them however recently purchased devices are no longer Tuya-Convert compatible. There's a useful guide to disassemble and serial flash similar switches on Mike McGuire's blog. After that, you can use ESPHome's OTA functionality to make any further changes.
- Put the switch into "smartconfig" / "autoconfig" / pairing mode by holding any button for about 5 seconds.
- The status LED (to the side of the button(s)) blinks rapidly to confirm that it has entered pairing mode.
Series 2 - 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 exposed screws.
- Remove the clear panel and the small PCB underneath.
Configuration Examples
Series 1 (ESP8266)
substitutions:
device_name: deta_fan_controller
friendly_name: "Deta Smart Fan Speed Controller"
##########################
esphome:
name: ${device_name}
esp8266:
board: esp01_1m
restore_from_flash: true
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
captive_portal:
sensor:
- platform: wifi_signal
name: ${friendly_name} Wifi Signal Strength
update_interval: 60s
- platform: uptime
name: ${friendly_name} Uptime
text_sensor:
- platform: wifi_info
ip_address:
name: ${friendly_name} IP
ssid:
name: ${friendly_name} SSID
bssid:
name: ${friendly_name} BSSID
mac_address:
name: ${friendly_name} Mac
logger:
api:
ota:
web_server:
port: 80
light:
- platform: binary
output: relay_light
id: light1
name: ${friendly_name} Light
status_led:
pin:
number: GPIO3
inverted: True
output:
- platform: gpio
id: relay_light
pin: GPIO14
- platform: template
id: fan_speed
type: float
write_action:
- then:
- if:
condition:
lambda: return ((state > 0) && (state < .4));
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_off: relay_fan_2
- delay: 20ms
- switch.turn_off: relay_fan_3
- if:
condition:
lambda: return ((state > .4) && (state < .7));
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_off: relay_fan_2
- delay: 20ms
- switch.turn_on: relay_fan_3
- if:
condition:
lambda: return (state > .7);
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_on: relay_fan_2
- delay: 20ms
- switch.turn_on: relay_fan_3
- if:
condition:
lambda: return (state < 0.01);
then:
- switch.turn_off: relay_fan_1
- delay: 20ms
- switch.turn_off: relay_fan_2
- delay: 20ms
- switch.turn_off: relay_fan_3
binary_sensor:
- platform: gpio
id: fan_light_sensor
pin:
number: GPIO16
mode: INPUT
inverted: True
on_press:
- light.toggle: light1
- platform: gpio
id: fan_power_sensor
pin:
number: GPIO00
mode: INPUT
inverted: True
on_press:
then:
- fan.toggle: fan_1
- platform: gpio
id: fan_speed_sensor
pin:
number: GPIO05
mode: INPUT
inverted: True
on_press:
then:
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 2
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 3
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_on: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 1
fan:
- platform: speed
id: fan_1
output: fan_speed
name: ${friendly_name} Fan Speed
speed_count: 3
switch:
- platform: restart
name: ${friendly_name} REBOOT
- platform: gpio
id: relay_fan_1
pin: GPIO13
- platform: gpio
id: relay_fan_2
pin: GPIO04
- platform: gpio
id: relay_fan_3
pin: GPIO15
- platform: template
id: update_fan_speed
optimistic: True
turn_on_action:
then:
- delay: 200ms
- if:
condition:
and:
- switch.is_off: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_off: fan_1
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 1
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 2
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_on: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 3
Series 2 (BK72xx)
substitutions:
devicename: "deta-switchfan"
friendlyname: Deta Switch Fan
deviceid: deta-switchfan
devicemodel: Deta Grid Connect 6914HA Series 2
#################################
esphome:
name: ${devicename}
bk72xx:
board: generic-bk7231t-qfn32-tuya
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
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
- platform: version
name: ${friendlyname} ESPHome Version
#################################
status_led:
pin:
number: P10
inverted: true
light:
- platform: binary
output: relay_light
id: light1
name: ${friendlyname} Light
output:
- platform: gpio
id: relay_light
pin: P26
- platform: template
id: fan_speed
type: float
write_action:
- then:
- if:
condition:
lambda: return ((state > 0) && (state < .4));
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_off: relay_fan_2
- delay: 20ms
- switch.turn_off: relay_fan_3
- if:
condition:
lambda: return ((state > .4) && (state < .7));
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_on: relay_fan_2
- delay: 20ms
- switch.turn_off: relay_fan_3
- if:
condition:
lambda: return (state > .7);
then:
- switch.turn_on: relay_fan_1
- delay: 20ms
- switch.turn_on: relay_fan_2
- delay: 20ms
- switch.turn_on: relay_fan_3
- if:
condition:
lambda: return (state < 0.01);
then:
- switch.turn_off: relay_fan_1
- delay: 20ms
- switch.turn_off: relay_fan_2
- delay: 20ms
- switch.turn_off: relay_fan_3
binary_sensor:
- platform: gpio
id: fan_light_sensor
pin:
number: P14
mode: INPUT
inverted: True
on_press:
- light.toggle: light1
- platform: gpio
id: fan_power_sensor
pin:
number: P1
mode: INPUT
inverted: True
on_press:
then:
- fan.toggle: fan_1
- platform: gpio
id: fan_speed_sensor
pin:
number: P8
mode: INPUT
inverted: True
on_press:
then:
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 2
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 3
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_on: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 1
fan:
- platform: speed
id: fan_1
output: fan_speed
name: ${friendlyname} Fan Speed
speed_count: 3
switch:
- platform: gpio
id: relay_fan_1
pin: P6
- platform: gpio
id: relay_fan_2
pin: P7
- platform: gpio
id: relay_fan_3
pin: P9
- platform: template
id: update_fan_speed
optimistic: True
turn_on_action:
then:
- delay: 200ms
- if:
condition:
and:
- switch.is_off: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_off: fan_1
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_off: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 1
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_off: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 2
- if:
condition:
and:
- switch.is_on: relay_fan_1
- switch.is_on: relay_fan_2
- switch.is_on: relay_fan_3
then:
- fan.turn_on:
id: fan_1
speed: 3