Update statistics meta data on entity_id change (#52755)

This commit is contained in:
Erik Montnemery 2021-07-14 13:23:11 +02:00 committed by GitHub
parent 8c36f5c627
commit e541bcd54d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 2 deletions

View file

@ -12,7 +12,8 @@ from sqlalchemy.ext import baked
from sqlalchemy.orm.scoping import scoped_session
from homeassistant.const import PRESSURE_PA, TEMP_CELSIUS
from homeassistant.core import HomeAssistant
from homeassistant.core import Event, HomeAssistant, callback
from homeassistant.helpers import entity_registry
import homeassistant.util.dt as dt_util
import homeassistant.util.pressure as pressure_util
import homeassistant.util.temperature as temperature_util
@ -73,6 +74,31 @@ def async_setup(hass: HomeAssistant) -> None:
hass.data[STATISTICS_BAKERY] = baked.bakery()
hass.data[STATISTICS_META_BAKERY] = baked.bakery()
def entity_id_changed(event: Event) -> None:
"""Handle entity_id changed."""
old_entity_id = event.data["old_entity_id"]
entity_id = event.data["entity_id"]
with session_scope(hass=hass) as session:
session.query(StatisticsMeta).filter(
StatisticsMeta.statistic_id == old_entity_id
and StatisticsMeta.source == DOMAIN
).update({StatisticsMeta.statistic_id: entity_id})
@callback
def entity_registry_changed_filter(event: Event) -> bool:
"""Handle entity_id changed filter."""
if event.data["action"] != "update" or "old_entity_id" not in event.data:
return False
return True
if hass.is_running:
hass.bus.async_listen(
entity_registry.EVENT_ENTITY_REGISTRY_UPDATED,
entity_id_changed,
event_filter=entity_registry_changed_filter,
)
def get_start_time() -> datetime:
"""Return start time."""