Digitaling 20A Power Monitor RTL8710BX t102-v1.1

rtl87xx EU Comes with ESPHome plug

Overview

Bought from: Aliexpress Board/Pinout: libretiny.eu Pictures: elektroda.com (Pinout picture is off, uart2 is on the two unconnected pads labled 0/12.) Due to a bug libretiny-eu/libretiny#227 the board w2 needs to be selected for the relay to work: Due to another bug you need to apply this fix to platforms\[email protected]\cores\realtek-amb\arduino\src\wiring_irq.c https://github.com/libretiny-eu/libretiny/issues/155#issuecomment-1826470433

Chips used

McuBoard: T102_V1.1 MCU: RTL8710BX Flash: GD25Q16ETIG 2 M x 8 NOR Flash Power Sensor: BL0937 Relay: JIEYING JY3FF-S-DC5V-A(K)

Flashing

Hook up 3v3 and GND Connect TX2 and RX2 to serial interface. Short TX2 to GND during power on, then flash via ltchiptool. Can be flashed in-place without desoldering.

GPIO Pinout

PinFunction
PA00BL0937 cf_pin
PA05LED (Inverted)
PA12BL0937 cf1_pin
PA14BL0937 sel_pin (Inverted)
PA15Relay & LED2
PA18Button (Inverted)

platformio.ini

[env:wr2]
platform = libretiny
board = wr2
framework = arduino

Basic Configuration

substitutions:
  devicename: smartplug
  friendly_name: t102-v1.1-2
  device_description: Digitaling 20A Power Monitor RTL8710BX t102-v1.1
  current_res: "0.001" # Power monitoring calibration https://esphome.io/components/sensor/hlw8012.html
  voltage_div: "1600" # Power monitoring calibration
esphome:
  name: ${devicename}
  friendly_name: ${friendly_name}
  comment: ${device_description}
rtl87xx:
  board: wr2 # actually t102-v1.1 but https://github.com/libretiny-eu/libretiny/issues/247
# Enable logging
logger:
# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption
ota:
  #password: !secret ota_password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot in case wifi connection fails
  ap:
    ssid: ${friendly_name} Fallback Hotspot
    password: !secret wifi_ap_password
captive_portal:
web_server:
  port: 80
  auth:
    username: !secret web_server_username
    password: !secret web_server_password
# Enable time component for use by daily power sensor
time:
  - platform: homeassistant
    id: homeassistant_time
binary_sensor:
# Button on the front is pressed and then toggle relay
  - platform: gpio
    device_class: power
    pin:
      number: PA18
      mode: INPUT_PULLUP
      inverted: True
    name: Button
    on_press:
      - switch.toggle: relay
      - switch.toggle: statusled
text_sensor:
# Reports the ESPHome Version with compile date
  - platform: version
    name: ESPHome Version
  - platform: libretiny
    version:
      name: LibreTiny Version
switch:
# Relay itself
  - platform: gpio
    name: Relay
    pin: PA15
    id: relay
    restore_mode: RESTORE_DEFAULT_OFF
  - platform: gpio
    name: statusled
    pin: PA05
    id: statusled
    restore_mode: RESTORE_DEFAULT_OFF
    inverted: true
#bootloop fix: https://github.com/libretiny-eu/libretiny/issues/155#issuecomment-1826470433
#https://esphome.io/components/sensor/hlw8012.html
sensor:
  - platform: hlw8012
    model: BL0937
    sel_pin:
       number: PA14
       inverted: true
    cf_pin: PA00
    cf1_pin: PA12
    current:
      name: "Current"
    voltage:
      name: "Voltage"
    power:
      name: "Power"
      id: power
    update_interval: 1s
    initial_mode: CURRENT
    change_mode_every: 8
    current_resistor: ${current_res}
    voltage_divider: ${voltage_div}
# Reports the total Power so-far each day, resets at midnight, see https://esphome.io/components/sensor/total_daily_energy.html
  - platform: total_daily_energy
    name: Total Daily Energy
    icon: mdi:circle-slice-3
    power_id: power
    filters:
      - multiply: 0.001
    unit_of_measurement: kWh
    state_class: total_increasing
    device_class: energy