44
55from homeassistant .components .sensor import SensorStateClass
66from 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
251261class 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+
616733class 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+
623744battery_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
809934class 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+
11041233solarcharger_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+
14131556gps_registers = {
14141557 "gps_latitude" : RegisterInfo (2800 , INT32 , "" , 10000000 ),
14151558 "gps_longitude" : RegisterInfo (2802 , INT32 , "" , 10000000 ),
@@ -1573,9 +1716,14 @@ class tank_status(Enum):
15731716class 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
15811729inverter_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+
18732031genset_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
18972059class 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+
19302102pulsemeter_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+
21692351fuelcell_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+
29613147acsystem_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+
29703170dcgenset_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
30503252system_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
31723405class 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
32493505valid_unit_ids = [
32503506 0 ,
0 commit comments