42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""EB3A fields."""
|
|
|
|
from typing import List
|
|
|
|
from ..utils.commands import ReadHoldingRegisters
|
|
from ..field_enums import ChargingMode, EcoShutdown, LedMode
|
|
from ..base_devices.ProtocolV1Device import ProtocolV1Device
|
|
|
|
|
|
class EB3A(ProtocolV1Device):
|
|
def __init__(self, address: str, sn: str):
|
|
super().__init__(address, "EB3A", sn)
|
|
|
|
# Details
|
|
self.struct.add_decimal_field("ac_input_voltage", 77, 1)
|
|
self.struct.add_uint_field("internal_dc_input_voltage", 86)
|
|
|
|
# Controls
|
|
self.struct.add_enum_field("led_mode", 3034, LedMode)
|
|
self.struct.add_bool_field("power_off", 3060)
|
|
self.struct.add_bool_field("eco_on", 3063)
|
|
self.struct.add_enum_field("eco_shutdown", 3064, EcoShutdown)
|
|
self.struct.add_enum_field("charging_mode", 3065, ChargingMode)
|
|
self.struct.add_bool_field("power_lifting_on", 3066)
|
|
|
|
@property
|
|
def polling_commands(self) -> List[ReadHoldingRegisters]:
|
|
return super().polling_commands + [
|
|
ReadHoldingRegisters(77, 1),
|
|
ReadHoldingRegisters(86, 1),
|
|
ReadHoldingRegisters(3060, 1),
|
|
ReadHoldingRegisters(3063, 4),
|
|
]
|
|
|
|
@property
|
|
def writable_ranges(self) -> List[range]:
|
|
return super().writable_ranges + [
|
|
range(3034),
|
|
range(3060),
|
|
range(3063, 3066),
|
|
]
|