diff --git a/custom_components/teslemetry/const.py b/custom_components/teslemetry/const.py index 8fb2ab9..8581175 100644 --- a/custom_components/teslemetry/const.py +++ b/custom_components/teslemetry/const.py @@ -36,7 +36,10 @@ "consumer_energy_imported_from_battery", "consumer_energy_imported_from_generator", "total_home_usage", - "total_battery_discharge" + "total_battery_charge", + "total_battery_discharge", + "total_solar_generation", + "total_grid_energy_exported", ] class TeslemetryUpdateType(StrEnum): diff --git a/custom_components/teslemetry/coordinator.py b/custom_components/teslemetry/coordinator.py index 4178462..3c6cb69 100644 --- a/custom_components/teslemetry/coordinator.py +++ b/custom_components/teslemetry/coordinator.py @@ -29,7 +29,7 @@ VEHICLE_WAIT = timedelta(minutes=15) ENERGY_LIVE_INTERVAL = timedelta(seconds=30) ENERGY_INFO_INTERVAL = timedelta(seconds=30) -ENERGY_HISTORY_INTERVAL = timedelta(minutes=5) +ENERGY_HISTORY_INTERVAL = timedelta(seconds=30) ENDPOINTS = [ @@ -59,7 +59,7 @@ def __init__( super().__init__( hass, LOGGER, - name="Teslemetry Vehicle", + name=f"Teslemetry Vehicle {api.vin}", update_interval=VEHICLE_INTERVAL, ) self.api = api @@ -67,7 +67,7 @@ def __init__( self.data = flatten(product) self.last_active = datetime.now() if (self.api.pre2021): - LOGGER.info("Teslemetry will let {} sleep".format(product["vin"])) + LOGGER.info("Teslemetry will let {} sleep".format(api.vin)) async def _async_update_data(self) -> dict[str, Any]: """Update vehicle data using Teslemetry API.""" @@ -147,7 +147,7 @@ def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None: super().__init__( hass, LOGGER, - name="Teslemetry Energy Site Live", + name=f"Teslemetry Energy Site Live {api.energy_site_id}", update_interval=ENERGY_LIVE_INTERVAL, ) self.api = api @@ -197,7 +197,7 @@ def __init__(self, hass: HomeAssistant, api: EnergySpecific, product: dict) -> N super().__init__( hass, LOGGER, - name="Teslemetry Energy Site Info", + name=f"Teslemetry Energy Site Info {api.energy_site_id}", update_interval=ENERGY_INFO_INTERVAL, ) self.api = api @@ -239,7 +239,7 @@ def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None: super().__init__( hass, LOGGER, - name="Teslemetry Energy History", + name=f"Teslemetry Energy History ${api.energy_site_id}", update_interval=ENERGY_HISTORY_INTERVAL, ) self.api = api @@ -268,11 +268,8 @@ async def _async_update_data(self) -> dict[str, Any]: # Add all time periods together output = {key: 0 for key in ENERGY_HISTORY_FIELDS} - print(data) for period in data.get("time_series",[]): - print(period) for key in ENERGY_HISTORY_FIELDS: - print(key, period.get(key)) output[key] += period.get(key,0) return output diff --git a/custom_components/teslemetry/sensor.py b/custom_components/teslemetry/sensor.py index 9573f24..0bd062d 100644 --- a/custom_components/teslemetry/sensor.py +++ b/custom_components/teslemetry/sensor.py @@ -1049,12 +1049,16 @@ class TeslemetryEnergySensorEntityDescription(SensorEntityDescription): SensorEntityDescription(key="version"), ) -ENERGY_HISTORY_DESCRIPTIONS: tuple[SensorEntityDescription, ...] = ( - SensorEntityDescription( + +ENERGY_HISTORY_DESCRIPTIONS: tuple[TeslemetryEnergySensorEntityDescription, ...] = ( + TeslemetryEnergySensorEntityDescription( key=key, device_class=SensorDeviceClass.ENERGY, native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, + suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, state_class=SensorStateClass.TOTAL_INCREASING, + entity_registry_enabled_default=(key.startswith("total") or key=="grid_energy_imported"), + value_fn=lambda x: x.get(key, 0), ) for key in ENERGY_HISTORY_FIELDS ) diff --git a/custom_components/teslemetry/translations/en.json b/custom_components/teslemetry/translations/en.json index 05176ee..164ff4e 100644 --- a/custom_components/teslemetry/translations/en.json +++ b/custom_components/teslemetry/translations/en.json @@ -817,13 +817,13 @@ } }, "solar_energy_exported": { - "name": "Solar energy exported" + "name": "Solar exported" }, "generator_energy_exported": { - "name": "Generator energy exported" + "name": "Generator exported" }, "grid_energy_imported": { - "name": "Grid energy imported" + "name": "Grid imported" }, "grid_services_energy_imported": { "name": "Grid services energy imported" @@ -865,10 +865,19 @@ "name": "Consumer energy imported from generator" }, "total_home_usage": { - "name": "Total home usage" + "name": "Home usage" + }, + "total_battery_charge": { + "name": "Battery charged" }, "total_battery_discharge": { - "name": "Total battery discharge" + "name": "Battery discharged" + }, + "total_solar_generation": { + "name": "Solar generated" + }, + "total_grid_energy_exported": { + "name": "Grid exported" } }, "switch": { @@ -1095,4 +1104,4 @@ "name": "Set valet mode" } } -} +} \ No newline at end of file