Skip to content

Commit 5d76710

Browse files
authored
Merge pull request #386 from sfstar/feature-add-registers-until-3-66
Feature add registers until 3 66
2 parents 0a34011 + 52a9a9c commit 5d76710

File tree

3 files changed

+1183
-6
lines changed

3 files changed

+1183
-6
lines changed

custom_components/victron/const.py

Lines changed: 261 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
from homeassistant.components.sensor import SensorStateClass
66
from homeassistant.const import (
7+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
8+
CONCENTRATION_PARTS_PER_MILLION,
9+
LIGHT_LUX,
710
PERCENTAGE,
811
REVOLUTIONS_PER_MINUTE,
912
UnitOfElectricCurrent,
@@ -247,6 +250,13 @@ class generic_alarm_ledger(Enum):
247250
"grid_ac_frequency": RegisterInfo(2644, UINT16, UnitOfFrequency.HERTZ, 100),
248251
}
249252

253+
gavazi_grid_registers_2 = {
254+
"grid_L1_powerfactor": RegisterInfo(2645, INT16, "", 1000),
255+
"grid_L2_powerfactor": RegisterInfo(2646, INT16, "", 1000),
256+
"grid_L3_powerfactor": RegisterInfo(2647, INT16, "", 1000),
257+
"grid_total_powerfactor": RegisterInfo(2648, INT16, "", 1000),
258+
}
259+
250260

251261
class vebus_mode(Enum):
252262
"""Vebus mode."""
@@ -613,13 +623,124 @@ class vebus_charger_state(Enum):
613623
}
614624

615625

626+
class vebus_microgrid_mode(Enum):
627+
"""Vebus microgrid mode."""
628+
629+
GRID_FORMING = 0
630+
GRID_FOLLOWING = 1
631+
RESERVED = 2
632+
HYBRID_DROOP_MODE = 3
633+
634+
635+
vebus_registers_2 = {
636+
"vebus_microgrid_mode": RegisterInfo(
637+
200, UINT16, entityType=TextReadEntityType(vebus_microgrid_mode)
638+
),
639+
"vebus_microgrid_reference_frequency": RegisterInfo(
640+
201,
641+
INT16,
642+
UnitOfFrequency.HERTZ,
643+
100,
644+
entityType=SliderWriteType(UnitOfFrequency.HERTZ),
645+
),
646+
"vebus_microgrid_reference_power": RegisterInfo(
647+
202, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
648+
),
649+
"vebus_microgrid_minimum_active_power": RegisterInfo(
650+
203, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
651+
),
652+
"vebus_microgrid_maximum_active_power": RegisterInfo(
653+
204, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
654+
),
655+
"vebus_microgrid_frequency_droop": RegisterInfo(
656+
205, UINT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=False)
657+
),
658+
"vebus_microgrid_reference_reactive_power": RegisterInfo(
659+
206, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
660+
),
661+
"vebus_microgrid_minimum_reactive_power": RegisterInfo(
662+
207, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
663+
),
664+
"vebus_microgrid_maximum_reactive_power": RegisterInfo(
665+
208, INT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=True)
666+
),
667+
"vebus_microgrid_voltage_droop_slope": RegisterInfo(
668+
209, UINT16, PERCENTAGE, 100, entityType=SliderWriteType(negative=False)
669+
),
670+
"vebus_microgrid_reference_voltage": RegisterInfo(
671+
210,
672+
UINT16,
673+
UnitOfElectricPotential.VOLT,
674+
100,
675+
entityType=SliderWriteType(negative=False),
676+
),
677+
"vebus_microgrid_activate_droop_mode_parameters": RegisterInfo(
678+
211, UINT16, "", 1, entityType=ButtonWriteType()
679+
),
680+
# RESERVED 212
681+
"vebus_microgrid_directdrive_minimum_frequency": RegisterInfo(
682+
213, UINT16, UnitOfFrequency.HERTZ, 100
683+
),
684+
"vebus_microgrid_directdrive_maximum_frequency": RegisterInfo(
685+
214, UINT16, UnitOfFrequency.HERTZ, 100
686+
),
687+
"vebus_microgrid_directdrive_power_setpoint": RegisterInfo(
688+
215, INT16, PERCENTAGE, 100
689+
),
690+
"vebus_microgrid_directdrive_reactive_power_setpoint": RegisterInfo(
691+
216, INT16, PERCENTAGE, 100
692+
),
693+
"vebus_microgrid_directdrive_range_minimum_voltage": RegisterInfo(
694+
217, UINT16, UnitOfElectricPotential.VOLT, 100
695+
),
696+
"vebus_microgrid_directdrive_range_maximum_voltage": RegisterInfo(
697+
218, UINT16, UnitOfElectricPotential.VOLT, 100
698+
),
699+
"vebus_microgrid_directdrive_activate_grid_following_parameters": RegisterInfo(
700+
219, UINT16, "", 1, entityType=ButtonWriteType()
701+
),
702+
"vebus_microgrid_directdrive_grid_forming_frequency_setpoint": RegisterInfo(
703+
220, UINT16, UnitOfFrequency.HERTZ, 100
704+
),
705+
"vebus_microgrid_directdrive_grid_forming_voltage_setpoint": RegisterInfo(
706+
221, UINT16, UnitOfElectricPotential.VOLT, 100
707+
),
708+
"vebus_microgrid_directdrive_activate_grid_forming_parameters": RegisterInfo(
709+
222, UINT16, "", 1, entityType=ButtonWriteType()
710+
),
711+
# RESERVED 223 - 229
712+
}
713+
714+
715+
class microgrid_error(Enum):
716+
"""Microgrid error."""
717+
718+
NO_ERROR = 0
719+
DIFFERENT_FALLBAC_PARAMETER_VALUES_BETWEEN_PHASE_MASTERS = 1
720+
HYBRID_DROOP_PARAMETER_WRITE_FAILED = 2
721+
722+
723+
vebus_registers_4 = {
724+
"vebus_microgrid_heartbeat": RegisterInfo(
725+
230, UINT16, 1, entityType=ButtonWriteType()
726+
),
727+
"vebus_microgrid_error": RegisterInfo(
728+
231, UINT16, TextReadEntityType(microgrid_error)
729+
),
730+
}
731+
732+
616733
class battery_mode(Enum):
617734
"""Battery mode."""
618735

