mirror of
https://github.com/home-assistant/core.git
synced 2025-11-11 20:10:12 +00:00
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""Migration functions for KNX config store schema."""
|
|
|
|
from typing import Any
|
|
|
|
from homeassistant.const import Platform
|
|
|
|
from ..const import CONF_RESPOND_TO_READ
|
|
from . import const as store_const
|
|
|
|
|
|
def migrate_1_to_2(data: dict[str, Any]) -> None:
|
|
"""Migrate from schema 1 to schema 2."""
|
|
if lights := data.get("entities", {}).get(Platform.LIGHT):
|
|
for light in lights.values():
|
|
_migrate_light_schema_1_to_2(light["knx"])
|
|
|
|
|
|
def _migrate_light_schema_1_to_2(light_knx_data: dict[str, Any]) -> None:
|
|
"""Migrate light color mode schema."""
|
|
# Remove no more needed helper data from schema
|
|
light_knx_data.pop("_light_color_mode_schema", None)
|
|
|
|
# Move color related group addresses to new "color" key
|
|
color: dict[str, Any] = {}
|
|
for color_key in (
|
|
# optional / required and exclusive keys are the same in old and new schema
|
|
store_const.CONF_GA_COLOR,
|
|
store_const.CONF_GA_HUE,
|
|
store_const.CONF_GA_SATURATION,
|
|
store_const.CONF_GA_RED_BRIGHTNESS,
|
|
store_const.CONF_GA_RED_SWITCH,
|
|
store_const.CONF_GA_GREEN_BRIGHTNESS,
|
|
store_const.CONF_GA_GREEN_SWITCH,
|
|
store_const.CONF_GA_BLUE_BRIGHTNESS,
|
|
store_const.CONF_GA_BLUE_SWITCH,
|
|
store_const.CONF_GA_WHITE_BRIGHTNESS,
|
|
store_const.CONF_GA_WHITE_SWITCH,
|
|
):
|
|
if color_key in light_knx_data:
|
|
color[color_key] = light_knx_data.pop(color_key)
|
|
|
|
if color:
|
|
light_knx_data[store_const.CONF_COLOR] = color
|
|
|
|
|
|
def migrate_2_1_to_2_2(data: dict[str, Any]) -> None:
|
|
"""Migrate from schema 2.1 to schema 2.2."""
|
|
if b_sensors := data.get("entities", {}).get(Platform.BINARY_SENSOR):
|
|
for b_sensor in b_sensors.values():
|
|
# "respond_to_read" was never used for binary_sensor and is not valid
|
|
# in the new schema. It was set as default in Store schema v1 and v2.1
|
|
b_sensor["knx"].pop(CONF_RESPOND_TO_READ, None)
|