fix: varta via modbus

This commit is contained in:
Patrick 2025-01-10 16:36:07 +01:00
parent b4c68efe53
commit 7d6e959d90
Signed by: patrick
GPG key ID: 451F95EFB8BECD0F

View file

@ -54,7 +54,6 @@
]; ];
customComponents = with pkgs.home-assistant-custom-components; [ customComponents = with pkgs.home-assistant-custom-components; [
homematicip_local homematicip_local
pkgs.havartastorage
]; ];
config = { config = {
http = { http = {
@ -96,6 +95,223 @@
# organization = "home"; # organization = "home";
# bucket = "home_assistant"; # bucket = "home_assistant";
# }; # };
# Modbus Varta element backup
modbus = {
name = "mb_varta";
type = "tcp";
host = "10.99.30.20"; # replace with your ip of the your varta;
port = 502;
delay = 1;
timeout = 3;
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;
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;
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";
}
];
};
# 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 }}
'';
}
{
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 }}
'';
}
];
##Grid
sensor = {
platform = "template";
sensors = {
mb_varta_status = {
friendly_name = "Varta 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' }}
'';
};
};
};
}; };
extraPackages = extraPackages =
python3Packages: with python3Packages; [ python3Packages: with python3Packages; [