mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Clean up forecast_solar const file (#95356)
This commit is contained in:
parent
d8e73b6a6b
commit
f61332c9b4
@ -1,14 +1,8 @@
|
|||||||
"""Constants for the Forecast.Solar integration."""
|
"""Constants for the Forecast.Solar integration."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import timedelta
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass
|
|
||||||
from homeassistant.const import UnitOfEnergy, UnitOfPower
|
|
||||||
|
|
||||||
from .models import ForecastSolarSensorEntityDescription
|
|
||||||
|
|
||||||
DOMAIN = "forecast_solar"
|
DOMAIN = "forecast_solar"
|
||||||
LOGGER = logging.getLogger(__package__)
|
LOGGER = logging.getLogger(__package__)
|
||||||
|
|
||||||
@ -17,99 +11,3 @@ CONF_AZIMUTH = "azimuth"
|
|||||||
CONF_MODULES_POWER = "modules power"
|
CONF_MODULES_POWER = "modules power"
|
||||||
CONF_DAMPING = "damping"
|
CONF_DAMPING = "damping"
|
||||||
CONF_INVERTER_SIZE = "inverter_size"
|
CONF_INVERTER_SIZE = "inverter_size"
|
||||||
|
|
||||||
SENSORS: tuple[ForecastSolarSensorEntityDescription, ...] = (
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="energy_production_today",
|
|
||||||
name="Estimated energy production - today",
|
|
||||||
state=lambda estimate: estimate.energy_production_today,
|
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
|
||||||
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
||||||
suggested_display_precision=1,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="energy_production_today_remaining",
|
|
||||||
name="Estimated energy production - remaining today",
|
|
||||||
state=lambda estimate: estimate.energy_production_today_remaining,
|
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
|
||||||
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
||||||
suggested_display_precision=1,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="energy_production_tomorrow",
|
|
||||||
name="Estimated energy production - tomorrow",
|
|
||||||
state=lambda estimate: estimate.energy_production_tomorrow,
|
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
|
||||||
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
||||||
suggested_display_precision=1,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_highest_peak_time_today",
|
|
||||||
name="Highest power peak time - today",
|
|
||||||
device_class=SensorDeviceClass.TIMESTAMP,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_highest_peak_time_tomorrow",
|
|
||||||
name="Highest power peak time - tomorrow",
|
|
||||||
device_class=SensorDeviceClass.TIMESTAMP,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_production_now",
|
|
||||||
name="Estimated power production - now",
|
|
||||||
device_class=SensorDeviceClass.POWER,
|
|
||||||
state=lambda estimate: estimate.power_production_now,
|
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_production_next_hour",
|
|
||||||
state=lambda estimate: estimate.power_production_at_time(
|
|
||||||
estimate.now() + timedelta(hours=1)
|
|
||||||
),
|
|
||||||
name="Estimated power production - next hour",
|
|
||||||
device_class=SensorDeviceClass.POWER,
|
|
||||||
entity_registry_enabled_default=False,
|
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_production_next_12hours",
|
|
||||||
state=lambda estimate: estimate.power_production_at_time(
|
|
||||||
estimate.now() + timedelta(hours=12)
|
|
||||||
),
|
|
||||||
name="Estimated power production - next 12 hours",
|
|
||||||
device_class=SensorDeviceClass.POWER,
|
|
||||||
entity_registry_enabled_default=False,
|
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="power_production_next_24hours",
|
|
||||||
state=lambda estimate: estimate.power_production_at_time(
|
|
||||||
estimate.now() + timedelta(hours=24)
|
|
||||||
),
|
|
||||||
name="Estimated power production - next 24 hours",
|
|
||||||
device_class=SensorDeviceClass.POWER,
|
|
||||||
entity_registry_enabled_default=False,
|
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="energy_current_hour",
|
|
||||||
name="Estimated energy production - this hour",
|
|
||||||
state=lambda estimate: estimate.energy_current_hour,
|
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
|
||||||
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
||||||
suggested_display_precision=1,
|
|
||||||
),
|
|
||||||
ForecastSolarSensorEntityDescription(
|
|
||||||
key="energy_next_hour",
|
|
||||||
state=lambda estimate: estimate.sum_energy_production(1),
|
|
||||||
name="Estimated energy production - next hour",
|
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
|
||||||
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
||||||
suggested_display_precision=1,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
"""Models for the Forecast.Solar integration."""
|
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
from collections.abc import Callable
|
|
||||||
from dataclasses import dataclass
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from forecast_solar.models import Estimate
|
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorEntityDescription
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class ForecastSolarSensorEntityDescription(SensorEntityDescription):
|
|
||||||
"""Describes a Forecast.Solar Sensor."""
|
|
||||||
|
|
||||||
state: Callable[[Estimate], Any] | None = None
|
|
@ -1,10 +1,22 @@
|
|||||||
"""Support for the Forecast.Solar sensor service."""
|
"""Support for the Forecast.Solar sensor service."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import datetime
|
from collections.abc import Callable
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN, SensorEntity
|
from forecast_solar.models import Estimate
|
||||||
|
|
||||||
|
from homeassistant.components.sensor import (
|
||||||
|
DOMAIN as SENSOR_DOMAIN,
|
||||||
|
SensorDeviceClass,
|
||||||
|
SensorEntity,
|
||||||
|
SensorEntityDescription,
|
||||||
|
SensorStateClass,
|
||||||
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.const import UnitOfEnergy, UnitOfPower
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType
|
from homeassistant.helpers.device_registry import DeviceEntryType
|
||||||
from homeassistant.helpers.entity import DeviceInfo
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
@ -12,9 +24,112 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.typing import StateType
|
from homeassistant.helpers.typing import StateType
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
from .const import DOMAIN, SENSORS
|
from .const import DOMAIN
|
||||||
from .coordinator import ForecastSolarDataUpdateCoordinator
|
from .coordinator import ForecastSolarDataUpdateCoordinator
|
||||||
from .models import ForecastSolarSensorEntityDescription
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ForecastSolarSensorEntityDescription(SensorEntityDescription):
|
||||||
|
"""Describes a Forecast.Solar Sensor."""
|
||||||
|
|
||||||
|
state: Callable[[Estimate], Any] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
SENSORS: tuple[ForecastSolarSensorEntityDescription, ...] = (
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="energy_production_today",
|
||||||
|
name="Estimated energy production - today",
|
||||||
|
state=lambda estimate: estimate.energy_production_today,
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
|
suggested_display_precision=1,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="energy_production_today_remaining",
|
||||||
|
name="Estimated energy production - remaining today",
|
||||||
|
state=lambda estimate: estimate.energy_production_today_remaining,
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
|
suggested_display_precision=1,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="energy_production_tomorrow",
|
||||||
|
name="Estimated energy production - tomorrow",
|
||||||
|
state=lambda estimate: estimate.energy_production_tomorrow,
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
|
suggested_display_precision=1,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_highest_peak_time_today",
|
||||||
|
name="Highest power peak time - today",
|
||||||
|
device_class=SensorDeviceClass.TIMESTAMP,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_highest_peak_time_tomorrow",
|
||||||
|
name="Highest power peak time - tomorrow",
|
||||||
|
device_class=SensorDeviceClass.TIMESTAMP,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_production_now",
|
||||||
|
name="Estimated power production - now",
|
||||||
|
device_class=SensorDeviceClass.POWER,
|
||||||
|
state=lambda estimate: estimate.power_production_now,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_production_next_hour",
|
||||||
|
state=lambda estimate: estimate.power_production_at_time(
|
||||||
|
estimate.now() + timedelta(hours=1)
|
||||||
|
),
|
||||||
|
name="Estimated power production - next hour",
|
||||||
|
device_class=SensorDeviceClass.POWER,
|
||||||
|
entity_registry_enabled_default=False,
|
||||||
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_production_next_12hours",
|
||||||
|
state=lambda estimate: estimate.power_production_at_time(
|
||||||
|
estimate.now() + timedelta(hours=12)
|
||||||
|
),
|
||||||
|
name="Estimated power production - next 12 hours",
|
||||||
|
device_class=SensorDeviceClass.POWER,
|
||||||
|
entity_registry_enabled_default=False,
|
||||||
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="power_production_next_24hours",
|
||||||
|
state=lambda estimate: estimate.power_production_at_time(
|
||||||
|
estimate.now() + timedelta(hours=24)
|
||||||
|
),
|
||||||
|
name="Estimated power production - next 24 hours",
|
||||||
|
device_class=SensorDeviceClass.POWER,
|
||||||
|
entity_registry_enabled_default=False,
|
||||||
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="energy_current_hour",
|
||||||
|
name="Estimated energy production - this hour",
|
||||||
|
state=lambda estimate: estimate.energy_current_hour,
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
|
suggested_display_precision=1,
|
||||||
|
),
|
||||||
|
ForecastSolarSensorEntityDescription(
|
||||||
|
key="energy_next_hour",
|
||||||
|
state=lambda estimate: estimate.sum_energy_production(1),
|
||||||
|
name="Estimated energy production - next hour",
|
||||||
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
|
suggested_display_precision=1,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user