ESPHome-Devices

Treatlife esp01_1m 2/3-Way Wall-Switch

Treatlife esp01_1m 2/3-Way Wall-Switch

Notes

GPIO Pinout

2-Way Version

PinFunction
GPIO04White LED (Power Sensor)
GPIO5Status LED
GPIO12Relay 1
GPIO13Button 1

3-Way Version

PinFunction
GPIO04White LED
GPIO5Status LED
GPIO12Relay 1
GPIO13Button 1
GPIO14Power Sensor

Basic Configuration (2-Way)

substitutions:
device_name: light_switch #change
friendly_name: Light Switch #change
icon: "mdi:light-switch"
esphome:
name: ${device_name}
platform: ESP8266
board: esp01_1m
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
ap:
ssid: ${device_name}
password: !secret esphome_ap_password
logger:
api:
password: !secret esphome_api_password
ota:
password: !secret esphome_ota_password
status_led:
pin:
number: GPIO5 # Red LED
inverted: True
binary_sensor:
- platform: gpio
pin:
number: GPIO4
inverted: True
id: sensor
internal: True
- platform: gpio
pin:
number: GPIO13
inverted: True
id: button
name: ${friendly_name} Button
on_press:
- switch.toggle: ${device_name}
internal: True
light:
- platform: binary
id: white_led
output: led_1
restore_mode: RESTORE_DEFAULT_ON
internal: True
output:
- platform: gpio
id: led_1
pin:
number: GPIO4
inverted: True
switch:
- platform: gpio
id: relay
pin:
number: GPIO12
restore_mode: RESTORE_DEFAULT_OFF
internal: True
- platform: restart
name: ${friendly_name} REBOOT
- platform: template
name: ${friendly_name}
id: ${device_name}
icon: ${icon}
lambda: |-
if (id(sensor).state) {
return false;
} else {
return true;
}
turn_on_action:
- if:
condition:
- binary_sensor.is_on: sensor
then:
- switch.turn_on: relay
- light.turn_off: white_led
turn_off_action:
- if:
condition:
- binary_sensor.is_off: sensor
then:
- switch.turn_off: relay
- light.turn_on: white_led

Basic Configuration (3-Way)

substitutions:
device_name: 3_way_light_switch #change
friendly_name: 3 Way Light Switch #change
icon: "mdi:light-switch"
esphome:
name: ${device_name}
platform: ESP8266
board: esp01_1m
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
ap:
ssid: ${device_name}
password: !secret esphome_ap_password
captive_portal:
logger:
api:
password: !secret esphome_api_password
ota:
password: !secret esphome_ota_password
status_led:
pin:
number: GPIO5 # Red LED
inverted: True
binary_sensor:
- platform: gpio
id: power_sensor
pin:
number: GPIO14
inverted: True
filters:
- delayed_off: 50ms
on_press:
- light.turn_off: white_led
on_release:
- light.turn_on: white_led
internal: True
- platform: gpio
pin:
number: GPIO13
inverted: True
id: button
on_press:
then:
- switch.toggle: ${device_name}
internal: True
light:
- platform: binary
id: white_led
output: led_1
restore_mode: RESTORE_DEFAULT_ON
internal: True
output:
- platform: gpio
id: led_1
pin:
number: GPIO4
inverted: True
switch:
- platform: gpio
id: red_led
pin:
number: GPIO5
inverted: True
internal: True
- platform: gpio
pin: GPIO12
id: relay
restore_mode: RESTORE_DEFAULT_OFF
internal: True
- platform: template
name: ${friendly_name}
id: ${device_name}
icon: ${icon}
lambda: |-
if (id(power_sensor).state) {
return true;
} else {
return false;
}
turn_on_action:
- if:
condition:
- binary_sensor.is_off: power_sensor
then:
- switch.toggle: relay
turn_off_action:
- if:
condition:
- binary_sensor.is_on: power_sensor
then:
- switch.toggle: relay

Button manipulation (Adds Double Click and Long Press event triggers)

- platform: gpio
pin:
number: GPIO13
inverted: True
id: button
name: ${friendly_name} Button
on_multi_click:
# Single Click:
- timing:
- ON for at most 1s
- OFF for at least 0.3s
then:
- switch.toggle: ${device_name}
- logger.log: "Single Click"
- homeassistant.event:
event: esphome.${device_name}
data:
title: single_click
# Double Click:
- timing:
- ON for at most 1s
- OFF for at most 1s
- ON for at most 1s
- OFF for at least 0.2s
then:
- logger.log: "Double Clicked"
- homeassistant.event:
event: esphome.${device_name}
data:
title: double_click
# Long Press:
- timing:
- ON for 1s to 2s
- OFF for at least 0.3s
then:
- logger.log: "Single Long Press"
- homeassistant.event:
event: esphome.${device_name}
data:
title: long_press
- timing:
- ON for at least 2.2s
then:
- logger.log: "Press and Hold"
- homeassistant.event:
event: esphome.${device_name}
data:
title: hold
internal: True

Home Assistant light entity (Converts it from a switch to a Light Entity)

light:
- platform: switch
name: Light Switch
entity_id: switch.light_switch

Home Assistant example automation that uses the event triggers stated above

automation:
- alias: long_press_on
trigger:
- event_data:
title: long_press
event_type: esphome.light_switch
platform: event
condition: []
action:
- entity_id: group.all_lights
service: light.turn_on
mode: single
- alias: double_click_off
trigger:
- event_data:
title: double_click
event_type: esphome.light_switch
platform: event
condition: []
action:
- entity_id: group.all_lights
service: light.turn_off
mode: single
Edit this page on GitHub