På tide å komme med en tilbakemelding her. Om ikke annet for å vise takknemlighet til @Preben som har delt denne.
Jeg hadde et ESP32 (esp32doit-devkit-v1) liggende og fikk tak i en MBUS-ttl.
ESP32: https://www.aliexpress.com/item/32834331647.html?spm=a2g0s.9042311.0.0.27424c4dUJ3YpK)
MBUS-TTL: https://www.aliexpress.com/item/32834331647.html?spm=a2g0s.9042311.0.0.27424c4dUJ3YpK
Relativt kjapt å lodde pinner på MBUS og koble sammen med Dupont-kabler. RJ lagde jeg selv med en sånn tang som man bruker til det.
ESPhome-oppsettet er jo ferdig fra @Preben og man kan i praksis kopiere inn alt nedenfor OTA og det vil fungere. Jeg la til TIME-komponenten for å få inn en sensor som måler daglig forbruk (total_daily_energy) og tok bort Temperatursensoren som jeg ikke har. Siden jeg også bruker en sensor utenfor HA så la jeg til MQTT-komponenten.
Jeg hadde en liten USB nødlader liggende som jeg koblet mellom ESP32'en og strømuttak slik at ESP'en forblir online ved strømbrudd. Tenkte at jeg skulle sette opp en automasjon som sjekker datastrømmen og varsler hvis det er strømbrudd på måleren.
Nå tikker dataen inn fortløpende
Jeg har egentlig ikke nyttgjort meg av dataen særlig ennå med tanke på smartere oppvarming og slikt, men det kommer på sikt. Jeg har satt opp et dashboard i Grafana som begynner å gi innsikt i mitt forbruk og prisnivå. Jeg bruker Tibber til å få strømpriser,
Grafana:
Min ESPhome-config:
esphome:
name: mbus_kamstrup
platform: ESP32
board: esp32doit-devkit-v1
includes:
mbus.h
wifi:
ssid: "xxx"
password: "xxx"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "xxx"
password: "xxx"
captive_portal:
mqtt:
broker: 192.168.x.xxx
port: 1883
username: xxx
password: xxx
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
time:
- platform: sntp
id: my_time
uart:
id: uart_bus
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 2400
sensor:
- platform: total_daily_energy
name: "AMS Daily Energy"
unit_of_measurement: kWh
accuracy_decimals: 2
power_id: ams_kw
- platform: custom
lambda: |-
auto mbus_reader = new MbusReader(id(uart_bus));
App.register_component(mbus_reader);
return {mbus_reader->wattage_sensor, mbus_reader->reactive_power_sensor, mbus_reader->amperage_sensor, mbus_reader->voltage_sensor, mbus_reader->energy_sensor, mbus_reader->reactive_energy_sensor};
sensors:
- name: "AMS Wattage"
unit_of_measurement: kW
accuracy_decimals: 2
id: ams_kw
filters:
- multiply: 0.001
- name: "AMS Reactive Power"
unit_of_measurement: VAr
accuracy_decimals: 0
internal: true
- name: "AMS Amperage"
unit_of_measurement: A
accuracy_decimals: 2
filters:
- multiply: 0.01
- name: "AMS Voltage"
unit_of_measurement: V
accuracy_decimals: 0
- name: "AMS Hourly Energy"
unit_of_measurement: kWh
accuracy_decimals: 2
filters:
- multiply: 0.001
- name: "AMS Hourly Reactive Energy"
unit_of_measurement: kVArh
accuracy_decimals: 3
internal: true
filters:
- multiply: 0.01
Tusen takk til @Preben som delte med oss