ESPHome component to monitor a Victron BMV and SmartShunt via ve.direct / UART TTL
All BMV and SmartShunt providing a ve.direct port.
- Victron SmartShunt 500A/50mV
- ESPHome 2021.10 or higher.
- Generic ESP32 or ESP8266 board
UART-TTL
┌────────────────┐ ┌──────────────────┐
│ GND o│<-------------->│o GND │
│ BMV or RX o│ │ ESP32/ │
│ SmartShunt TX o│--------------->│o D7 ESP8266 │<-- GND
│ 5V/3.3V o│ │ │<-- 3.3V
└────────────────┘ └──────────────────┘
# UART-TTL jack (JST-PH 2.0mm pinch)
┌────────────────┐
│ │
│ O O O O │
│VCC TX RX GND │
└─── ─────── ────┘
If you are unsure about to pin order please measure the voltage between GND and VCC (5V/3.3V). If you measure a positive voltage you know the position of VCC and GND!
Pin | Purpose | ESP pin |
---|---|---|
1 | GND | GND |
2 | RX | |
3 | TX | D7 (RX) |
4 | 5V |
You can install this component with ESPHome external components feature like this:
Example:
external_components:
- source: github://KinDR007/VictronSmartShunt-ESPHOME@main
uart:
id: the_uart
rx_pin: D7
baud_rate: 19200
stop_bits: 1
data_bits: 8
parity: NONE
rx_buffer_size: 256
victron_smart_shunt:
uart_id: the_uart
sensor:
- platform: victron_smart_shunt
battery_voltage:
id: bv
battery_current:
id: bc
The uart_id
is optional.
All sensors are optional.
- platform: victron_smart_shunt
battery_voltage:
name: "Battery Voltage"
id: bv
battery_current:
name: "Battery Current"
id: bc
fw_version:
name: "fw"
id: fw
pid:
name: "pid"
id: pid
instantaneous_power:
name: "instantaneous power"
id: instantaneous_power
time_to_go:
name: "time to go"
id: time_to_go
consumed_amp_hours:
name: "consumed amp hours"
id: consumed_amp_hours
unit_of_measurement: Ah
min_battery_voltage:
name: "Min battery voltage"
id: min_battery_voltage
max_battery_voltage:
name: "Max battery voltage"
id: max_battery_voltage
amount_of_charged:
name: "Amount of charged"
id: amount_of_charged
filters:
- multiply: 0.001
unit_of_measurement: kWh
bmv_alarm:
name: "BMV alarm"
id: bmv_alarm
bmv_pid:
name: "bmv - pid"
id: bmv_pid
last_full_charge:
name: "Time since last full charge"
id: last_full_charge
deepest_discharge:
name: "Depth of the deepest discharge"
id: deepest_discharge
unit_of_measurement: Ah
last_discharge:
name: "Depth of the last discharge"
id: last_discharge
unit_of_measurement: Ah
discharged_energy:
name: "Amount of discharged energy"
id: discharged_energy
filters:
- multiply: 0.001
unit_of_measurement: kWh
state_of_charge:
id: state_of_charge
name: "SoC"
The available numeric sensors are:
instanteneous_power
time_to_go
state_of_charge
consumed_amp_hours
min_battery_voltage
max_battery_voltage
amount_of_charged
last_full_charge
deepest_discharge
last_discharge
discharged_energy
number_of_full_dis
number_of_charge_cycles
discharged_energy
The available text sensors are:
bmv_alarm_text
bmv_text
charger_text
error_text
alarm_reason_text
tracker_text
fw_version
pid
Full example in smartshunt.yaml
Big thanks for help to ssieb
#victron #esphome #smartshunt #bmv #ve.direct