devices.esphome.io
Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch
Deta Grid Connect Smart Fan Speed Controller with Touch Light Switch
Device Type: switchElectrical Standard: auBoard: esp8266
GPIO Pinout
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 |
Getting it up and running
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 useful guide to disassemble and serial flash similar switches here. 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.
Basic Functionality with Status LED inverted and cycling up through speeds
substitutions: device_name: deta_fan_controller friendly_name: "Deta Smart Fan Speed Controller"
##########################
esphome: name: ${device_name} platform: ESP8266 board: esp01_1m esp8266_restore_from_flash: true
wifi: ssid: !secret iot_wifi_ssid password: !secret iot_wifi_pwd fast_connect: on
ap: ssid: ${device_name} Fallback password: ""
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