Nous A5t

esp8266 eu Comes with ESPHome plug

Overview

The device comes with Tasmota installed, but can be reflashed to ESPHome.

GPIO Pinout

see pinout

PinFunction
GPIO00None
GPIO01CSE7766 tx
GPIO02LedLink
GPIO03CSE7766 rx
GPIO04None
GPIO05Relay4i
GPIO09None
GPIO10None
GPIO12Relay2
GPIO13Relay3
GPIO14Relay1
GPIO15None
GPIO16Button1
FLAGNone

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}