1 """Support for WattTime sensors."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
6 from typing
import Any, cast
10 SensorEntityDescription,
27 DataUpdateCoordinator,
30 from .const
import CONF_BALANCING_AUTHORITY, CONF_BALANCING_AUTHORITY_ABBREV, DOMAIN
32 ATTR_BALANCING_AUTHORITY =
"balancing_authority"
34 SENSOR_TYPE_REALTIME_EMISSIONS_MOER =
"moer"
35 SENSOR_TYPE_REALTIME_EMISSIONS_PERCENT =
"percent"
38 REALTIME_EMISSIONS_SENSOR_DESCRIPTIONS = (
40 key=SENSOR_TYPE_REALTIME_EMISSIONS_MOER,
41 translation_key=
"marginal_operating_emissions_rate",
42 native_unit_of_measurement=f
"{UnitOfMass.POUNDS} CO2/MWh",
43 state_class=SensorStateClass.MEASUREMENT,
46 key=SENSOR_TYPE_REALTIME_EMISSIONS_PERCENT,
47 translation_key=
"relative_marginal_emissions_intensity",
48 native_unit_of_measurement=PERCENTAGE,
49 state_class=SensorStateClass.MEASUREMENT,
55 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
57 """Set up WattTime sensors based on a config entry."""
58 coordinator = hass.data[DOMAIN][entry.entry_id]
62 for description
in REALTIME_EMISSIONS_SENSOR_DESCRIPTIONS
63 if description.key
in coordinator.data
69 """Define a realtime emissions sensor."""
71 _attr_has_entity_name =
True
75 coordinator: DataUpdateCoordinator,
77 description: SensorEntityDescription,
79 """Initialize the sensor."""
85 identifiers={(DOMAIN, entry.entry_id)},
86 name=entry.data[CONF_BALANCING_AUTHORITY_ABBREV],
87 entry_type=DeviceEntryType.SERVICE,
92 """Return entity specific state attributes."""
94 ATTR_BALANCING_AUTHORITY: self.
_entry_entry.data[CONF_BALANCING_AUTHORITY],
101 if self.
_entry_entry.options.get(CONF_SHOW_ON_MAP)
is not False:
102 attrs[ATTR_LATITUDE] = self.
_entry_entry.data[ATTR_LATITUDE]
103 attrs[ATTR_LONGITUDE] = self.
_entry_entry.data[ATTR_LONGITUDE]
105 attrs[
"lati"] = self.
_entry_entry.data[ATTR_LATITUDE]
106 attrs[
"long"] = self.
_entry_entry.data[ATTR_LONGITUDE]
112 """Return the value reported by the sensor."""
113 return cast(StateType, self.coordinator.data[self.
entity_descriptionentity_description.key])
None __init__(self, DataUpdateCoordinator coordinator, ConfigEntry entry, SensorEntityDescription description)
StateType native_value(self)
Mapping[str, Any]|None extra_state_attributes(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)