How to use Bitshake SmartMeterReader with ESPHome

Hi!

I wanted to share my solution… I bought the said device and it came pre-flashed with their tasmota build. As I am not using tasmota at all, I decided to run ESPHome on it.

I found a few topics on the web and it seems like they were using an older hardware revision, so this is my configuration for reading out a MT691 smartmeter.
If you’re having another meter, the basic values will still work but you will need other OBIS codes for additional readings.
Also additional readings need the PIN disabled while basic readings work with the PIN locked.

The namings are german and I removed secrets, but you’ll get the idea.
Flash using USB connection for the first time!

esphome:
  name: stromzaehler
  friendly_name: stromzaehler

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: ""

ota:
  - platform: esphome
    password: "xxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Stromzaehler"
    password: "SuperSecurePassword"

captive_portal:
    

uart:
  id: uart_bus
  rx_pin: GPIO5
  baud_rate: 9600
  data_bits: 8
  parity: NONE
  stop_bits: 1

sml:
  id: mysml
  uart_id: uart_bus

sensor:
  #'Basic Readings
  - platform: sml
    name: "Gesamtverbrauch"
    sml_id: mysml
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    device_class: energy
    state_class: total_increasing
    accuracy_decimals: 2
    filters:
      - multiply: 0.0001

  - platform: sml
    name: "Gesamteinspeisung"
    sml_id: mysml
    obis_code: "1-0:2.8.0"
    unit_of_measurement: kWh
    device_class: energy
    state_class: total_increasing
    accuracy_decimals: 2
    filters:
      - multiply: 0.0001

  # Additional Readings
  - platform: sml
    name: "Momentanleistung"
    sml_id: mysml
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  - platform: sml
    name: "Leistung L1"
    sml_id: mysml
    obis_code: "1-0:36.7.0"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  - platform: sml
    name: "Leistung L2"
    sml_id: mysml
    obis_code: "1-0:56.7.0"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  - platform: sml
    name: "Leistung L3"
    sml_id: mysml
    obis_code: "1-0:76.7.0"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    accuracy_decimals: 0

  - platform: sml
    name: "Strom L1"
    sml_id: mysml
    obis_code: "1-0:31.7.0"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  - platform: sml
    name: "Strom L2"
    sml_id: mysml
    obis_code: "1-0:51.7.0"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  - platform: sml
    name: "Strom L3"
    sml_id: mysml
    obis_code: "1-0:71.7.0"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  - platform: sml
    name: "Spannung L1"
    sml_id: mysml
    obis_code: "1-0:32.7.0"
    unit_of_measurement: V
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: sml
    name: "Spannung L2"
    sml_id: mysml
    obis_code: "1-0:52.7.0"
    unit_of_measurement: V
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: sml
    name: "Spannung L3"
    sml_id: mysml
    obis_code: "1-0:72.7.0"
    unit_of_measurement: V
    device_class: voltage
    state_class: measurement
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: sml
    name: "Frequenz"
    sml_id: mysml
    obis_code: "1-0:14.7.0"
    unit_of_measurement: Hz
    device_class: frequency
    state_class: measurement
    accuracy_decimals: 2
    filters:
      - multiply: 0.1

  - platform: sml
    name: "Phaseangle L2-L1"
    sml_id: mysml
    obis_code: "1-0:81.7.21"
    unit_of_measurement: "°"
    accuracy_decimals: 0
    disabled_by_default: true

  - platform: sml
    name: "Phaseangle L3-L1"
    sml_id: mysml
    obis_code: "1-0:81.7.41"
    unit_of_measurement: "°"
    accuracy_decimals: 0
    disabled_by_default: true

  - platform: sml
    name: "Phaseangle I/U L1"
    sml_id: mysml
    obis_code: "1-0:81.7.1"
    unit_of_measurement: "°"
    accuracy_decimals: 1
    disabled_by_default: true

  - platform: sml
    name: "Phaseangle I/U L2"
    sml_id: mysml
    obis_code: "1-0:81.7.2"
    unit_of_measurement: "°"
    accuracy_decimals: 1
    disabled_by_default: true

  - platform: sml
    name: "Phaseangle I/U L3"
    sml_id: mysml
    obis_code: "1-0:81.7.3"
    unit_of_measurement: "°"
    accuracy_decimals: 1
    disabled_by_default: true
1 Like