619736
OPEN = 0
620737
STANDBY = 14
621738

622739

740+
battery_registers_0 = {
741+
"battery_power_int32": RegisterInfo(256, INT32, UnitOfPower.WATT)
742+
}
743+
623744
battery_registers = {
624745
"battery_power": RegisterInfo(
625746
258, INT16, UnitOfPower.WATT, entityType=SliderWriteType("DC", True)
@@ -805,6 +926,10 @@ class battery_mode(Enum):
805926
"battery_mode": RegisterInfo(327, UINT16, entityType=SelectWriteType(battery_mode)),
806927
}
807928

929+
battery_registers_2 = {
930+
"battery_consumedamphours_uint32": RegisterInfo(330, UINT32, AMPHOURS, -1),
931+
}
932+
808933

809934
class battery_state(Enum):
810935
"""Battery state."""
@@ -1101,6 +1226,10 @@ class generic_mppoperationmode(Enum):
11011226
),
11021227
}
11031228

1229+
solarcharger_registers_2 = {
1230+
"solarcharger_yield_power_uint32": RegisterInfo(792, UINT32, UnitOfPower.WATT),
1231+
}
1232+
11041233
solarcharger_tracker_voltage_registers = {
11051234
"solarcharger_tracker_0_voltage": RegisterInfo(
11061235
3700, UINT16, UnitOfElectricPotential.VOLT, 100
@@ -1410,6 +1539,20 @@ class acinput_source(Enum):
14101539
}
14111540

14121541

1542+
class without_gridmeter_options(Enum):
1543+
"""Settings CGWACS run without grid meter options."""
1544+
1545+
EXTENRAL_METER = 0
1546+
INVERTER_CHARGER = 1
1547+
1548+
1549+
settings_cgwacs_registers_2 = {
1550+
"settings_cgwacs_run_without_gridmeter": RegisterInfo(
1551+
2718, UINT16, "", 1, SelectWriteType(without_gridmeter_options)
1552+
)
1553+
}
1554+
1555+
14131556
gps_registers = {
14141557
"gps_latitude": RegisterInfo(2800, INT32, "", 10000000),
14151558
"gps_longitude": RegisterInfo(2802, INT32, "", 10000000),
@@ -1573,9 +1716,14 @@ class tank_status(Enum):
15731716
class inverter_mode(Enum):
15741717
"""Inverter mode."""
15751718

1576-
ON = 2
1719+
CHARGER_ONLY = 1
1720+
INVERTER_ONLY = 2
1721+
ON = 3
15771722
OFF = 4
1578-
ECO = 5
1723+
LOW_POWER = 5
1724+
PASSTHROUGH = 251
1725+
STANDBY = 252
1726+
HIBERNATE = 253
15791727

15801728

15811729
inverter_info_registers = {
@@ -1870,6 +2018,16 @@ class genset_errorcode(Enum):
18702018
),
18712019
}
18722020

2021+
genset_registers_4 = {
2022+
"genset_L1_power_int32": RegisterInfo(3230, INT32, UnitOfPower.WATT),
2023+
"genset_L2_power_int32": RegisterInfo(3232, INT32, UnitOfPower.WATT),
2024+
"genset_L3_power_int32": RegisterInfo(3234, INT32, UnitOfPower.WATT),
2025+
"genset_L1_powerfactor": RegisterInfo(3236, INT16, "", 1000),
2026+
"genset_L2_powerfactor": RegisterInfo(3237, INT16, "", 1000),
2027+
"genset_L3_powerfactor": RegisterInfo(3238, INT16, "", 1000),
2028+
"genset_total_powerfactor": RegisterInfo(3239, INT16, "", 1000),
2029+
}
2030+
18732031
genset_thirdparty_registers = {
18742032
"genset_error_0": RegisterInfo(5000, STRING(16)),
18752033
"genset_error_1": RegisterInfo(5016, STRING(16)),
@@ -1892,6 +2050,10 @@ class temperature_type(Enum):
18922050
BATTERY = 0
18932051
FRIDGE = 1
18942052
GENERIC = 2
2053+
ROOM = 3
2054+
OUTDOOR = 4
2055+
WATERHEATER = 5
2056+
FREEZER = 6
18952057

18962058

18972059
class temperature_status(Enum):
@@ -1927,6 +2089,16 @@ class temperature_status(Enum):
19272089
"temperature_pressure": RegisterInfo(3308, UINT16, UnitOfPressure.HPA),
19282090
}
19292091

2092+
temperature_registers_2 = {
2093+
"temperature_co2": RegisterInfo(3309, UINT16, CONCENTRATION_PARTS_PER_MILLION, 1),
2094+
"temperature_lux": RegisterInfo(3310, UINT32, LIGHT_LUX, 1),
2095+
"temperature_nitrogen_oxides": RegisterInfo(3312, UINT16, "", 1),
2096+
"temperature_particulate_matter": RegisterInfo(
2097+
3313, UINT16, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, 1
2098+
),
2099+
"temperature_volatile_organic_compounds": RegisterInfo(3314, UINT16, "", 1),
2100+
}
2101+
19302102
pulsemeter_registers = {
19312103
"pulsemeter_aggregate": RegisterInfo(3400, UINT32, UnitOfVolume.CUBIC_METERS),
19322104
"pulsemeter_count": RegisterInfo(3402, UINT32),
@@ -2166,6 +2338,16 @@ class evcharger_status(Enum):
21662338
"acload_frequency": RegisterInfo(3922, UINT16, UnitOfFrequency.HERTZ, 100),
21672339
}
21682340

2341+
acload_registers_1 = {
2342+
"acload_L1_power_int32": RegisterInfo(3924, INT32, UnitOfPower.WATT),
2343+
"acload_L2_power_int32": RegisterInfo(3926, INT32, UnitOfPower.WATT),
2344+
"acload_L3_power_int32": RegisterInfo(3928, INT32, UnitOfPower.WATT),
2345+
"acload_L1_powerfactor": RegisterInfo(3930, INT16, "", 1000),
2346+
"acload_L2_powerfactor": RegisterInfo(3931, INT16, "", 1000),
2347+
"acload_L3_powerfactor": RegisterInfo(3932, INT16, "", 1000),
2348+
"acload_total_powerfactor": RegisterInfo(3933, INT16, "", 1000),
2349+
}
2350+
21692351
fuelcell_registers = {
21702352
"fuelcell_battery_voltage": RegisterInfo(
21712353
4000, UINT16, UnitOfElectricPotential.VOLT, 100
@@ -2958,15 +3140,33 @@ class acsystem_state(Enum):
29583140
# RESERVED 4925 - 4929
29593141
}
29603142

3143+
acsystem_registers_1 = {
3144+
"acsystem_active_soclimit": RegisterInfo(4925, UINT16, PERCENTAGE, 1),
3145+
}
3146+
29613147
acsystem_registers_2 = {
29623148
"acsystem_alarm_gridlost": RegisterInfo(
29633149
4930, UINT16, entityType=TextReadEntityType(generic_alarm_ledger)
29643150
),
29653151
"acsystem_alarm_phaserotation": RegisterInfo(
29663152
4931, UINT16, entityType=TextReadEntityType(generic_alarm_ledger)
29673153
),
3154+
# RESERVED 4932 - 4939
29683155
}
29693156

3157+
acsystem_registers_3 = {
3158+
"acsystem_input1_currentlimit": RegisterInfo(
3159+
4940, UINT16, UnitOfElectricCurrent.AMPERE, 10, SliderWriteType("AC", False)
3160+
),
3161+
"acsystem_input2_currentlimit": RegisterInfo(
3162+
4941, UINT16, UnitOfElectricCurrent.AMPERE, 10, SliderWriteType("AC", False)
3163+
),
3164+
"acsystem_gridmeter_currentlimit": RegisterInfo(
3165+
4942, UINT16, UnitOfElectricCurrent.AMPERE, 10, SliderWriteType("AC", False)
3166+
),
3167+
}
3168+
3169+
29703170
dcgenset_registers = {
29713171
"dcgenset_productid": RegisterInfo(5200, UINT16),
29723172
"dcgenset_statuscode": RegisterInfo(5201, UINT16),
@@ -3045,6 +3245,8 @@ class dynamic_ess_strategy(Enum):
30453245

30463246
TARGET_SOC = 0
30473247
SELF_CONSUMPTION = 1
3248+
PRO_BATTERY = 2
3249+
PRO_GRID = 3
30483250

30493251

30503252
system_dynamic_ess_registers = {
@@ -3115,9 +3317,35 @@ class dynamic_ess_mode(Enum):
31153317
"settings_dynamicess_schedule_starttime": RegisterInfo(
31163318
5428, INT32, UnitOfTime.SECONDS, entityType=SliderWriteType(UnitOfTime.SECONDS)
31173319
), # TODO refactor to support date and time picker and although negative is allowed this is specified as unix timestamp in the docs
3118-
# "settings_dynamicess_strategy": RegisterInfo(
3119-
# 5429, UINT16, entityType=SelectWriteType(dynamic_ess_strategy)
3120-
# ),
3320+
"settings_dynamicess_strategy": RegisterInfo(
3321+
5429, UINT16, entityType=SelectWriteType(dynamic_ess_strategy)
3322+
),
3323+
}
3324+
3325+
3326+
class heatpump_state(Enum):
3327+
"""Heatpump state."""
3328+
3329+
OFF = 0
3330+
ERROR = 1
3331+
STARTUP = 2
3332+
HEATING = 3
3333+
COOLING = 4
3334+
3335+
3336+
heatpump_registers = {
3337+
"heatpump_productid": RegisterInfo(5500, UINT16),
3338+
"heatpump_state": RegisterInfo(
3339+
5501, UINT16, entityType=TextReadEntityType(heatpump_state)
3340+
),
3341+
"heatpump_power": RegisterInfo(5502, UINT32, UnitOfPower.WATT),
3342+
"heatpump_energy_forward": RegisterInfo(
3343+
5504, UINT32, UnitOfEnergy.KILO_WATT_HOUR, 100
3344+
),
3345+
"heatpump_temperature": RegisterInfo(5506, INT16, UnitOfTemperature.CELSIUS, 10),
3346+
"heatpump_target_temperature": RegisterInfo(
3347+
5507, INT16, UnitOfTemperature.CELSIUS, 10
3348+
),
31213349
}
31223350

31233351

@@ -3168,6 +3396,11 @@ class register_input_source(Enum):
31683396
# "system_system_time_in_utc": RegisterInfo(830, UINT64, UnitOfTime.SECONDS)
31693397
# }
31703398

3399+
system_firmware_registers = {
3400+
"system_firmware_gx_major_version": RegisterInfo(834, UINT16),
3401+
"system_firmware_gx_beta_release": RegisterInfo(835, UINT16),
3402+
}
3403+
31713404

31723405
class system_battery_state(Enum):
31733406
"""Battery state."""
@@ -3245,6 +3478,29 @@ class system_battery_state(Enum):
32453478
),
32463479
}
32473480

3481+
system_pvac_registers = {
3482+
"system_pvac_pvonoutput_L1_power": RegisterInfo(884, UINT32, UnitOfPower.WATT),
3483+
"system_pvac_pvonoutput_L2_power": RegisterInfo(886, UINT32, UnitOfPower.WATT),
3484+
"system_pvac_pvonoutput_L3_power": RegisterInfo(888, UINT32, UnitOfPower.WATT),
3485+
"system_pvac_pvongrid_L1_power": RegisterInfo(890, UINT32, UnitOfPower.WATT),
3486+
"system_pvac_pvongrid_L2_power": RegisterInfo(892, UINT32, UnitOfPower.WATT),
3487+
"system_pvac_pvongrid_L3_power": RegisterInfo(894, UINT32, UnitOfPower.WATT),
3488+
"system_pvac_pvongenset_L1_power": RegisterInfo(896, UINT32, UnitOfPower.WATT),
3489+
"system_pvac_pvongenset_L2_power": RegisterInfo(898, UINT32, UnitOfPower.WATT),
3490+
"system_pvac_pvongenset_L3_power": RegisterInfo(900, UINT32, UnitOfPower.WATT),
3491+
}
3492+
3493+
system_power_registers_2 = {
3494+
"system_consumption_L1_power": RegisterInfo(902, UINT32, UnitOfPower.WATT),
3495+
"system_consumption_L2_power": RegisterInfo(904, UINT32, UnitOfPower.WATT),
3496+
"system_consumption_L3_power": RegisterInfo(906, UINT32, UnitOfPower.WATT),
3497+
"system_grid_L1_power": RegisterInfo(908, INT32, UnitOfPower.WATT),
3498+
"system_grid_L2_power": RegisterInfo(910, INT32, UnitOfPower.WATT),
3499+
"system_grid_L3_power": RegisterInfo(912, INT32, UnitOfPower.WATT),
3500+
"system_genset_L1_power": RegisterInfo(914, INT32, UnitOfPower.WATT),
3501+
"system_genset_L2_power": RegisterInfo(916, INT32, UnitOfPower.WATT),
3502+
"system_genset_L3_power": RegisterInfo(918, INT32, UnitOfPower.WATT),
3503+
}
32483504

32493505
valid_unit_ids = [
32503506
0,

0 commit comments

Comments
 (0)