Until the Varta Storage integration (Add vartastorage integration by Vip0r · Pull Request #63736 · home-assistant/core · GitHub) is accepted, you can access the Varta Storage via Modbus. The following snippets are for the Varta pulse neo.
# Modbus Varta pulse neo
modbus:
- name: "mb_varta"
type: tcp
host: 192.168.40.4 # replace with your ip of the your varta
port: 502
delay: 1
timeout: 3
retries: 3
retry_on_empty: true
message_wait_milliseconds: 250
sensors:
### EMS Software Version - not for Varta link
- name: mb_varta_EMS
slave: 1
address: 1000
count: 17
data_type: string
precision: 0
scale: 1
### ENS Software Version - not for Varta link
- name: mb_varta_ENS
slave: 1
address: 1017
count: 17
data_type: string
precision: 0
scale: 1
### Software Version - not for Varta link
- name: mb_varta_software
slave: 1
address: 1034
count: 17
data_type: string
precision: 0
scale: 1
### Table version
- name: mb_varta_table_version
slave: 1
address: 1051
data_type: uint16
precision: 0
scale: 1
### timestamp -- not working
- name: mb_varta_timestamp
slave: 1
address: 1052
count: 2
data_type: uint32
swap: word
precision: 0
scale: 1
### Serial Number
- name: mb_varta_serial
slave: 1
address: 1054
count: 10
data_type: string
precision: 0
scale: 1
### Number of Battery Modules installed
- name: mb_varta_installed_batteries
slave: 1
address: 1064
data_type: uint16
precision: 0
scale: 1
### State
- name: mb_varta_state
slave: 1
address: 1065
data_type: uint16
precision: 0
scale: 1
unit_of_measurement: "State"
### Active Power - positive:charge / negative: discharge
- name: mb_varta_active_power
slave: 1
address: 1066
data_type: int16
precision: 0
scale: 1
device_class: power
unit_of_measurement: "W"
### Apparent Power - positive:charge / negative: discharge
- name: mb_varta_apparent_power
slave: 1
address: 1067
data_type: int16
precision: 0
scale: 1
device_class: apparent_power
unit_of_measurement: "VA"
### State of Charge
- name: mb_varta_SOC
slave: 1
address: 1068
data_type: uint16
precision: 0
scale: 1
device_class: battery
unit_of_measurement: "%"
### energy counter AC->DC - not sure if correct
- name: mb_varta_ACDC
slave: 1
address: 1069
count: 2
data_type: uint32
swap: word
precision: 0
scale: 1
device_class: energy
unit_of_measurement: "Wh"
state_class: total_increasing
### Installed capacity
- name: mb_varta_capacity
slave: 1
address: 1071
data_type: uint16
precision: 0
scale: 10
device_class: energy
unit_of_measurement: "Wh"
### Grid Power
- name: mb_varta_grid_power
slave: 1
address: 1078
data_type: int16
precision: 0
scale: 1
device_class: power
unit_of_measurement: "W"
sensor:
- platform: template
sensors:
mb_varta_status:
friendly_name: "Varta Pulse Neo Status"
value_template: >-
{% set mapper = {
'0' : 'Busy',
'1' : 'Run',
'2' : 'Charge',
'3' : 'Discharge',
'4' : 'Standby',
'5' : 'Error',
'6' : 'Service',
'7' : 'Islanding' } %}
{% set state = states.sensor.mb_varta_state.state %}
{{ mapper[state] if state in mapper else 'Unknown' }}
# Varta input/output
template:
- sensor:
- name: "Varta Input Power"
unit_of_measurement: "W"
state_class: measurement
device_class: power
state: >
{% if states('sensor.mb_varta_active_power') | float(0) >= 0 %}
{% set varta_in = states('sensor.mb_varta_active_power') | float(0) %}
{% else %}
{% set varta_in = 0 %}
{% endif %}
{{ varta_in }}
- sensor:
- name: "Varta Output Power"
unit_of_measurement: "W"
state_class: measurement
device_class: power
state: >
{% if states('sensor.mb_varta_active_power') | float(0) <= 0 %}
{% set varta_out = states('sensor.mb_varta_active_power') | float(0) *-1 %}
{% else %}
{% set varta_out = 0 %}
{% endif %}
{{ varta_out }}
Do not forget the two corresponding helper to get the input and output into the Home Assistant energy dashboard:
At the end, it can look like this:
Here are the two screenshots of the Varta Modbus specification in case you have another battery and you want to read more or other data:
Please feel free to comment any improvement you see.