Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f9afedfdb | ||
|
|
fe23dd00cd | ||
|
|
566761dba7 | ||
|
|
33cb6e6fbd | ||
|
|
5823136280 | ||
|
|
7b6f845edb | ||
|
|
1fbcf83b1b | ||
|
|
c96f551024 | ||
|
|
75209ee1aa | ||
|
|
7396616113 | ||
|
|
a7f7ff1843 | ||
|
|
cc755b3003 | ||
|
|
e5f690ef3b |
No files matched your search
@@ -20,7 +20,7 @@ After the installation, you can use this button to install the integration:
|
|||||||
- AC70 (basic data)
|
- AC70 (basic data)
|
||||||
- AC70P (untested)
|
- AC70P (untested)
|
||||||
- AC180 (basic data)
|
- AC180 (basic data)
|
||||||
- AC180P (basic data)
|
- AC180P (tested)
|
||||||
- AC200L (untested)
|
- AC200L (untested)
|
||||||
- AC200M
|
- AC200M
|
||||||
- AC300 (tested)
|
- AC300 (tested)
|
||||||
|
|||||||
@@ -1,8 +1,52 @@
|
|||||||
"""AC180P fields."""
|
"""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):
|
class AC180P(ProtocolV2Device):
|
||||||
def __init__(self, address: str, sn: str):
|
def __init__(self, address: str, sn: str):
|
||||||
super().__init__(address, "AC180P", sn)
|
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,
|
setter=True,
|
||||||
name="Power Lifting",
|
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",
|
"EP500P",
|
||||||
"EP600",
|
"EP600",
|
||||||
"EP760",
|
"EP760",
|
||||||
|
"AC180P",
|
||||||
]
|
]
|
||||||
|
|
||||||
CONTROL_FIELDS = [
|
CONTROL_FIELDS = [
|
||||||
@@ -31,6 +32,8 @@ CONTROL_FIELDS = [
|
|||||||
"power_off",
|
"power_off",
|
||||||
"eco_on",
|
"eco_on",
|
||||||
"power_lifting_on",
|
"power_lifting_on",
|
||||||
|
"grid_enhancement_mode_on",
|
||||||
|
"silent_charging_on",
|
||||||
]
|
]
|
||||||
|
|
||||||
DIAGNOSTIC_FIELDS = [
|
DIAGNOSTIC_FIELDS = [
|
||||||
@@ -45,4 +48,5 @@ DIAGNOSTIC_FIELDS = [
|
|||||||
"total_ac_consumption",
|
"total_ac_consumption",
|
||||||
"total_grid_consumption",
|
"total_grid_consumption",
|
||||||
"total_grid_feed",
|
"total_grid_feed",
|
||||||
|
"ac_input_voltage",
|
||||||
]
|
]
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
"name": "Bluetti BT",
|
"name": "Bluetti BT",
|
||||||
"bluetooth": [
|
"bluetooth": [
|
||||||
{ "local_name": "AC60*" },
|
{ "local_name": "AC60*" },
|
||||||
|
{ "local_name": "AC70*" },
|
||||||
{ "local_name": "AC180*" },
|
{ "local_name": "AC180*" },
|
||||||
{ "local_name": "AC200L*" },
|
{ "local_name": "AC200L*" },
|
||||||
{ "local_name": "AC200M*" },
|
{ "local_name": "AC200M*" },
|
||||||
@@ -23,5 +24,5 @@
|
|||||||
"iot_class": "local_polling",
|
"iot_class": "local_polling",
|
||||||
"issue_tracker": "https://github.com/Patrick762/hassio-bluetti-bt/issues",
|
"issue_tracker": "https://github.com/Patrick762/hassio-bluetti-bt/issues",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"version": "0.1.2"
|
"version": "0.1.3"
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user