Skip to content

Commit 3bf298d

Browse files
authored
Merge pull request #2073 from TCWORLD/fix-battery-energy
Fix SolaX Battery Input/Output Energy (protocol<100) and Total Energy Sensors (protocol≥100)
2 parents 058cc46 + 86d5b58 commit 3bf298d

1 file changed

Lines changed: 47 additions & 41 deletions

File tree

custom_components/solax_modbus/plugin_solax.py

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6690,7 +6690,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
66906690
allowedtypes=AC | HYBRID | GEN5 | GEN6,
66916691
),
66926692
SolaXModbusSensorEntityDescription(
6693-
name="Battery Output Energy Total", # Need revisit these
6693+
name="Battery Output Energy Total",
66946694
key="battery_output_energy_total",
66956695
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
66966696
device_class=SensorDeviceClass.ENERGY,
@@ -6701,7 +6701,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67016701
scale=0.1,
67026702
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
67036703
entity_registry_enabled_default=False,
6704-
allowedtypes=AC | HYBRID | GEN2 | GEN3,
6704+
allowedtypes=AC | HYBRID | GEN2 | GEN3 | GEN4 | GEN5,
67056705
),
67066706
SolaXModbusSensorEntityDescription(
67076707
name="Battery Output Energy Total", # Need revisit these
@@ -6715,8 +6715,8 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67156715
scale=0.1,
67166716
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
67176717
entity_registry_enabled_default=False,
6718-
allowedtypes=AC | HYBRID | GEN4 | GEN5,
6719-
modbus_min=101,
6718+
modbus_min=100,
6719+
allowedtypes=AC | HYBRID | GEN6,
67206720
),
67216721
SolaXModbusSensorEntityDescription(
67226722
name="Battery Output Energy Total", # Need revisit these
@@ -6730,6 +6730,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67306730
scale=0.001,
67316731
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
67326732
entity_registry_enabled_default=False,
6733+
modbus_max=99,
67336734
allowedtypes=AC | HYBRID | GEN6,
67346735
),
67356736
SolaXModbusSensorEntityDescription(
@@ -6747,20 +6748,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67476748
allowedtypes=HYBRID | GEN2,
67486749
),
67496750
SolaXModbusSensorEntityDescription(
6750-
name="Battery Output Energy Today", # Need revisit this
6751-
key="battery_output_energy_today",
6752-
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
6753-
device_class=SensorDeviceClass.ENERGY,
6754-
state_class=SensorStateClass.TOTAL_INCREASING,
6755-
icon="mdi:battery-arrow-down",
6756-
register=0x20,
6757-
register_type=REG_INPUT,
6758-
register_data_type=REGISTER_U16,
6759-
scale=0.1,
6760-
allowedtypes=AC | HYBRID | GEN3 | GEN6,
6761-
),
6762-
SolaXModbusSensorEntityDescription(
6763-
name="Battery Output Energy Today", # Need revisit this
6751+
name="Battery Output Energy Today",
67646752
key="battery_output_energy_today",
67656753
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
67666754
device_class=SensorDeviceClass.ENERGY,
@@ -6770,8 +6758,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67706758
register_type=REG_INPUT,
67716759
register_data_type=REGISTER_U16,
67726760
scale=0.1,
6773-
allowedtypes=AC | HYBRID | GEN4 | GEN5,
6774-
modbus_min=101,
6761+
allowedtypes=AC | HYBRID | GEN3 | GEN4 | GEN5 | GEN6,
67756762
),
67766763
SolaXModbusSensorEntityDescription(
67776764
name="Battery Input Energy Total",
@@ -6785,10 +6772,10 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67856772
scale=0.1,
67866773
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
67876774
entity_registry_enabled_default=False,
6788-
allowedtypes=AC | HYBRID | GEN3,
6775+
allowedtypes=AC | HYBRID | GEN3 | GEN4 | GEN5,
67896776
),
67906777
SolaXModbusSensorEntityDescription(
6791-
name="Battery Input Energy Total",
6778+
name="Battery Input Energy Total", # Need revisit this
67926779
key="battery_input_energy_total",
67936780
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
67946781
device_class=SensorDeviceClass.ENERGY,
@@ -6799,11 +6786,11 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
67996786
scale=0.1,
68006787
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
68016788
entity_registry_enabled_default=False,
6802-
allowedtypes=AC | HYBRID | GEN4 | GEN5,
6803-
modbus_min=101,
6789+
modbus_min=100,
6790+
allowedtypes=AC | HYBRID | GEN6,
68046791
),
68056792
SolaXModbusSensorEntityDescription(
6806-
name="Battery Input Energy Total",
6793+
name="Battery Input Energy Total", # Need revisit this
68076794
key="battery_input_energy_total",
68086795
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
68096796
device_class=SensorDeviceClass.ENERGY,
@@ -6814,6 +6801,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
68146801
scale=0.001,
68156802
register_data_type=REGISTER_U32, # REGISTER_ULSB16MSB16,
68166803
entity_registry_enabled_default=False,
6804+
modbus_max=99,
68176805
allowedtypes=AC | HYBRID | GEN6,
68186806
),
68196807
SolaXModbusSensorEntityDescription(
@@ -6837,7 +6825,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
68376825
allowedtypes=HYBRID | GEN2,
68386826
),
68396827
SolaXModbusSensorEntityDescription(
6840-
name="Battery Input Energy Today", # Need revisit this
6828+
name="Battery Input Energy Today",
68416829
key="battery_input_energy_today",
68426830
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
68436831
device_class=SensorDeviceClass.ENERGY,
@@ -6847,21 +6835,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
68476835
register_type=REG_INPUT,
68486836
scale=0.1,
68496837
register_data_type=REGISTER_U16,
6850-
allowedtypes=AC | HYBRID | GEN3 | GEN6,
6851-
),
6852-
SolaXModbusSensorEntityDescription(
6853-
name="Battery Input Energy Today", # Need revisit this
6854-
key="battery_input_energy_today",
6855-
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
6856-
device_class=SensorDeviceClass.ENERGY,
6857-
state_class=SensorStateClass.TOTAL_INCREASING,
6858-
icon="mdi:battery-arrow-up",
6859-
register=0x23,
6860-
register_type=REG_INPUT,
6861-
scale=0.1,
6862-
register_data_type=REGISTER_U16,
6863-
allowedtypes=AC | HYBRID | GEN4 | GEN5,
6864-
modbus_min=101,
6838+
allowedtypes=AC | HYBRID | GEN3 | GEN4 | GEN5 | GEN6,
68656839
),
68666840
SolaXModbusSensorEntityDescription(
68676841
name="BMS 1 Charge Max Current",
@@ -7245,6 +7219,21 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
72457219
register_data_type=REGISTER_U32,
72467220
allowedtypes=HYBRID | GEN3 | GEN4 | GEN5,
72477221
),
7222+
SolaXModbusSensorEntityDescription(
7223+
name="Total Yield",
7224+
key="total_yield",
7225+
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
7226+
icon="mdi:solar-power",
7227+
device_class=SensorDeviceClass.ENERGY,
7228+
state_class=SensorStateClass.TOTAL_INCREASING,
7229+
register=0x52,
7230+
scale=0.1,
7231+
rounding=2,
7232+
register_type=REG_INPUT,
7233+
register_data_type=REGISTER_U32,
7234+
modbus_min=100,
7235+
allowedtypes=HYBRID | GEN6,
7236+
),
72487237
SolaXModbusSensorEntityDescription(
72497238
name="Total Yield",
72507239
key="total_yield",
@@ -7257,6 +7246,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
72577246
rounding=2,
72587247
register_type=REG_INPUT,
72597248
register_data_type=REGISTER_U32,
7249+
modbus_max=99,
72607250
allowedtypes=HYBRID | GEN6,
72617251
),
72627252
SolaXModbusSensorEntityDescription(
@@ -7760,6 +7750,21 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
77607750
rounding=1,
77617751
allowedtypes=AC | HYBRID | GEN3 | GEN4 | GEN5,
77627752
),
7753+
SolaXModbusSensorEntityDescription(
7754+
name="Total Solar Energy",
7755+
key="total_solar_energy",
7756+
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
7757+
icon="mdi:solar-power",
7758+
device_class=SensorDeviceClass.ENERGY,
7759+
state_class=SensorStateClass.TOTAL_INCREASING,
7760+
register=0x94,
7761+
register_type=REG_INPUT,
7762+
register_data_type=REGISTER_U32,
7763+
scale=0.1,
7764+
rounding=1,
7765+
modbus_min=100,
7766+
allowedtypes=AC | HYBRID | GEN6,
7767+
),
77637768
SolaXModbusSensorEntityDescription(
77647769
name="Total Solar Energy",
77657770
key="total_solar_energy",
@@ -7772,6 +7777,7 @@ def value_function_battery_voltage_cell_difference(initval: int, descr: Any, dat
77727777
register_data_type=REGISTER_U32,
77737778
scale=0.001,
77747779
rounding=1,
7780+
modbus_max=99,
77757781
allowedtypes=AC | HYBRID | GEN6,
77767782
),
77777783
SolaXModbusSensorEntityDescription(

0 commit comments

Comments
 (0)