From 49af9e231d65de45190c805ee2a71e8bc0e1726c Mon Sep 17 00:00:00 2001 From: tolwi Date: Wed, 10 Jan 2024 11:23:29 +0200 Subject: [PATCH] State of Health sensor for multiple devices --- README.md | 52 +++++++++++++++--- .../ecoflow_cloud/devices/delta2.py | 31 +++++------ .../ecoflow_cloud/devices/delta2_max.py | 4 +- .../ecoflow_cloud/devices/delta_max.py | 14 +++-- .../ecoflow_cloud/devices/delta_mini.py | 18 +++---- .../ecoflow_cloud/devices/delta_pro.py | 45 ++++++++-------- .../ecoflow_cloud/devices/glacier.py | 16 +++--- .../ecoflow_cloud/devices/river2.py | 18 +++---- .../ecoflow_cloud/devices/river2_max.py | 2 + .../ecoflow_cloud/devices/river2_pro.py | 19 ++++--- .../ecoflow_cloud/devices/river_max.py | 26 +++++---- .../ecoflow_cloud/devices/river_pro.py | 26 +++++---- diag/delta_pro.json | 54 ------------------- docs/devices/DELTA_2.md | 2 + docs/devices/DELTA_2_MAX.md | 29 ++++++++++ docs/devices/DELTA_MINI.md | 1 + docs/devices/DELTA_PRO.md | 3 ++ docs/devices/RIVER_2.md | 1 + docs/devices/RIVER_2_MAX.md | 1 + docs/devices/RIVER_2_PRO.md | 1 + 20 files changed, 192 insertions(+), 171 deletions(-) diff --git a/README.md b/README.md index 0888090..66d0eb5 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. ⚠️ Originally developed for personal use without a goal to cover all available device attributes ## Current state -
DELTA_2 (sensors: 43, switches: 8, sliders: 6, selects: 5) +
DELTA_2 (sensors: 45, switches: 8, sliders: 6, selects: 5)

*Sensors* @@ -21,6 +21,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Total In Power - Total Out Power @@ -50,6 +51,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Slave Design Capacity _(disabled)_ - Slave Full Capacity _(disabled)_ - Slave Remain Capacity _(disabled)_ +- Slave State of Health - Slave Battery Temperature _(auto)_ - Slave Min Cell Temperature _(disabled)_ - Slave Max Cell Temperature _(disabled)_ @@ -88,7 +90,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
RIVER_2 (sensors: 28, switches: 3, sliders: 3, selects: 5) +
RIVER_2 (sensors: 29, switches: 3, sliders: 3, selects: 5)

*Sensors* @@ -96,6 +98,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Battery Charging State - Total In Power @@ -140,7 +143,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
RIVER_2_MAX (sensors: 31, switches: 5, sliders: 4, selects: 5) +
RIVER_2_MAX (sensors: 32, switches: 5, sliders: 4, selects: 5)

*Sensors* @@ -148,6 +151,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Battery Charging State - Total In Power @@ -198,7 +202,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
RIVER_2_PRO (sensors: 29, switches: 3, sliders: 3, selects: 5) +
RIVER_2_PRO (sensors: 30, switches: 3, sliders: 3, selects: 5)

*Sensors* @@ -206,6 +210,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Battery Charging State - Total In Power @@ -251,7 +256,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
DELTA_PRO (sensors: 50, switches: 6, sliders: 6, selects: 4) +
DELTA_PRO (sensors: 53, switches: 6, sliders: 6, selects: 4)

*Sensors* @@ -259,6 +264,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Total In Power - Total Out Power @@ -294,6 +300,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Slave 1 Design Capacity _(disabled)_ - Slave 1 Full Capacity _(disabled)_ - Slave 1 Remain Capacity _(disabled)_ +- Slave 1 State of Health - Slave 1 Battery Temperature _(auto)_ - Slave 1 In Power _(auto)_ - Slave 1 Out Power _(auto)_ @@ -301,6 +308,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Slave 2 Design Capacity _(disabled)_ - Slave 2 Full Capacity _(disabled)_ - Slave 2 Remain Capacity _(disabled)_ +- Slave 2 State of Health - Slave 2 Battery Temperature _(auto)_ - Slave 2 In Power _(auto)_ - Slave 2 Out Power _(auto)_ @@ -446,7 +454,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
DELTA_MINI (sensors: 32, switches: 4, sliders: 3, selects: 4) +
DELTA_MINI (sensors: 33, switches: 4, sliders: 3, selects: 4)

*Sensors* @@ -454,6 +462,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Total In Power - Total Out Power @@ -557,7 +566,7 @@ Once installed, use Add Integration -> Ecoflow Cloud.

-
DELTA_2_MAX (sensors: 31, switches: 6, sliders: 5, selects: 3) +
DELTA_2_MAX (sensors: 60, switches: 6, sliders: 5, selects: 3)

