Nous A5t
The device comes with Tasmota installed, but can be reflashed to ESPHome.
GPIO Pinout
| Pin | Function |
|---|---|
| GPIO00 | None |
| GPIO01 | CSE7766 tx |
| GPIO02 | LedLink |
| GPIO03 | CSE7766 rx |
| GPIO04 | None |
| GPIO05 | Relay4i |
| GPIO09 | None |
| GPIO10 | None |
| GPIO12 | Relay2 |
| GPIO13 | Relay3 |
| GPIO14 | Relay1 |
| GPIO15 | None |
| GPIO16 | Button1 |
| FLAG | None |
Basic Configuration
substitutions:
friendly_name: "A5T"
devicename: "nous-a5t"
device_description: "nous a5t"
project_name: "Nous.A5T"
project_version: "1.0"
relay_restore_mode: RESTORE_DEFAULT_OFF
esphome:
name: $devicename
friendly_name: "${friendly_name}"
name_add_mac_suffix: false
project:
name: "${project_name}"
version: "${project_version}"
esp8266:
board: esp8285
restore_from_flash: true
preferences:
flash_write_interval: 1min
logger:
baud_rate: 0
uart:
rx_pin: GPIO3
baud_rate: 4800
api:
encryption:
key: !secret encryption
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${friendly_name} Fallback Hotspot"
password: !secret wifi_ap_password
captive_portal:
ota:
# see: https://esphome.io/components/time.html
time:
- platform: homeassistant
id: homeassistant_time
globals:
- id: total_energy
type: float
restore_value: yes
initial_value: "0.0"
binary_sensor:
- platform: status
name: "${friendly_name} - Status"
device_class: connectivity
- platform: gpio
pin:
number: GPIO16
# mode: INPUT_PULLUP
inverted: True
id: "button_state0"
on_press:
- switch.turn_off: relay1
- switch.turn_off: relay2
- switch.turn_off: relay3
- switch.turn_off: relay4
sensor:
- platform: uptime
name: "${friendly_name} Uptime Sensor"
# Small buttons over ADC - see https://templates.blakadder.com/nous_A5T.html
- platform: adc
pin: VCC
id: a0_vcc
update_interval: 1s
internal: true
filters:
- clamp:
min_value: 0
max_value: 4
ignore_out_of_range: true
- timeout:
timeout: 1s
value: 4
on_value_range:
- below: 1.5
then:
- switch.toggle: relay3
- above: 1.5
below: 2.5
then:
- switch.toggle: relay2
- above: 2.5
below: 3.5
then:
- switch.toggle: relay1
- platform: cse7766
current:
name: "${friendly_name} Current"
filters:
- throttle: 10s
voltage:
name: "${friendly_name} Voltage"
filters:
- multiply: 2.4
- throttle: 10s
power:
name: "${friendly_name} Power"
id: power_sensor
filters:
- multiply: 2.4
- throttle: 1s
energy:
name: "${friendly_name} Energy"
id: energy
unit_of_measurement: kWh
filters:
# Multiplication factor from W to kW is 0.001
# and multiple by 2.4 because of the voltage factor
- multiply: 0.0024
- throttle: 1s
on_value:
then:
- lambda: |-
static float previous_energy_value = 0.0;
float current_energy_value = id(energy).state;
id(total_energy) += current_energy_value - previous_energy_value;
previous_energy_value = current_energy_value;
- platform: template
name: "${friendly_name} Total Energy"
unit_of_measurement: kWh
device_class: "energy"
state_class: "total_increasing"
icon: "mdi:lightning-bolt"
accuracy_decimals: 3
lambda: |-
return id(total_energy);
update_interval: 60s
light:
- platform: status_led
name: "${friendly_name} Status LED"
id: blue_led
disabled_by_default: true
pin:
inverted: true
number: GPIO2
switch:
- platform: gpio
name: "${friendly_name} - Switch 1"
pin: GPIO14
id: relay1
restore_mode: ${relay_restore_mode}
- platform: gpio
name: "${friendly_name} - Switch 2"
pin: GPIO12
id: relay2
restore_mode: ${relay_restore_mode}
- platform: gpio
name: "${friendly_name} - Switch 3"
pin: GPIO13
id: relay3
restore_mode: ${relay_restore_mode}
- platform: gpio
name: "${friendly_name} - USB Switch"
pin: GPIO5
inverted: True
id: relay4
restore_mode: ${relay_restore_mode}