mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Use EventType for state changed [a-h] (#97116)
This commit is contained in:
parent
5b73bd2f8e
commit
0cc396b863
@ -25,16 +25,17 @@ from homeassistant.const import (
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
)
|
||||
from homeassistant.core import Event, HassJob, HomeAssistant
|
||||
from homeassistant.core import HassJob, HomeAssistant
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.helpers.entity_component import EntityComponent
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_point_in_time,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.template import Template
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
from homeassistant.helpers.typing import ConfigType, EventType
|
||||
from homeassistant.util.dt import now
|
||||
|
||||
from .const import (
|
||||
@ -196,11 +197,13 @@ class Alert(Entity):
|
||||
return STATE_ON
|
||||
return STATE_IDLE
|
||||
|
||||
async def watched_entity_change(self, event: Event) -> None:
|
||||
async def watched_entity_change(
|
||||
self, event: EventType[EventStateChangedData]
|
||||
) -> None:
|
||||
"""Determine if the alert should start or stop."""
|
||||
if (to_state := event.data.get("new_state")) is None:
|
||||
if (to_state := event.data["new_state"]) is None:
|
||||
return
|
||||
LOGGER.debug("Watched entity (%s) has changed", event.data.get("entity_id"))
|
||||
LOGGER.debug("Watched entity (%s) has changed", event.data["entity_id"])
|
||||
if to_state.state == self._alert_state and not self._firing:
|
||||
await self.begin_alerting()
|
||||
if to_state.state != self._alert_state and self._firing:
|
||||
|
@ -17,10 +17,13 @@ from homeassistant.const import (
|
||||
CONF_UNIT_OF_MEASUREMENT,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import Event, HomeAssistant, State, callback
|
||||
from homeassistant.core import HomeAssistant, State, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
|
||||
|
||||
from .const import (
|
||||
CONF_COMPENSATION,
|
||||
@ -124,10 +127,12 @@ class CompensationSensor(SensorEntity):
|
||||
return ret
|
||||
|
||||
@callback
|
||||
def _async_compensation_sensor_state_listener(self, event: Event) -> None:
|
||||
def _async_compensation_sensor_state_listener(
|
||||
self, event: EventType[EventStateChangedData]
|
||||
) -> None:
|
||||
"""Handle sensor state changes."""
|
||||
new_state: State | None
|
||||
if (new_state := event.data.get("new_state")) is None:
|
||||
if (new_state := event.data["new_state"]) is None:
|
||||
return
|
||||
|
||||
if self.native_unit_of_measurement is None and self._source_attribute is None:
|
||||
@ -140,7 +145,7 @@ class CompensationSensor(SensorEntity):
|
||||
else:
|
||||
value = None if new_state.state == STATE_UNKNOWN else new_state.state
|
||||
try:
|
||||
x_value = float(value)
|
||||
x_value = float(value) # type: ignore[arg-type]
|
||||
if self._minimum is not None and x_value <= self._minimum[0]:
|
||||
y_value = self._minimum[1]
|
||||
elif self._maximum is not None and x_value >= self._maximum[0]:
|
||||
|
@ -18,7 +18,7 @@ from homeassistant.const import (
|
||||
STATE_UNKNOWN,
|
||||
UnitOfTime,
|
||||
)
|
||||
from homeassistant.core import Event, HomeAssistant, State, callback
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import (
|
||||
config_validation as cv,
|
||||
device_registry as dr,
|
||||
@ -26,8 +26,11 @@ from homeassistant.helpers import (
|
||||
)
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
|
||||
|
||||
from .const import (
|
||||
CONF_ROUND_DIGITS,
|
||||
@ -210,14 +213,12 @@ class DerivativeSensor(RestoreSensor, SensorEntity):
|
||||
_LOGGER.warning("Could not restore last state: %s", err)
|
||||
|
||||
@callback
|
||||
def calc_derivative(event: Event) -> None:
|
||||
def calc_derivative(event: EventType[EventStateChangedData]) -> None:
|
||||
"""Handle the sensor state changes."""
|
||||
old_state: State | None
|
||||
new_state: State | None
|
||||
if (
|
||||
(old_state := event.data.get("old_state")) is None
|
||||
(old_state := event.data["old_state"]) is None
|
||||
or old_state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE)
|
||||
or (new_state := event.data.get("new_state")) is None
|
||||
or (new_state := event.data["new_state"]) is None
|
||||
or new_state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE)
|
||||
):
|
||||
return
|
||||
|
@ -63,7 +63,11 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
)
|
||||
from homeassistant.core import State
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.typing import EventType
|
||||
from homeassistant.util.json import json_loads
|
||||
from homeassistant.util.network import is_local
|
||||
|
||||
@ -888,7 +892,7 @@ async def wait_for_state_change_or_timeout(
|
||||
ev = asyncio.Event()
|
||||
|
||||
@core.callback
|
||||
def _async_event_changed(event: core.Event) -> None:
|
||||
def _async_event_changed(event: EventType[EventStateChangedData]) -> None:
|
||||
ev.set()
|
||||
|
||||
unsub = async_track_state_change_event(hass, [entity_id], _async_event_changed)
|
||||
|
@ -34,7 +34,10 @@ from homeassistant.helpers import template
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
import homeassistant.helpers.device_registry as dr
|
||||
from homeassistant.helpers.device_registry import format_mac
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.issue_registry import (
|
||||
IssueSeverity,
|
||||
async_create_issue,
|
||||
@ -42,6 +45,7 @@ from homeassistant.helpers.issue_registry import (
|
||||
)
|
||||
from homeassistant.helpers.service import async_set_service_schema
|
||||
from homeassistant.helpers.template import Template
|
||||
from homeassistant.helpers.typing import EventType
|
||||
|
||||
from .bluetooth import async_connect_scanner
|
||||
from .const import (
|
||||
@ -270,11 +274,13 @@ class ESPHomeManager:
|
||||
"""Subscribe and forward states for requested entities."""
|
||||
hass = self.hass
|
||||
|
||||
async def send_home_assistant_state_event(event: Event) -> None:
|
||||
async def send_home_assistant_state_event(
|
||||
event: EventType[EventStateChangedData],
|
||||
) -> None:
|
||||
"""Forward Home Assistant states updates to ESPHome."""
|
||||
event_data = event.data
|
||||
new_state: State | None = event_data.get("new_state")
|
||||
old_state: State | None = event_data.get("old_state")
|
||||
new_state = event_data["new_state"]
|
||||
old_state = event_data["old_state"]
|
||||
|
||||
if new_state is None or old_state is None:
|
||||
return
|
||||
|
@ -34,13 +34,21 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import Event, HomeAssistant, State, callback
|
||||
from homeassistant.core import HomeAssistant, State, callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.reload import async_setup_reload_service
|
||||
from homeassistant.helpers.start import async_at_started
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType
|
||||
from homeassistant.helpers.typing import (
|
||||
ConfigType,
|
||||
DiscoveryInfoType,
|
||||
EventType,
|
||||
StateType,
|
||||
)
|
||||
from homeassistant.util.decorator import Registry
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
@ -217,10 +225,12 @@ class SensorFilter(SensorEntity):
|
||||
self._attr_extra_state_attributes = {ATTR_ENTITY_ID: entity_id}
|
||||
|
||||
@callback
|
||||
def _update_filter_sensor_state_event(self, event: Event) -> None:
|
||||
def _update_filter_sensor_state_event(
|
||||
self, event: EventType[EventStateChangedData]
|
||||
) -> None:
|
||||
"""Handle device state changes."""
|
||||
_LOGGER.debug("Update filter on event: %s", event)
|
||||
self._update_filter_sensor_state(event.data.get("new_state"))
|
||||
self._update_filter_sensor_state(event.data["new_state"])
|
||||
|
||||
@callback
|
||||
def _update_filter_sensor_state(
|
||||
|
@ -37,18 +37,25 @@ from homeassistant.const import (
|
||||
STATE_UNAVAILABLE,
|
||||
STATE_UNKNOWN,
|
||||
)
|
||||
from homeassistant.core import DOMAIN as HA_DOMAIN, CoreState, HomeAssistant, callback
|
||||
from homeassistant.core import (
|
||||
DOMAIN as HA_DOMAIN,
|
||||
CoreState,
|
||||
HomeAssistant,
|
||||
State,
|
||||
callback,
|
||||
)
|
||||
from homeassistant.exceptions import ConditionError
|
||||
from homeassistant.helpers import condition
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
async_track_time_interval,
|
||||
)
|
||||
from homeassistant.helpers.reload import async_setup_reload_service
|
||||
from homeassistant.helpers.restore_state import RestoreEntity
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, EventType
|
||||
|
||||
from . import DOMAIN, PLATFORMS
|
||||
|
||||
@ -395,9 +402,11 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
||||
# Get default temp from super class
|
||||
return super().max_temp
|
||||
|
||||
async def _async_sensor_changed(self, event):
|
||||
async def _async_sensor_changed(
|
||||
self, event: EventType[EventStateChangedData]
|
||||
) -> None:
|
||||
"""Handle temperature changes."""
|
||||
new_state = event.data.get("new_state")
|
||||
new_state = event.data["new_state"]
|
||||
if new_state is None or new_state.state in (STATE_UNAVAILABLE, STATE_UNKNOWN):
|
||||
return
|
||||
|
||||
@ -418,10 +427,10 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
||||
await self._async_heater_turn_off()
|
||||
|
||||
@callback
|
||||
def _async_switch_changed(self, event):
|
||||
def _async_switch_changed(self, event: EventType[EventStateChangedData]) -> None:
|
||||
"""Handle heater switch state changes."""
|
||||
new_state = event.data.get("new_state")
|
||||
old_state = event.data.get("old_state")
|
||||
new_state = event.data["new_state"]
|
||||
old_state = event.data["old_state"]
|
||||
if new_state is None:
|
||||
return
|
||||
if old_state is None:
|
||||
@ -429,7 +438,7 @@ class GenericThermostat(ClimateEntity, RestoreEntity):
|
||||
self.async_write_ha_state()
|
||||
|
||||
@callback
|
||||
def _async_update_temp(self, state):
|
||||
def _async_update_temp(self, state: State) -> None:
|
||||
"""Update thermostat with latest state from sensor."""
|
||||
try:
|
||||
cur_temp = float(state.state)
|
||||
|
@ -5,10 +5,14 @@ from datetime import timedelta
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.core import CALLBACK_TYPE, Event, HomeAssistant, callback
|
||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
|
||||
from homeassistant.exceptions import TemplateError
|
||||
from homeassistant.helpers.event import async_track_state_change_event
|
||||
from homeassistant.helpers.event import (
|
||||
EventStateChangedData,
|
||||
async_track_state_change_event,
|
||||
)
|
||||
from homeassistant.helpers.start import async_at_start
|
||||
from homeassistant.helpers.typing import EventType
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||
|
||||
from .data import HistoryStats, HistoryStatsState
|
||||
@ -82,7 +86,9 @@ class HistoryStatsUpdateCoordinator(DataUpdateCoordinator[HistoryStatsState]):
|
||||
self.hass, [self._history_stats.entity_id], self._async_update_from_event
|
||||
)
|
||||
|
||||
async def _async_update_from_event(self, event: Event) -> None:
|
||||
async def _async_update_from_event(
|
||||
self, event: EventType[EventStateChangedData]
|
||||
) -> None:
|
||||
"""Process an update from an event."""
|
||||
self.async_set_updated_data(await self._history_stats.async_update(event))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user