*Sensors* @@ -565,6 +574,7 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Main Design Capacity _(disabled)_ - Main Full Capacity _(disabled)_ - Main Remain Capacity _(disabled)_ +- State of Health - Battery Level - Total In Power - Total Out Power @@ -591,6 +601,34 @@ Once installed, use Add Integration -> Ecoflow Cloud. - Battery Volts _(disabled)_ - Min Cell Volts _(disabled)_ - Max Cell Volts _(disabled)_ +- Slave 1 Battery Level _(auto)_ +- Slave 1 Design Capacity _(disabled)_ +- Slave 1 Full Capacity _(disabled)_ +- Slave 1 Remain Capacity _(disabled)_ +- Slave 1 Battery Temperature _(auto)_ +- Slave 1 Min Cell Temperature _(disabled)_ +- Slave 1 Max Cell Temperature _(disabled)_ +- Slave 1 Battery Volts _(disabled)_ +- Slave 1 Min Cell Volts _(disabled)_ +- Slave 1 Max Cell Volts _(disabled)_ +- Slave 1 Cycles _(auto)_ +- Slave 1 State of Health _(auto)_ +- Slave 1 In Power _(auto)_ +- Slave 1 Out Power _(auto)_ +- Slave 2 Battery Level _(auto)_ +- Slave 2 Design Capacity _(disabled)_ +- Slave 2 Full Capacity _(disabled)_ +- Slave 2 Remain Capacity _(disabled)_ +- Slave 2 Battery Temperature _(auto)_ +- Slave 2 Min Cell Temperature _(disabled)_ +- Slave 2 Max Cell Temperature _(disabled)_ +- Slave 2 Battery Volts _(disabled)_ +- Slave 2 Min Cell Volts _(disabled)_ +- Slave 2 Max Cell Volts _(disabled)_ +- Slave 2 Cycles _(auto)_ +- Slave 2 State of Health _(auto)_ +- Slave 2 In Power _(auto)_ +- Slave 2 Out Power _(auto)_ - Status *Switches* diff --git a/custom_components/ecoflow_cloud/devices/delta2.py b/custom_components/ecoflow_cloud/devices/delta2.py index cb1f73d..353b163 100644 --- a/custom_components/ecoflow_cloud/devices/delta2.py +++ b/custom_components/ecoflow_cloud/devices/delta2.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY, SLAVE_DESIGN_CAPACITY, SLAVE_FULL_CAPACITY, SLAVE_REMAIN_CAPACITY from .. import EcoflowMQTTClient from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..number import ChargingPowerEntity, MinBatteryLevelEntity, MaxBatteryLevelEntity, \ @@ -18,12 +16,14 @@ class Delta2(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bms_bmsStatus.soc", const.MAIN_BATTERY_LEVEL) - .attr("bms_bmsStatus.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bms_bmsStatus.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bms_bmsStatus.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bms_bmsStatus.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bms_bmsStatus.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bms_bmsStatus.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bms_bmsStatus.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bms_bmsStatus.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.remainCap", const.MAIN_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bms_bmsStatus.soh", const.SOH), LevelSensorEntity(client, "bms_emsStatus.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), InWattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), @@ -72,13 +72,14 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: # Optional Slave Battery LevelSensorEntity(client, "bms_slave.soc", const.SLAVE_BATTERY_LEVEL, False, True) - .attr("bms_slave.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bms_slave.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bms_slave.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bms_slave.designCap", SLAVE_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bms_slave.fullCap", SLAVE_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bms_slave.remainCap", SLAVE_REMAIN_CAPACITY, False), - + .attr("bms_slave.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bms_slave.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bms_slave.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bms_slave.designCap", const.SLAVE_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bms_slave.fullCap", const.SLAVE_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bms_slave.remainCap", const.SLAVE_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bms_slave.soh", const.SLAVE_SOH), TempSensorEntity(client, "bms_slave.temp", const.SLAVE_BATTERY_TEMP, False, True) .attr("bms_slave.minCellTemp", const.ATTR_MIN_CELL_TEMP, 0) .attr("bms_slave.maxCellTemp", const.ATTR_MAX_CELL_TEMP, 0), diff --git a/custom_components/ecoflow_cloud/devices/delta2_max.py b/custom_components/ecoflow_cloud/devices/delta2_max.py index 7570fb5..19f0362 100644 --- a/custom_components/ecoflow_cloud/devices/delta2_max.py +++ b/custom_components/ecoflow_cloud/devices/delta2_max.py @@ -23,6 +23,8 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: CapacitySensorEntity(client, "bms_bmsStatus.fullCap", const.MAIN_FULL_CAPACITY, False), CapacitySensorEntity(client, "bms_bmsStatus.remainCap", const.MAIN_REMAIN_CAPACITY, False), + LevelSensorEntity(client, "bms_bmsStatus.soh", const.SOH), + LevelSensorEntity(client, "bms_emsStatus.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), InWattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), @@ -103,7 +105,7 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: CapacitySensorEntity(client, "bms_slave_bmsSlaveStatus_2.fullCap", const.SLAVE_N_FULL_CAPACITY % 2, False), CapacitySensorEntity(client, "bms_slave_bmsSlaveStatus_2.remainCap", const.SLAVE_N_REMAIN_CAPACITY % 2, False), - TempSensorEntity(client, "bms_slave_bmsSlaveStatus_2.temp", const.SLAVE_N_BATTERY_TEMP % 2, False, True) + TempSensorEntity(client, "bms_slave_bmsSlaveStatus_2.temp", const.SLAVE_N_BATTERY_TEMP % 2, False, True) .attr("bms_slave_bmsSlaveStatus_2.minCellTemp", const.ATTR_MIN_CELL_TEMP, 0) .attr("bms_slave_bmsSlaveStatus_2.maxCellTemp", const.ATTR_MAX_CELL_TEMP, 0), TempSensorEntity(client, "bms_slave_bmsSlaveStatus_2.minCellTemp", const.SLAVE_N_MIN_CELL_TEMP % 2, False), diff --git a/custom_components/ecoflow_cloud/devices/delta_max.py b/custom_components/ecoflow_cloud/devices/delta_max.py index 46bb11e..c509374 100644 --- a/custom_components/ecoflow_cloud/devices/delta_max.py +++ b/custom_components/ecoflow_cloud/devices/delta_max.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY from .. import EcoflowMQTTClient from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..number import ChargingPowerEntity, MinBatteryLevelEntity, MaxBatteryLevelEntity, \ @@ -18,12 +16,12 @@ class DeltaMax(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bmsMaster.soc", const.MAIN_BATTERY_LEVEL) - .attr("bmsMaster.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsMaster.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsMaster.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsMaster.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bmsMaster.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsMaster.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsMaster.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsMaster.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.remainCap", const.MAIN_REMAIN_CAPACITY, False), LevelSensorEntity(client, "ems.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), InWattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), diff --git a/custom_components/ecoflow_cloud/devices/delta_mini.py b/custom_components/ecoflow_cloud/devices/delta_mini.py index b13e3bb..c2f548a 100644 --- a/custom_components/ecoflow_cloud/devices/delta_mini.py +++ b/custom_components/ecoflow_cloud/devices/delta_mini.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import ChargingPowerEntity, MaxBatteryLevelEntity, MinBatteryLevelEntity @@ -18,12 +16,15 @@ class DeltaMini(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bmsMaster.soc", const.MAIN_BATTERY_LEVEL) - .attr("bmsMaster.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsMaster.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsMaster.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsMaster.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bmsMaster.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsMaster.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsMaster.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsMaster.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.remainCap", const.MAIN_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bmsMaster.soh", const.SOH), + LevelSensorEntity(client, "ems.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), WattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), @@ -38,7 +39,6 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: InWattsSolarSensorEntity(client, "mppt.inWatts", const.SOLAR_IN_POWER), OutWattsDcSensorEntity(client, "mppt.outWatts", const.DC_OUT_POWER), - # OutWattsSensorEntity(client, "pd.carWatts", const.DC_OUT_POWER), OutWattsSensorEntity(client, "mppt.carOutWatts", const.DC_CAR_OUT_POWER), OutWattsSensorEntity(client, "mppt.dcdc12vWatts", const.DC_ANDERSON_OUT_POWER), diff --git a/custom_components/ecoflow_cloud/devices/delta_pro.py b/custom_components/ecoflow_cloud/devices/delta_pro.py index 0fe5dc9..3cda8c1 100644 --- a/custom_components/ecoflow_cloud/devices/delta_pro.py +++ b/custom_components/ecoflow_cloud/devices/delta_pro.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY, SLAVE_N_DESIGN_CAPACITY, SLAVE_N_FULL_CAPACITY, SLAVE_N_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import ChargingPowerEntity, MaxBatteryLevelEntity, MinBatteryLevelEntity, MinGenStartLevelEntity, \ @@ -19,12 +17,14 @@ class DeltaPro(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bmsMaster.soc", const.MAIN_BATTERY_LEVEL) - .attr("bmsMaster.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsMaster.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsMaster.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsMaster.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bmsMaster.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsMaster.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsMaster.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsMaster.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.remainCap", const.MAIN_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bmsMaster.soh", const.SOH), LevelSensorEntity(client, "ems.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), @@ -40,7 +40,6 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: InWattsSolarSensorEntity(client, "mppt.inWatts", const.SOLAR_IN_POWER), OutWattsDcSensorEntity(client, "mppt.outWatts", const.DC_OUT_POWER), - # OutWattsSensorEntity(client, "pd.carWatts", const.DC_OUT_POWER), OutWattsSensorEntity(client, "mppt.carOutWatts", const.DC_CAR_OUT_POWER), OutWattsSensorEntity(client, "mppt.dcdc12vWatts", const.DC_ANDERSON_OUT_POWER), @@ -79,12 +78,14 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: # Optional Slave Batteries LevelSensorEntity(client, "bmsSlave1.soc", const.SLAVE_N_BATTERY_LEVEL % 1, False, True) - .attr("bmsSlave1.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsSlave1.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsSlave1.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsSlave1.designCap", SLAVE_N_DESIGN_CAPACITY % 1, False), - CapacitySensorEntity(client, "bmsSlave1.fullCap", SLAVE_N_FULL_CAPACITY % 1, False), - CapacitySensorEntity(client, "bmsSlave1.remainCap", SLAVE_N_REMAIN_CAPACITY % 1, False), + .attr("bmsSlave1.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsSlave1.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsSlave1.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsSlave1.designCap", const.SLAVE_N_DESIGN_CAPACITY % 1, False), + CapacitySensorEntity(client, "bmsSlave1.fullCap", const.SLAVE_N_FULL_CAPACITY % 1, False), + CapacitySensorEntity(client, "bmsSlave1.remainCap", const.SLAVE_N_REMAIN_CAPACITY % 1, False), + + LevelSensorEntity(client, "bmsSlave1.soh", const.SLAVE_N_SOH % 1), TempSensorEntity(client, "bmsSlave1.temp", const.SLAVE_N_BATTERY_TEMP % 1, False, True) .attr("bmsSlave1.minCellTemp", const.ATTR_MIN_CELL_TEMP, 0) @@ -93,12 +94,14 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: WattsSensorEntity(client, "bmsSlave1.outputWatts", const.SLAVE_N_OUT_POWER % 1, False, True), LevelSensorEntity(client, "bmsSlave2.soc", const.SLAVE_N_BATTERY_LEVEL % 2, False, True) - .attr("bmsSlave2.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsSlave2.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsSlave2.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsSlave2.designCap", SLAVE_N_DESIGN_CAPACITY % 2, False), - CapacitySensorEntity(client, "bmsSlave2.fullCap", SLAVE_N_FULL_CAPACITY % 2, False), - CapacitySensorEntity(client, "bmsSlave2.remainCap", SLAVE_N_REMAIN_CAPACITY % 2, False), + .attr("bmsSlave2.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsSlave2.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsSlave2.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsSlave2.designCap", const.SLAVE_N_DESIGN_CAPACITY % 2, False), + CapacitySensorEntity(client, "bmsSlave2.fullCap", const.SLAVE_N_FULL_CAPACITY % 2, False), + CapacitySensorEntity(client, "bmsSlave2.remainCap", const.SLAVE_N_REMAIN_CAPACITY % 2, False), + + LevelSensorEntity(client, "bmsSlave2.soh", const.SLAVE_N_SOH % 2), TempSensorEntity(client, "bmsSlave2.temp", const.SLAVE_N_BATTERY_TEMP % 2, False, True) .attr("bmsSlave2.minCellTemp", const.ATTR_MIN_CELL_TEMP, 0) diff --git a/custom_components/ecoflow_cloud/devices/glacier.py b/custom_components/ecoflow_cloud/devices/glacier.py index c8d8d49..1c906c5 100644 --- a/custom_components/ecoflow_cloud/devices/glacier.py +++ b/custom_components/ecoflow_cloud/devices/glacier.py @@ -1,6 +1,4 @@ from . import const, BaseDevice -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, BATTERY_CHARGING_STATE, \ - MAIN_DESIGN_CAPACITY, MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY from ..button import EnabledButtonEntity from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity, BaseButtonEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient @@ -20,16 +18,16 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ # Power and Battery Entities LevelSensorEntity(client, "bms_bmsStatus.soc", const.MAIN_BATTERY_LEVEL) - .attr("bms_bmsStatus.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bms_bmsStatus.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bms_bmsStatus.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bms_bmsStatus.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bms_bmsStatus.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bms_bmsStatus.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bms_bmsStatus.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bms_bmsStatus.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.remainCap", const.MAIN_REMAIN_CAPACITY, False), LevelSensorEntity(client, "bms_emsStatus.f32LcdSoc", const.COMBINED_BATTERY_LEVEL), - ChargingStateSensorEntity(client, "bms_emsStatus.chgState", BATTERY_CHARGING_STATE), + ChargingStateSensorEntity(client, "bms_emsStatus.chgState", const.BATTERY_CHARGING_STATE), InWattsSensorEntity(client, "bms_bmsStatus.inWatts", const.TOTAL_IN_POWER), OutWattsSensorEntity(client, "bms_bmsStatus.outWatts", const.TOTAL_OUT_POWER), diff --git a/custom_components/ecoflow_cloud/devices/river2.py b/custom_components/ecoflow_cloud/devices/river2.py index bed71d6..314248b 100644 --- a/custom_components/ecoflow_cloud/devices/river2.py +++ b/custom_components/ecoflow_cloud/devices/river2.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, BATTERY_CHARGING_STATE, \ - MAIN_DESIGN_CAPACITY, MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import ChargingPowerEntity, MaxBatteryLevelEntity, MinBatteryLevelEntity @@ -21,16 +19,18 @@ def charging_power_step(self) -> int: def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bms_bmsStatus.soc", const.MAIN_BATTERY_LEVEL) - .attr("bms_bmsStatus.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bms_bmsStatus.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bms_bmsStatus.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bms_bmsStatus.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bms_bmsStatus.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bms_bmsStatus.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bms_bmsStatus.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bms_bmsStatus.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.remainCap", const.MAIN_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bms_bmsStatus.soh", const.SOH), LevelSensorEntity(client, "bms_emsStatus.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), - ChargingStateSensorEntity(client, "bms_emsStatus.chgState", BATTERY_CHARGING_STATE), + ChargingStateSensorEntity(client, "bms_emsStatus.chgState", const.BATTERY_CHARGING_STATE), InWattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), OutWattsSensorEntity(client, "pd.wattsOutSum", const.TOTAL_OUT_POWER), diff --git a/custom_components/ecoflow_cloud/devices/river2_max.py b/custom_components/ecoflow_cloud/devices/river2_max.py index 0a213c6..3841b6b 100644 --- a/custom_components/ecoflow_cloud/devices/river2_max.py +++ b/custom_components/ecoflow_cloud/devices/river2_max.py @@ -29,6 +29,8 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: CapacitySensorEntity(client, "bms_bmsStatus.fullCap", MAIN_FULL_CAPACITY, False), CapacitySensorEntity(client, "bms_bmsStatus.remainCap", MAIN_REMAIN_CAPACITY, False), + LevelSensorEntity(client, "bms_bmsStatus.soh", const.SOH), + LevelSensorEntity(client, "bms_emsStatus.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), ChargingStateSensorEntity(client, "bms_emsStatus.chgState", BATTERY_CHARGING_STATE), diff --git a/custom_components/ecoflow_cloud/devices/river2_pro.py b/custom_components/ecoflow_cloud/devices/river2_pro.py index f53c927..edab011 100644 --- a/custom_components/ecoflow_cloud/devices/river2_pro.py +++ b/custom_components/ecoflow_cloud/devices/river2_pro.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, BATTERY_CHARGING_STATE, \ - MAIN_DESIGN_CAPACITY, MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import ChargingPowerEntity, MaxBatteryLevelEntity, MinBatteryLevelEntity @@ -22,16 +20,17 @@ def charging_power_step(self) -> int: def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bms_bmsStatus.soc", const.MAIN_BATTERY_LEVEL) - .attr("bms_bmsStatus.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bms_bmsStatus.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bms_bmsStatus.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bms_bmsStatus.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bms_bmsStatus.remainCap", MAIN_REMAIN_CAPACITY, False), - + .attr("bms_bmsStatus.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bms_bmsStatus.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bms_bmsStatus.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bms_bmsStatus.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bms_bmsStatus.remainCap", const.MAIN_REMAIN_CAPACITY, False), + + LevelSensorEntity(client, "bms_bmsStatus.soh", const.SOH), LevelSensorEntity(client, "bms_emsStatus.lcdShowSoc", const.COMBINED_BATTERY_LEVEL), - ChargingStateSensorEntity(client, "bms_emsStatus.chgState", BATTERY_CHARGING_STATE), + ChargingStateSensorEntity(client, "bms_emsStatus.chgState", const.BATTERY_CHARGING_STATE), InWattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), OutWattsSensorEntity(client, "pd.wattsOutSum", const.TOTAL_OUT_POWER), diff --git a/custom_components/ecoflow_cloud/devices/river_max.py b/custom_components/ecoflow_cloud/devices/river_max.py index e9c241c..aa6a779 100644 --- a/custom_components/ecoflow_cloud/devices/river_max.py +++ b/custom_components/ecoflow_cloud/devices/river_max.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, MigrationAction, EntityMigration -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY, SLAVE_DESIGN_CAPACITY, SLAVE_FULL_CAPACITY, SLAVE_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import MaxBatteryLevelEntity @@ -18,12 +16,12 @@ class RiverMax(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bmsMaster.soc", const.MAIN_BATTERY_LEVEL) - .attr("bmsMaster.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsMaster.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsMaster.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsMaster.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bmsMaster.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsMaster.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsMaster.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsMaster.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.remainCap", const.MAIN_REMAIN_CAPACITY, False), WattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), WattsSensorEntity(client, "pd.wattsOutSum", const.TOTAL_OUT_POWER), @@ -65,12 +63,12 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: OutEnergySensorEntity(client, "pd.dsgPowerDC", const.DISCHARGE_DC_ENERGY), LevelSensorEntity(client, "bmsSlave1.soc", const.SLAVE_BATTERY_LEVEL, False, True) - .attr("bmsSlave1.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsSlave1.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsSlave1.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsSlave1.designCap", SLAVE_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsSlave1.fullCap", SLAVE_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsSlave1.remainCap", SLAVE_REMAIN_CAPACITY, False), + .attr("bmsSlave1.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsSlave1.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsSlave1.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsSlave1.designCap", const.SLAVE_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsSlave1.fullCap", const.SLAVE_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsSlave1.remainCap", const.SLAVE_REMAIN_CAPACITY, False), TempSensorEntity(client, "bmsSlave1.temp", const.SLAVE_BATTERY_TEMP, False, True) .attr("bmsSlave1.minCellTemp", const.ATTR_MIN_CELL_TEMP, 0) diff --git a/custom_components/ecoflow_cloud/devices/river_pro.py b/custom_components/ecoflow_cloud/devices/river_pro.py index da2a7c6..4f1b448 100644 --- a/custom_components/ecoflow_cloud/devices/river_pro.py +++ b/custom_components/ecoflow_cloud/devices/river_pro.py @@ -1,8 +1,6 @@ from homeassistant.const import Platform from . import const, BaseDevice, EntityMigration, MigrationAction -from .const import ATTR_DESIGN_CAPACITY, ATTR_FULL_CAPACITY, ATTR_REMAIN_CAPACITY, MAIN_DESIGN_CAPACITY, \ - MAIN_FULL_CAPACITY, MAIN_REMAIN_CAPACITY, SLAVE_DESIGN_CAPACITY, SLAVE_FULL_CAPACITY, SLAVE_REMAIN_CAPACITY from ..entities import BaseSensorEntity, BaseNumberEntity, BaseSwitchEntity, BaseSelectEntity from ..mqtt.ecoflow_mqtt import EcoflowMQTTClient from ..number import MaxBatteryLevelEntity @@ -18,12 +16,12 @@ class RiverPro(BaseDevice): def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: return [ LevelSensorEntity(client, "bmsMaster.soc", const.MAIN_BATTERY_LEVEL) - .attr("bmsMaster.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsMaster.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsMaster.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsMaster.designCap", MAIN_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.fullCap", MAIN_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsMaster.remainCap", MAIN_REMAIN_CAPACITY, False), + .attr("bmsMaster.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsMaster.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsMaster.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsMaster.designCap", const.MAIN_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.fullCap", const.MAIN_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsMaster.remainCap", const.MAIN_REMAIN_CAPACITY, False), WattsSensorEntity(client, "pd.wattsInSum", const.TOTAL_IN_POWER), WattsSensorEntity(client, "pd.wattsOutSum", const.TOTAL_OUT_POWER), @@ -64,12 +62,12 @@ def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]: # Optional Slave Batteries LevelSensorEntity(client, "bmsSlave1.soc", const.SLAVE_BATTERY_LEVEL, False, True) - .attr("bmsSlave1.designCap", ATTR_DESIGN_CAPACITY, 0) - .attr("bmsSlave1.fullCap", ATTR_FULL_CAPACITY, 0) - .attr("bmsSlave1.remainCap", ATTR_REMAIN_CAPACITY, 0), - CapacitySensorEntity(client, "bmsSlave1.designCap", SLAVE_DESIGN_CAPACITY, False), - CapacitySensorEntity(client, "bmsSlave1.fullCap", SLAVE_FULL_CAPACITY, False), - CapacitySensorEntity(client, "bmsSlave1.remainCap", SLAVE_REMAIN_CAPACITY, False), + .attr("bmsSlave1.designCap", const.ATTR_DESIGN_CAPACITY, 0) + .attr("bmsSlave1.fullCap", const.ATTR_FULL_CAPACITY, 0) + .attr("bmsSlave1.remainCap", const.ATTR_REMAIN_CAPACITY, 0), + CapacitySensorEntity(client, "bmsSlave1.designCap", const.SLAVE_DESIGN_CAPACITY, False), + CapacitySensorEntity(client, "bmsSlave1.fullCap", const.SLAVE_FULL_CAPACITY, False), + CapacitySensorEntity(client, "bmsSlave1.remainCap", const.SLAVE_REMAIN_CAPACITY, False), CyclesSensorEntity(client, "bmsSlave1.cycles", const.SLAVE_CYCLES, False, True), TempSensorEntity(client, "bmsSlave1.temp", const.SLAVE_BATTERY_TEMP, False, True) diff --git a/diag/delta_pro.json b/diag/delta_pro.json index b3d34cf..fe0cf1d 100644 --- a/diag/delta_pro.json +++ b/diag/delta_pro.json @@ -1,58 +1,4 @@ { - "home_assistant": { - "installation_type": "Home Assistant OS", - "version": "2023.2.1", - "dev": false, - "hassio": true, - "virtualenv": false, - "python_version": "3.10.7", - "docker": true, - "arch": "aarch64", - "timezone": "Europe/Berlin", - "os_name": "Linux", - "os_version": "5.15.84-v8", - "supervisor": "2023.01.1", - "host_os": "Home Assistant OS 9.5", - "docker_version": "20.10.22", - "chassis": "embedded", - "run_as_root": true - }, - "custom_components": { - "loxone": { - "version": "0.4.1", - "requirements": [ - "websockets", - "pycryptodome", - "numpy" - ] - }, - "skodaconnect": { - "version": "v1.2.3", - "requirements": [ - "skodaconnect>=1.3.4", - "homeassistant>=2022.12.0" - ] - }, - "hacs": { - "version": "1.30.1", - "requirements": [ - "aiogithubapi>=22.10.1" - ] - }, - "ecoflow_cloud": { - "version": "0.7.0", - "requirements": [ - "paho-mqtt==1.6.1", - "reactivex==4.0.4" - ] - }, - "ecoflow": { - "version": "3.0.0", - "requirements": [ - "reactivex" - ] - } - }, "integration_manifest": { "domain": "ecoflow_cloud", "name": "Ecoflow-Cloud", diff --git a/docs/devices/DELTA_2.md b/docs/devices/DELTA_2.md index 38c9029..fe75800 100644 --- a/docs/devices/DELTA_2.md +++ b/docs/devices/DELTA_2.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bms_bmsStatus.designCap`) _(disabled)_ - Main Full Capacity (`bms_bmsStatus.fullCap`) _(disabled)_ - Main Remain Capacity (`bms_bmsStatus.remainCap`) _(disabled)_ +- State of Health (`bms_bmsStatus.soh`) - Battery Level (`bms_emsStatus.lcdShowSoc`) - Total In Power (`pd.wattsInSum`) - Total Out Power (`pd.wattsOutSum`) @@ -34,6 +35,7 @@ - Slave Design Capacity (`bms_slave.designCap`) _(disabled)_ - Slave Full Capacity (`bms_slave.fullCap`) _(disabled)_ - Slave Remain Capacity (`bms_slave.remainCap`) _(disabled)_ +- Slave State of Health (`bms_slave.soh`) - Slave Battery Temperature (`bms_slave.temp`) _(auto)_ - Slave Min Cell Temperature (`bms_slave.minCellTemp`) _(disabled)_ - Slave Max Cell Temperature (`bms_slave.maxCellTemp`) _(disabled)_ diff --git a/docs/devices/DELTA_2_MAX.md b/docs/devices/DELTA_2_MAX.md index 72028e1..a0ab9ed 100644 --- a/docs/devices/DELTA_2_MAX.md +++ b/docs/devices/DELTA_2_MAX.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bms_bmsStatus.designCap`) _(disabled)_ - Main Full Capacity (`bms_bmsStatus.fullCap`) _(disabled)_ - Main Remain Capacity (`bms_bmsStatus.remainCap`) _(disabled)_ +- State of Health (`bms_bmsStatus.soh`) - Battery Level (`bms_emsStatus.lcdShowSoc`) - Total In Power (`pd.wattsInSum`) - Total Out Power (`pd.wattsOutSum`) @@ -31,6 +32,34 @@ - Battery Volts (`bms_bmsStatus.vol`) _(disabled)_ - Min Cell Volts (`bms_bmsStatus.minCellVol`) _(disabled)_ - Max Cell Volts (`bms_bmsStatus.maxCellVol`) _(disabled)_ +- Slave 1 Battery Level (`bms_slave_bmsSlaveStatus_1.soc`) _(auto)_ +- Slave 1 Design Capacity (`bms_slave_bmsSlaveStatus_1.designCap`) _(disabled)_ +- Slave 1 Full Capacity (`bms_slave_bmsSlaveStatus_1.fullCap`) _(disabled)_ +- Slave 1 Remain Capacity (`bms_slave_bmsSlaveStatus_1.remainCap`) _(disabled)_ +- Slave 1 Battery Temperature (`bms_slave_bmsSlaveStatus_1.temp`) _(auto)_ +- Slave 1 Min Cell Temperature (`bms_slave_bmsSlaveStatus_1.minCellTemp`) _(disabled)_ +- Slave 1 Max Cell Temperature (`bms_slave_bmsSlaveStatus_1.maxCellTemp`) _(disabled)_ +- Slave 1 Battery Volts (`bms_slave_bmsSlaveStatus_1.vol`) _(disabled)_ +- Slave 1 Min Cell Volts (`bms_slave_bmsSlaveStatus_1.minCellVol`) _(disabled)_ +- Slave 1 Max Cell Volts (`bms_slave_bmsSlaveStatus_1.maxCellVol`) _(disabled)_ +- Slave 1 Cycles (`bms_slave_bmsSlaveStatus_1.cycles`) _(auto)_ +- Slave 1 State of Health (`bms_slave_bmsSlaveStatus_1.soh`) _(auto)_ +- Slave 1 In Power (`bms_slave_bmsSlaveStatus_1.inputWatts`) _(auto)_ +- Slave 1 Out Power (`bms_slave_bmsSlaveStatus_1.outputWatts`) _(auto)_ +- Slave 2 Battery Level (`bms_slave_bmsSlaveStatus_2.soc`) _(auto)_ +- Slave 2 Design Capacity (`bms_slave_bmsSlaveStatus_2.designCap`) _(disabled)_ +- Slave 2 Full Capacity (`bms_slave_bmsSlaveStatus_2.fullCap`) _(disabled)_ +- Slave 2 Remain Capacity (`bms_slave_bmsSlaveStatus_2.remainCap`) _(disabled)_ +- Slave 2 Battery Temperature (`bms_slave_bmsSlaveStatus_2.temp`) _(auto)_ +- Slave 2 Min Cell Temperature (`bms_slave_bmsSlaveStatus_2.minCellTemp`) _(disabled)_ +- Slave 2 Max Cell Temperature (`bms_slave_bmsSlaveStatus_2.maxCellTemp`) _(disabled)_ +- Slave 2 Battery Volts (`bms_slave_bmsSlaveStatus_2.vol`) _(disabled)_ +- Slave 2 Min Cell Volts (`bms_slave_bmsSlaveStatus_2.minCellVol`) _(disabled)_ +- Slave 2 Max Cell Volts (`bms_slave_bmsSlaveStatus_2.maxCellVol`) _(disabled)_ +- Slave 2 Cycles (`bms_slave_bmsSlaveStatus_2.cycles`) _(auto)_ +- Slave 2 State of Health (`bms_slave_bmsSlaveStatus_2.soh`) _(auto)_ +- Slave 2 In Power (`bms_slave_bmsSlaveStatus_2.inputWatts`) _(auto)_ +- Slave 2 Out Power (`bms_slave_bmsSlaveStatus_2.outputWatts`) _(auto)_ - Status *Switches* diff --git a/docs/devices/DELTA_MINI.md b/docs/devices/DELTA_MINI.md index 6c35f42..7f1a4bc 100644 --- a/docs/devices/DELTA_MINI.md +++ b/docs/devices/DELTA_MINI.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bmsMaster.designCap`) _(disabled)_ - Main Full Capacity (`bmsMaster.fullCap`) _(disabled)_ - Main Remain Capacity (`bmsMaster.remainCap`) _(disabled)_ +- State of Health (`bmsMaster.soh`) - Battery Level (`ems.lcdShowSoc`) - Total In Power (`pd.wattsInSum`) - Total Out Power (`pd.wattsOutSum`) diff --git a/docs/devices/DELTA_PRO.md b/docs/devices/DELTA_PRO.md index e2fdb4c..3eda79a 100644 --- a/docs/devices/DELTA_PRO.md +++ b/docs/devices/DELTA_PRO.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bmsMaster.designCap`) _(disabled)_ - Main Full Capacity (`bmsMaster.fullCap`) _(disabled)_ - Main Remain Capacity (`bmsMaster.remainCap`) _(disabled)_ +- State of Health (`bmsMaster.soh`) - Battery Level (`ems.lcdShowSoc`) - Total In Power (`pd.wattsInSum`) - Total Out Power (`pd.wattsOutSum`) @@ -40,6 +41,7 @@ - Slave 1 Design Capacity (`bmsSlave1.designCap`) _(disabled)_ - Slave 1 Full Capacity (`bmsSlave1.fullCap`) _(disabled)_ - Slave 1 Remain Capacity (`bmsSlave1.remainCap`) _(disabled)_ +- Slave 1 State of Health (`bmsSlave1.soh`) - Slave 1 Battery Temperature (`bmsSlave1.temp`) _(auto)_ - Slave 1 In Power (`bmsSlave1.inputWatts`) _(auto)_ - Slave 1 Out Power (`bmsSlave1.outputWatts`) _(auto)_ @@ -47,6 +49,7 @@ - Slave 2 Design Capacity (`bmsSlave2.designCap`) _(disabled)_ - Slave 2 Full Capacity (`bmsSlave2.fullCap`) _(disabled)_ - Slave 2 Remain Capacity (`bmsSlave2.remainCap`) _(disabled)_ +- Slave 2 State of Health (`bmsSlave2.soh`) - Slave 2 Battery Temperature (`bmsSlave2.temp`) _(auto)_ - Slave 2 In Power (`bmsSlave2.inputWatts`) _(auto)_ - Slave 2 Out Power (`bmsSlave2.outputWatts`) _(auto)_ diff --git a/docs/devices/RIVER_2.md b/docs/devices/RIVER_2.md index d678807..7303150 100644 --- a/docs/devices/RIVER_2.md +++ b/docs/devices/RIVER_2.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bms_bmsStatus.designCap`) _(disabled)_ - Main Full Capacity (`bms_bmsStatus.fullCap`) _(disabled)_ - Main Remain Capacity (`bms_bmsStatus.remainCap`) _(disabled)_ +- State of Health (`bms_bmsStatus.soh`) - Battery Level (`bms_emsStatus.lcdShowSoc`) - Battery Charging State (`bms_emsStatus.chgState`) - Total In Power (`pd.wattsInSum`) diff --git a/docs/devices/RIVER_2_MAX.md b/docs/devices/RIVER_2_MAX.md index ab3c2ae..805f086 100644 --- a/docs/devices/RIVER_2_MAX.md +++ b/docs/devices/RIVER_2_MAX.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bms_bmsStatus.designCap`) _(disabled)_ - Main Full Capacity (`bms_bmsStatus.fullCap`) _(disabled)_ - Main Remain Capacity (`bms_bmsStatus.remainCap`) _(disabled)_ +- State of Health (`bms_bmsStatus.soh`) - Battery Level (`bms_emsStatus.lcdShowSoc`) - Battery Charging State (`bms_emsStatus.chgState`) - Total In Power (`pd.wattsInSum`) diff --git a/docs/devices/RIVER_2_PRO.md b/docs/devices/RIVER_2_PRO.md index 34dfe90..fc23655 100644 --- a/docs/devices/RIVER_2_PRO.md +++ b/docs/devices/RIVER_2_PRO.md @@ -5,6 +5,7 @@ - Main Design Capacity (`bms_bmsStatus.designCap`) _(disabled)_ - Main Full Capacity (`bms_bmsStatus.fullCap`) _(disabled)_ - Main Remain Capacity (`bms_bmsStatus.remainCap`) _(disabled)_ +- State of Health (`bms_bmsStatus.soh`) - Battery Level (`bms_emsStatus.lcdShowSoc`) - Battery Charging State (`bms_emsStatus.chgState`) - Total In Power (`pd.wattsInSum`)