Use names for some td entities, fix #36
This commit is contained in:
		@@ -7,151 +7,41 @@ from pathlib import Path
 | 
			
		||||
 | 
			
		||||
from pyhon import HonAPI
 | 
			
		||||
 | 
			
		||||
# These languages are official supported by hOn
 | 
			
		||||
LANGUAGES = [
 | 
			
		||||
    "cs",  # Czech
 | 
			
		||||
    "de",  # German
 | 
			
		||||
    "el",  # Greek
 | 
			
		||||
    "en",  # English
 | 
			
		||||
    "es",  # Spanish
 | 
			
		||||
    "fr",  # French
 | 
			
		||||
    "he",  # Hebrew
 | 
			
		||||
    "hr",  # Croatian
 | 
			
		||||
    "it",  # Italian
 | 
			
		||||
    "nl",  # Dutch
 | 
			
		||||
    "pl",  # Polish
 | 
			
		||||
    "pt",  # Portuguese
 | 
			
		||||
    "ro",  # Romanian
 | 
			
		||||
    "ru",  # Russian
 | 
			
		||||
    "sk",  # Slovak
 | 
			
		||||
    "sl",  # Slovenian
 | 
			
		||||
    "sr",  # Serbian
 | 
			
		||||
    "tr",  # Turkish
 | 
			
		||||
    "zh",  # Chinese
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
WASHING_PR_PHASE = {
 | 
			
		||||
    0: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    1: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    2: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    3: "WASHING_CMD&CTRL.PHASE_SPIN.TITLE",
 | 
			
		||||
    4: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    5: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    6: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    7: "WASHING_CMD&CTRL.PHASE_DRYING.TITLE",
 | 
			
		||||
    9: "WASHING_CMD&CTRL.PHASE_STEAM.TITLE",
 | 
			
		||||
    10: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    11: "WASHING_CMD&CTRL.PHASE_SPIN.TITLE",
 | 
			
		||||
    12: "WASHING_CMD&CTRL.PHASE_WEIGHTING.TITLE",
 | 
			
		||||
    13: "WASHING_CMD&CTRL.PHASE_WEIGHTING.TITLE",
 | 
			
		||||
    14: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    15: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    16: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    17: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    18: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    19: "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE",
 | 
			
		||||
    20: "WASHING_CMD&CTRL.PHASE_TUMBLING.TITLE",
 | 
			
		||||
    24: "WASHING_CMD&CTRL.PHASE_REFRESH.TITLE",
 | 
			
		||||
    25: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    26: "WASHING_CMD&CTRL.PHASE_HEATING.TITLE",
 | 
			
		||||
    27: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
}
 | 
			
		||||
MACH_MODE = {
 | 
			
		||||
    0: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    1: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    3: "WASHING_CMD&CTRL.PHASE_PAUSE.TITLE",
 | 
			
		||||
    4: "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE",
 | 
			
		||||
    5: "WASHING_CMD&CTRL.PHASE_SCHEDULED.TITLE",
 | 
			
		||||
    6: "WASHING_CMD&CTRL.PHASE_ERROR.TITLE",
 | 
			
		||||
    7: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
}
 | 
			
		||||
TUMBLE_DRYER_PR_PHASE = {
 | 
			
		||||
    0: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    1: "TD_CMD&CTRL.STATUS_PHASE.PHASE_HEAT_STROKE",
 | 
			
		||||
    2: "WASHING_CMD&CTRL.PHASE_DRYING.TITLE",
 | 
			
		||||
    3: "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN",
 | 
			
		||||
    13: "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN",
 | 
			
		||||
    14: "TD_CMD&CTRL.STATUS_PHASE.PHASE_HEAT_STROKE",
 | 
			
		||||
    15: "TD_CMD&CTRL.STATUS_PHASE.PHASE_HEAT_STROKE",
 | 
			
		||||
    16: "TD_CMD&CTRL.STATUS_PHASE.PHASE_COOLDOWN",
 | 
			
		||||
    18: "WASHING_CMD&CTRL.PHASE_TUMBLING.DASHBOARD_TITLE",
 | 
			
		||||
    19: "WASHING_CMD&CTRL.PHASE_DRYING.TITLE",
 | 
			
		||||
    20: "WASHING_CMD&CTRL.PHASE_DRYING.TITLE",
 | 
			
		||||
}
 | 
			
		||||
DISHWASHER_PR_PHASE = {
 | 
			
		||||
    0: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    1: "WASHING_CMD&CTRL.PHASE_PREWASH.TITLE",
 | 
			
		||||
    2: "WASHING_CMD&CTRL.PHASE_WASHING.TITLE",
 | 
			
		||||
    3: "WASHING_CMD&CTRL.PHASE_RINSE.TITLE",
 | 
			
		||||
    4: "WASHING_CMD&CTRL.PHASE_DRYING.TITLE",
 | 
			
		||||
    5: "WASHING_CMD&CTRL.PHASE_READY.TITLE",
 | 
			
		||||
    6: "WASHING_CMD&CTRL.PHASE_HOT_RINSE.TITLE",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TUMBLE_DRYER_DRY_LEVEL = {
 | 
			
		||||
    0: "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_MAIN_OPTIONS.NO_DRY",
 | 
			
		||||
    1: "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.IRON_DRY",
 | 
			
		||||
    2: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.NO_DRY_IRON_TITLE",
 | 
			
		||||
    3: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.CUPBOARD_DRY_TITLE",
 | 
			
		||||
    4: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.EXTRA_DRY_TITLE",
 | 
			
		||||
    12: "WASHING_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OPTIONS_VALUES_DESCRIPTION.IRON_DRY",
 | 
			
		||||
    13: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.CUPBOARD_DRY_TITLE",
 | 
			
		||||
    14: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.READY_TO_WEAR_TITLE",
 | 
			
		||||
    15: "WASHING_CMD&CTRL.GUIDED_WASHING_SYMBOLS_DRYING.EXTRA_DRY_TITLE",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AC_MACH_MODE = {
 | 
			
		||||
    0: "PROGRAMS.AC.IOT_AUTO",
 | 
			
		||||
    1: "PROGRAMS.AC.IOT_COOL",
 | 
			
		||||
    2: "PROGRAMS.AC.IOT_COOL",
 | 
			
		||||
    3: "PROGRAMS.AC.IOT_DRY",
 | 
			
		||||
    4: "PROGRAMS.AC.IOT_HEAT",
 | 
			
		||||
    5: "PROGRAMS.AC.IOT_FAN",
 | 
			
		||||
    6: "PROGRAMS.AC.IOT_FAN",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AC_FAN_MODE = {
 | 
			
		||||
    1: "AC.PROGRAM_CARD.WIND_SPEED_HIGH",
 | 
			
		||||
    2: "AC.PROGRAM_CARD.WIND_SPEED_MID",
 | 
			
		||||
    3: "AC.PROGRAM_CARD.WIND_SPEED_LOW",
 | 
			
		||||
    4: "AC.PROGRAM_CARD.WIND_SPEED_AUTO",
 | 
			
		||||
    5: "AC.PROGRAM_CARD.WIND_SPEED_AUTO",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AC_HUMAN_SENSE = {
 | 
			
		||||
    0: "AC.PROGRAM_DETAIL.TOUCH_OFF",
 | 
			
		||||
    1: "AC.PROGRAM_DETAIL.AVOID_TOUCH",
 | 
			
		||||
    2: "AC.PROGRAM_DETAIL.FOLLOW_TOUCH",
 | 
			
		||||
}
 | 
			
		||||
from custom_components.hon import const
 | 
			
		||||
 | 
			
		||||
SENSOR = {
 | 
			
		||||
    "washing_modes": MACH_MODE,
 | 
			
		||||
    "mach_modes_ac": AC_MACH_MODE,
 | 
			
		||||
    "program_phases_wm": WASHING_PR_PHASE,
 | 
			
		||||
    "program_phases_td": TUMBLE_DRYER_PR_PHASE,
 | 
			
		||||
    "program_phases_dw": DISHWASHER_PR_PHASE,
 | 
			
		||||
    "dry_levels": TUMBLE_DRYER_DRY_LEVEL,
 | 
			
		||||
    "washing_modes": const.MACH_MODE,
 | 
			
		||||
    "mach_modes_ac": const.AC_MACH_MODE,
 | 
			
		||||
    "program_phases_wm": const.WASHING_PR_PHASE,
 | 
			
		||||
    "program_phases_td": const.TUMBLE_DRYER_PR_PHASE,
 | 
			
		||||
    "program_phases_dw": const.DISHWASHER_PR_PHASE,
 | 
			
		||||
    "dry_levels": const.TUMBLE_DRYER_DRY_LEVEL,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SELECT = {
 | 
			
		||||
    "dry_levels": TUMBLE_DRYER_DRY_LEVEL,
 | 
			
		||||
    "eco_pilot": AC_HUMAN_SENSE,
 | 
			
		||||
    "fan_mode": AC_FAN_MODE,
 | 
			
		||||
    "dry_levels": const.TUMBLE_DRYER_DRY_LEVEL,
 | 
			
		||||
    "eco_pilot": const.AC_HUMAN_SENSE,
 | 
			
		||||
    "fan_mode": const.AC_FAN_MODE,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PROGRAMS = {
 | 
			
		||||
    "programs_ac": "PROGRAMS.AC",
 | 
			
		||||
    "programs_dw": "PROGRAMS.DW",
 | 
			
		||||
    "programs_ih": "PROGRAMS.IH",
 | 
			
		||||
    "programs_ov": "PROGRAMS.OV",
 | 
			
		||||
    "programs_td": "PROGRAMS.TD",
 | 
			
		||||
    "programs_wm": "PROGRAMS.WM_WD",
 | 
			
		||||
    "select": {
 | 
			
		||||
        "programs_ac": "PROGRAMS.AC",
 | 
			
		||||
        "programs_dw": "PROGRAMS.DW",
 | 
			
		||||
        "programs_ih": "PROGRAMS.IH",
 | 
			
		||||
        "programs_ov": "PROGRAMS.OV",
 | 
			
		||||
        "programs_td": "PROGRAMS.TD",
 | 
			
		||||
        "programs_wm": "PROGRAMS.WM_WD",
 | 
			
		||||
    },
 | 
			
		||||
    "sensor": {
 | 
			
		||||
        "programs_td": "PROGRAMS.TD",
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NAMES = {
 | 
			
		||||
    "switch": {
 | 
			
		||||
        "anti_crease": "HDRY_CMD&CTRL.PROGRAM_CYCLE_DETAIL.ANTICREASE_TITLE",
 | 
			
		||||
        "add_dish": "DW_CMD&CTRL.c.ADD_DISH",
 | 
			
		||||
        "add_dish": "DW.ADD_DISH",
 | 
			
		||||
        "eco_express": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.ECO",
 | 
			
		||||
        "extra_dry": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.EXTRA_DRY",
 | 
			
		||||
        "half_load": "DW_CMD&CTRL.PROGRAM_CYCLE_DETAIL_OTHER_OPTIONS.HALF_LOAD",
 | 
			
		||||
@@ -277,7 +167,7 @@ NAMES = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def check_translation_files(translations):
 | 
			
		||||
    for language in LANGUAGES:
 | 
			
		||||
    for language in const.LANGUAGES:
 | 
			
		||||
        path = translations / f"{language}.json"
 | 
			
		||||
        if not path.is_file():
 | 
			
		||||
            async with HonAPI(anonymous=True) as hon:
 | 
			
		||||
@@ -321,7 +211,7 @@ def load_key(full_key, json_data, fallback=None):
 | 
			
		||||
        result = result.get(key, {})
 | 
			
		||||
    if not result and fallback:
 | 
			
		||||
        return load_key(full_key, fallback)
 | 
			
		||||
    return result or ""
 | 
			
		||||
    return result or full_key
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def load_keys(full_key, json_data):
 | 
			
		||||
@@ -358,16 +248,17 @@ def main():
 | 
			
		||||
    hon = load_hon_translations()
 | 
			
		||||
    base_path = Path(__file__).parent.parent / "custom_components/hon/translations"
 | 
			
		||||
    fallback = load_json(hon.get("en", ""))
 | 
			
		||||
    for language in LANGUAGES:
 | 
			
		||||
    for language in const.LANGUAGES:
 | 
			
		||||
        original = load_json(hon.get(language, ""))
 | 
			
		||||
        old = load_json(hass.get(language, ""))
 | 
			
		||||
        for name, data in SENSOR.items():
 | 
			
		||||
            add_data(old, original, fallback, data, name)
 | 
			
		||||
        for name, data in SELECT.items():
 | 
			
		||||
            add_data(old, original, fallback, data, name, "select")
 | 
			
		||||
        for name, program in PROGRAMS.items():
 | 
			
		||||
            select = old.setdefault("entity", {}).setdefault("select", {})
 | 
			
		||||
            select.setdefault(name, {})["state"] = load_keys(program, original)
 | 
			
		||||
        for entity, data in PROGRAMS.items():
 | 
			
		||||
            for name, program in data.items():
 | 
			
		||||
                select = old.setdefault("entity", {}).setdefault(entity, {})
 | 
			
		||||
                select.setdefault(name, {})["state"] = load_keys(program, original)
 | 
			
		||||
        for entity, data in NAMES.items():
 | 
			
		||||
            for name, key in data.items():
 | 
			
		||||
                select = old.setdefault("entity", {}).setdefault(entity, {})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user