Merge pull request #119 from kvanonavk/main
AC180P Advanced Integration
This commit is contained in:
4 files changed
+60
-2
No files matched your search
@@ -1,8 +1,52 @@
|
||||
"""AC180P fields."""
|
||||
|
||||
from ..base_devices.ProtocolV2Device import ProtocolV2Device
|
||||
from typing import List
|
||||
|
||||
from ..field_enums import ChargingMode
|
||||
from ..utils.commands import ReadHoldingRegisters
|
||||
from ..base_devices.ProtocolV2Device import ProtocolV2Device
|
||||
|
||||
class AC180P(ProtocolV2Device):
|
||||
def __init__(self, address: str, sn: str):
|
||||
super().__init__(address, "AC180P", sn)
|
||||
|
||||
# Power IO
|
||||
self.struct.add_uint_field('dc_output_power', 140)
|
||||
self.struct.add_uint_field('ac_output_power', 142)
|
||||
self.struct.add_uint_field('dc_input_power', 144)
|
||||
self.struct.add_uint_field('ac_input_power', 146)
|
||||
|
||||
# Input Details (1100 - 1300)
|
||||
self.struct.add_decimal_field('ac_input_voltage', 1314, 1)
|
||||
|
||||
# Controls (2000)
|
||||
self.struct.add_bool_field('ac_output_on_switch', 2011)
|
||||
self.struct.add_bool_field('dc_output_on_switch', 2012)
|
||||
self.struct.add_bool_field('silent_charging_on', 2020) # to be able to choose between normal and silent charging modes
|
||||
self.struct.add_enum_field('charging_mode', 2020, ChargingMode) # can't be set from HA, custom switch needed
|
||||
self.struct.add_bool_field('power_lifting_on', 2021)
|
||||
|
||||
# Controls (2200)
|
||||
self.struct.add_bool_field('grid_enhancement_mode_on', 2225)
|
||||
|
||||
@property
|
||||
def polling_commands(self) -> List[ReadHoldingRegisters]:
|
||||
return super().polling_commands + [
|
||||
ReadHoldingRegisters(140, 1),
|
||||
ReadHoldingRegisters(142, 1),
|
||||
ReadHoldingRegisters(144, 1),
|
||||
ReadHoldingRegisters(146, 1),
|
||||
ReadHoldingRegisters(1314, 1),
|
||||
ReadHoldingRegisters(2011, 1),
|
||||
ReadHoldingRegisters(2012, 1),
|
||||
ReadHoldingRegisters(2020, 1),
|
||||
ReadHoldingRegisters(2021, 1),
|
||||
ReadHoldingRegisters(2225, 1),
|
||||
]
|
||||
|
||||
@property
|
||||
def writable_ranges(self) -> List[range]:
|
||||
return super().writable_ranges + [
|
||||
range(2000, 2022),
|
||||
range(2200, 2226)
|
||||
]
|
||||
@@ -316,6 +316,16 @@ FIELD_ATTRIBUTES: dict[str, FieldAttributes] = {
|
||||
setter=True,
|
||||
name="Power Lifting",
|
||||
),
|
||||
"grid_enhancement_mode_on": FieldAttributes(
|
||||
type=FieldType.BOOL,
|
||||
setter=True,
|
||||
name="Grid Enhancement Mode",
|
||||
),
|
||||
"silent_charging_on": FieldAttributes(
|
||||
type=FieldType.BOOL,
|
||||
setter=True,
|
||||
name="Silent Charging",
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ SUPPORTED_MODELS = [
|
||||
"EP500P",
|
||||
"EP600",
|
||||
"EP760",
|
||||
"AC180P",
|
||||
]
|
||||
|
||||
CONTROL_FIELDS = [
|
||||
@@ -31,6 +32,8 @@ CONTROL_FIELDS = [
|
||||
"power_off",
|
||||
"eco_on",
|
||||
"power_lifting_on",
|
||||
"grid_enhancement_mode_on",
|
||||
"silent_charging_on",
|
||||
]
|
||||
|
||||
DIAGNOSTIC_FIELDS = [
|
||||
@@ -45,4 +48,5 @@ DIAGNOSTIC_FIELDS = [
|
||||
"total_ac_consumption",
|
||||
"total_grid_consumption",
|
||||
"total_grid_feed",
|
||||
"ac_input_voltage",
|
||||
]
|
||||
Reference in new issue
Block a user