added more fields

This commit is contained in:
Patrick762 committed 2023-08-01 21:20:02 +02:00
1 parent 12cd2719d2
commit cc7891ed6a
5 files changed
+57 -13

No files matched your search

+1
View File
@@ -22,3 +22,4 @@ Based on [bluetti_mqtt](https://github.com/warhammerkid/bluetti_mqtt).
### Available sensors: ### Available sensors:
All sensors which are available in bluetti_mqtt (Based on [this file](https://github.com/warhammerkid/bluetti_mqtt/blob/main/bluetti_mqtt/mqtt_client.py)) All sensors which are available in bluetti_mqtt (Based on [this file](https://github.com/warhammerkid/bluetti_mqtt/blob/main/bluetti_mqtt/mqtt_client.py))
excluding battery pack fields.
+10 -3
View File
@@ -20,10 +20,14 @@ from homeassistant.helpers.update_coordinator import (
) )
from bluetti_mqtt.bluetooth import build_device from bluetti_mqtt.bluetooth import build_device
from bluetti_mqtt.mqtt_client import NORMAL_DEVICE_FIELDS, MqttFieldType from bluetti_mqtt.mqtt_client import (
NORMAL_DEVICE_FIELDS,
DC_INPUT_FIELDS,
MqttFieldType,
)
from . import device_info as dev_info, get_unique_id from . import device_info as dev_info, get_unique_id
from .const import DOMAIN from .const import DOMAIN, ADDITIONAL_DEVICE_FIELDS
from .coordinator import PollingCoordinator from .coordinator import PollingCoordinator
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@@ -47,7 +51,10 @@ async def async_setup_entry(
bluetti_device = build_device(address, device_name) bluetti_device = build_device(address, device_name)
sensors_to_add = [] sensors_to_add = []
for field_key, field_config in NORMAL_DEVICE_FIELDS.items(): all_fields = NORMAL_DEVICE_FIELDS
all_fields.update(DC_INPUT_FIELDS)
all_fields.update(ADDITIONAL_DEVICE_FIELDS)
for field_key, field_config in all_fields.items():
if bluetti_device.has_field(field_key): if bluetti_device.has_field(field_key):
if field_config.type == MqttFieldType.BOOL: if field_config.type == MqttFieldType.BOOL:
category = None category = None
+22
View File
@@ -1,6 +1,28 @@
"""Constants for the Bluetti BT integration.""" """Constants for the Bluetti BT integration."""
from bluetti_mqtt.mqtt_client import MqttFieldConfig, MqttFieldType
DOMAIN = "bluetti_bt" DOMAIN = "bluetti_bt"
MANUFACTURER = "Bluetti" MANUFACTURER = "Bluetti"
CONF_OPTIONS = "options" CONF_OPTIONS = "options"
DIAGNOSTIC_FIELDS = [
"bcu_version",
"safety_module_version",
]
ADDITIONAL_DEVICE_FIELDS = {
"bcu_version": MqttFieldConfig(
type=MqttFieldType.NUMERIC,
setter=False,
advanced=False,
home_assistant_extra={"name": "BCU Version"},
),
"safety_module_version": MqttFieldConfig(
type=MqttFieldType.NUMERIC,
setter=False,
advanced=False,
home_assistant_extra={"name": "Safety Module Version"},
),
}
+10 -1
View File
@@ -31,7 +31,7 @@ _LOGGER = logging.getLogger(__name__)
class DummyDevice(BluettiDevice): class DummyDevice(BluettiDevice):
"""Dummy device. """Dummy device used to add more fields to existing devices.
Changes made here are only temporary and should also be Changes made here are only temporary and should also be
contributed to https://github.com/warhammerkid/bluetti_mqtt contributed to https://github.com/warhammerkid/bluetti_mqtt
@@ -45,6 +45,15 @@ class DummyDevice(BluettiDevice):
@property @property
def polling_commands(self) -> List[ReadHoldingRegisters]: def polling_commands(self) -> List[ReadHoldingRegisters]:
if self.type == "EP600":
return [
ReadHoldingRegisters(100, 62),
ReadHoldingRegisters(2022, 6),
ReadHoldingRegisters(6101, 7),
ReadHoldingRegisters(6175, 2),
ReadHoldingRegisters(6181, 2),
]
return self._parent.polling_commands return self._parent.polling_commands
@property @property
+14 -9
View File
@@ -23,10 +23,14 @@ from homeassistant.helpers.update_coordinator import (
) )
from bluetti_mqtt.bluetooth import build_device from bluetti_mqtt.bluetooth import build_device
from bluetti_mqtt.mqtt_client import NORMAL_DEVICE_FIELDS, MqttFieldType from bluetti_mqtt.mqtt_client import (
NORMAL_DEVICE_FIELDS,
DC_INPUT_FIELDS,
MqttFieldType,
)
from . import device_info as dev_info, get_unique_id from . import device_info as dev_info, get_unique_id
from .const import DOMAIN, CONF_OPTIONS from .const import DOMAIN, CONF_OPTIONS, DIAGNOSTIC_FIELDS, ADDITIONAL_DEVICE_FIELDS
from .coordinator import PollingCoordinator from .coordinator import PollingCoordinator
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@@ -50,10 +54,13 @@ async def async_setup_entry(
bluetti_device = build_device(address, device_name) bluetti_device = build_device(address, device_name)
sensors_to_add = [] sensors_to_add = []
for field_key, field_config in NORMAL_DEVICE_FIELDS.items(): all_fields = NORMAL_DEVICE_FIELDS
all_fields.update(DC_INPUT_FIELDS)
all_fields.update(ADDITIONAL_DEVICE_FIELDS)
for field_key, field_config in all_fields.items():
if bluetti_device.has_field(field_key): if bluetti_device.has_field(field_key):
category = None category = None
if field_config.setter is True: if field_config.setter is True or field_key in DIAGNOSTIC_FIELDS:
category = EntityCategory.DIAGNOSTIC category = EntityCategory.DIAGNOSTIC
if field_config.type == MqttFieldType.NUMERIC: if field_config.type == MqttFieldType.NUMERIC:
sensors_to_add.append( sensors_to_add.append(
@@ -63,11 +70,9 @@ async def async_setup_entry(
address, address,
field_key, field_key,
field_config.home_assistant_extra.get(CONF_NAME, ""), field_config.home_assistant_extra.get(CONF_NAME, ""),
field_config.home_assistant_extra.get( field_config.home_assistant_extra.get(CONF_UNIT_OF_MEASUREMENT),
CONF_UNIT_OF_MEASUREMENT, "" field_config.home_assistant_extra.get(CONF_DEVICE_CLASS),
), field_config.home_assistant_extra.get(CONF_STATE_CLASS),
field_config.home_assistant_extra.get(CONF_DEVICE_CLASS, ""),
field_config.home_assistant_extra.get(CONF_STATE_CLASS, ""),
category=category, category=category,
) )
) )