Skip to content
Permalink
main
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
substitutions:
name: "athom-smart-plug"
friendly_name: "Athom Smart Plug"
project_name: "athom.smart-plug"
project_version: "1.0"
relay_restore_mode: RESTORE_DEFAULT_OFF
esphome:
name: "${name}"
name_add_mac_suffix: true
project:
name: "${project_name}"
version: "${project_version}"
esp8266:
board: esp8285
restore_from_flash: true
preferences:
flash_write_interval: 180sec
api:
ota:
logger:
web_server:
port: 80
wifi:
ap: {} # This spawns an AP with the device name and mac address with no password.
captive_portal:
dashboard_import:
package_import_url: github://athom-tech/athom-configs/athom-smart-plug.yaml
binary_sensor:
- platform: status
name: "${friendly_name} Status"
- platform: gpio
pin:
number: 3
mode: INPUT_PULLUP
inverted: true
name: "${friendly_name} Power Button"
disabled_by_default: true
on_multi_click:
- timing:
- ON for at most 1s
- OFF for at least 0.2s
then:
- switch.toggle: relay
- timing:
- ON for at least 4s
then:
- button.press: restart_button
sensor:
- platform: uptime
name: "${friendly_name} Uptime"
disabled_by_default: true
- platform: hlw8012
sel_pin:
number: GPIO12
inverted: True
cf_pin: GPIO4
cf1_pin: GPIO5
voltage_divider: 780
current:
name: "${friendly_name} Current"
filters:
- calibrate_linear:
- 0.0000 -> 0.0110 # Relay off no load
- 0.0097 -> 0.0260 # Relay on no load
- 0.9270 -> 0.7570
- 2.0133 -> 1.6330
- 2.9307 -> 2.3750
- 5.4848 -> 4.4210
- 8.4308 -> 6.8330
- 9.9171 -> 7.9830
# Normalize for plug load
- lambda: if (x < 0.0260) return 0; else return (x - 0.0260);
voltage:
name: "${friendly_name} Voltage"
power:
name: "${friendly_name} Power"
id: socket_my_power
unit_of_measurement: W
filters:
- calibrate_linear:
- 0.0000 -> 0.5900 # Relay off no load
- 0.0000 -> 1.5600 # Relay on no load
- 198.5129 -> 87.8300
- 434.2469 -> 189.5000
- 628.6241 -> 273.9000
- 1067.0067 -> 460.1000
- 1619.8098 -> 699.2000
- 2043.0282 -> 885.0000
# Normalize for plug load
- lambda: if (x < 1.5600) return 0; else return (x - 1.5600);
change_mode_every: 1
update_interval: 5s
- platform: total_daily_energy
name: "${friendly_name} Total Energy"
power_id: socket_my_power
unit_of_measurement: kWh
accuracy_decimals: 3
restore: true
filters:
- multiply: 0.001
button:
- platform: restart
id: restart_button
name: "${friendly_name} Restart"
switch:
- platform: gpio
name: "${friendly_name}"
pin: GPIO14
id: relay
restore_mode: ${relay_restore_mode}
on_turn_on:
- light.turn_on: blue_led
on_turn_off:
- light.turn_off: blue_led
light:
- platform: status_led
name: "${friendly_name} Status LED"
id: blue_led
disabled_by_default: true
pin:
inverted: true
number: GPIO13
text_sensor:
- platform: wifi_info
ip_address:
name: "${friendly_name} IP Address"
disabled_by_default: true
time:
- platform: sntp
id: my_time