devices.esphome.io

Nous A8T

Nous A8T

Device Type: plug
Electrical Standard: eu
Board: esp32
Difficulty: Disassembly required, 3/5

General Notes

Theis device contains an ESP32-C3 and ships with Tasmota firmware To flash it the device can easily be dissasemblied by unscrewing the screw at the plug side.

Example Configuration

substitutions:
name: nous-a8t
friendly_name: Nous A8T (ESPHome)
max_power: "2000"
# Higher value gives lower watt readout
current_res: "0.00126"
# Lower value gives lower voltage readout
voltage_div: "1570"
esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: false
project:
name: "NOUS.Smart-Wifi-Socket"
version: "A8T"
on_boot:
priority: 200
then:
- if:
condition:
switch.is_on: relay
then:
- light.turn_on: led
else:
- light.turn_off: led
esp32:
board: esp32dev
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
# Allow provisioning Wi-Fi via serial
improv_serial:
wifi:
# Set up a wifi access point
ap: {}
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
time:
- platform: homeassistant
id: my_time
globals:
- id: total_energy
type: float
restore_value: true
initial_value: "0.0"
dashboard_import:
package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
import_full_config: true
# To have a "next url" for improv serial
web_server:
light:
- platform: status_led
internal: True
name: "Switch state"
id: led
pin:
number: GPIO02
inverted: true
binary_sensor:
- platform: gpio
id: "push_button"
internal: true
pin:
number: GPIO04
inverted: yes
mode: INPUT_PULLUP
on_press:
- switch.toggle: "relay"
switch:
- platform: gpio
pin: GPIO13
id: relay
name: "Relay"
restore_mode: RESTORE_DEFAULT_OFF
icon: mdi:power
on_turn_on:
- light.turn_on: led
on_turn_off:
- light.turn_off: led
sensor:
- platform: wifi_signal
name: "Wifi Signal"
update_interval: 60s
icon: mdi:wifi
- platform: uptime
name: "Uptime"
update_interval: 60s
icon: mdi:clock-outline
- platform: hlw8012
model: BL0937
sel_pin:
number: GPIO14
inverted: True
cf_pin: GPIO27
cf1_pin: GPIO26
current_resistor: ${current_res}
voltage_divider: ${voltage_div}
change_mode_every: 1
update_interval: 5s
current:
id: current
name: "current"
unit_of_measurement: A
accuracy_decimals: 3
icon: mdi:current-ac
filters:
- lambda: |-
if (x < 0.01) return 0;
else return x;
voltage:
id: voltage
name: "voltage"
unit_of_measurement: V
accuracy_decimals: 1
icon: mdi:flash-outline
power:
name: "power"
id: power
unit_of_measurement: W
icon: mdi:flash-outline
force_update: true
filters:
- calibrate_linear:
- 0.0 -> 0.0
- 24.50 -> 28.40
on_value_range:
- above: ${max_power}
then:
- switch.turn_off: relay
- homeassistant.service:
service: persistent_notification.create
data:
title: Message from ${name}
data_template:
message: Switch turned off because power exceeded ${max_power}W
- platform: total_daily_energy
name: "energy"
power_id: power
state_class: total_increasing
unit_of_measurement: kWh
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001
- lambda: !lambda |-
static auto last_state = x;
if (x < last_state) { // x was reset
id(total_energy) += last_state;
ESP_LOGI("main", "Energy was reset: %f", id(total_energy));
}
last_state = x;
return id(total_energy) + x;
Edit this page on GitHub