"""Constants for the Miele integration.""" from enum import IntEnum from pymiele import MieleEnum DOMAIN = "miele" MANUFACTURER = "Miele" ACTIONS = "actions" POWER_ON = "powerOn" POWER_OFF = "powerOff" PROCESS_ACTION = "processAction" VENTILATION_STEP = "ventilationStep" TARGET_TEMPERATURE = "targetTemperature" AMBIENT_LIGHT = "ambientLight" LIGHT = "light" LIGHT_ON = 1 LIGHT_OFF = 2 DISABLED_TEMP_ENTITIES = ( -32768 / 100, -32766 / 100, ) class MieleAppliance(IntEnum): """Define appliance types.""" WASHING_MACHINE = 1 TUMBLE_DRYER = 2 WASHING_MACHINE_SEMI_PROFESSIONAL = 3 TUMBLE_DRYER_SEMI_PROFESSIONAL = 4 WASHING_MACHINE_PROFESSIONAL = 5 DRYER_PROFESSIONAL = 6 DISHWASHER = 7 DISHWASHER_SEMI_PROFESSIONAL = 8 DISHWASHER_PROFESSIONAL = 9 OVEN = 12 OVEN_MICROWAVE = 13 HOB_HIGHLIGHT = 14 STEAM_OVEN = 15 MICROWAVE = 16 COFFEE_SYSTEM = 17 HOOD = 18 FRIDGE = 19 FREEZER = 20 FRIDGE_FREEZER = 21 ROBOT_VACUUM_CLEANER = 23 WASHER_DRYER = 24 DISH_WARMER = 25 HOB_INDUCTION = 27 STEAM_OVEN_COMBI = 31 WINE_CABINET = 32 WINE_CONDITIONING_UNIT = 33 WINE_STORAGE_CONDITIONING_UNIT = 34 STEAM_OVEN_MICRO = 45 DIALOG_OVEN = 67 WINE_CABINET_FREEZER = 68 STEAM_OVEN_MK2 = 73 HOB_INDUCT_EXTR = 74 DEVICE_TYPE_TAGS = { MieleAppliance.WASHING_MACHINE: "washing_machine", MieleAppliance.TUMBLE_DRYER: "tumble_dryer", MieleAppliance.WASHING_MACHINE_SEMI_PROFESSIONAL: "washing_machine", MieleAppliance.TUMBLE_DRYER_SEMI_PROFESSIONAL: "tumble_dryer", MieleAppliance.WASHING_MACHINE_PROFESSIONAL: "washing_machine", MieleAppliance.DRYER_PROFESSIONAL: "tumble_dryer", MieleAppliance.DISHWASHER: "dishwasher", MieleAppliance.DISHWASHER_SEMI_PROFESSIONAL: "dishwasher", MieleAppliance.DISHWASHER_PROFESSIONAL: "dishwasher", MieleAppliance.OVEN: "oven", MieleAppliance.OVEN_MICROWAVE: "oven_microwave", MieleAppliance.HOB_HIGHLIGHT: "hob", MieleAppliance.STEAM_OVEN: "steam_oven", MieleAppliance.MICROWAVE: "microwave", MieleAppliance.COFFEE_SYSTEM: "coffee_system", MieleAppliance.HOOD: "hood", MieleAppliance.FRIDGE: "refrigerator", MieleAppliance.FREEZER: "freezer", MieleAppliance.FRIDGE_FREEZER: "fridge_freezer", MieleAppliance.ROBOT_VACUUM_CLEANER: "robot_vacuum_cleaner", MieleAppliance.WASHER_DRYER: "washer_dryer", MieleAppliance.DISH_WARMER: "warming_drawer", MieleAppliance.HOB_INDUCTION: "hob", MieleAppliance.STEAM_OVEN_COMBI: "steam_oven_combi", MieleAppliance.WINE_CABINET: "wine_cabinet", MieleAppliance.WINE_CONDITIONING_UNIT: "wine_conditioning_unit", MieleAppliance.WINE_STORAGE_CONDITIONING_UNIT: "wine_unit", MieleAppliance.STEAM_OVEN_MICRO: "steam_oven_micro", MieleAppliance.DIALOG_OVEN: "dialog_oven", MieleAppliance.WINE_CABINET_FREEZER: "wine_cabinet_freezer", MieleAppliance.STEAM_OVEN_MK2: "steam_oven", MieleAppliance.HOB_INDUCT_EXTR: "hob_extraction", } class StateStatus(IntEnum): """Define appliance states.""" RESERVED = 0 OFF = 1 ON = 2 PROGRAMMED = 3 WAITING_TO_START = 4 IN_USE = 5 PAUSE = 6 PROGRAM_ENDED = 7 FAILURE = 8 PROGRAM_INTERRUPTED = 9 IDLE = 10 RINSE_HOLD = 11 SERVICE = 12 SUPERFREEZING = 13 SUPERCOOLING = 14 SUPERHEATING = 15 SUPERCOOLING_SUPERFREEZING = 146 AUTOCLEANING = 147 NOT_CONNECTED = 255 STATE_STATUS_TAGS = { StateStatus.OFF: "off", StateStatus.ON: "on", StateStatus.PROGRAMMED: "programmed", StateStatus.WAITING_TO_START: "waiting_to_start", StateStatus.IN_USE: "in_use", StateStatus.PAUSE: "pause", StateStatus.PROGRAM_ENDED: "program_ended", StateStatus.FAILURE: "failure", StateStatus.PROGRAM_INTERRUPTED: "program_interrupted", StateStatus.IDLE: "idle", StateStatus.RINSE_HOLD: "rinse_hold", StateStatus.SERVICE: "service", StateStatus.SUPERFREEZING: "superfreezing", StateStatus.SUPERCOOLING: "supercooling", StateStatus.SUPERHEATING: "superheating", StateStatus.SUPERCOOLING_SUPERFREEZING: "supercooling_superfreezing", StateStatus.AUTOCLEANING: "autocleaning", StateStatus.NOT_CONNECTED: "not_connected", } class MieleActions(IntEnum): """Define appliance actions.""" START = 1 STOP = 2 PAUSE = 3 START_SUPERFREEZE = 4 STOP_SUPERFREEZE = 5 START_SUPERCOOL = 6 STOP_SUPERCOOL = 7 # Possible actions PROCESS_ACTIONS = { "start": MieleActions.START, "stop": MieleActions.STOP, "pause": MieleActions.PAUSE, "start_superfreezing": MieleActions.START_SUPERFREEZE, "stop_superfreezing": MieleActions.STOP_SUPERFREEZE, "start_supercooling": MieleActions.START_SUPERCOOL, "stop_supercooling": MieleActions.STOP_SUPERCOOL, } STATE_PROGRAM_PHASE_WASHING_MACHINE = { 0: "not_running", # Returned by the API when the machine is switched off entirely. 256: "not_running", 257: "pre_wash", 258: "soak", 259: "pre_wash", 260: "main_wash", 261: "rinse", 262: "rinse_hold", 263: "cleaning", 264: "cooling_down", 265: "drain", 266: "spin", 267: "anti_crease", 268: "finished", 269: "venting", 270: "starch_stop", 271: "freshen_up_and_moisten", 272: "steam_smoothing", 279: "hygiene", 280: "drying", 285: "disinfecting", 295: "steam_smoothing", 65535: "not_running", # Seems to be default for some devices. } STATE_PROGRAM_PHASE_TUMBLE_DRYER = { 0: "not_running", 512: "not_running", 513: "program_running", 514: "drying", 515: "machine_iron", 516: "hand_iron_2", 517: "normal", 518: "normal_plus", 519: "cooling_down", 520: "hand_iron_1", 521: "anti_crease", 522: "finished", 523: "extra_dry", 524: "hand_iron", 526: "moisten", 527: "thermo_spin", 528: "timed_drying", 529: "warm_air", 530: "steam_smoothing", 531: "comfort_cooling", 532: "rinse_out_lint", 533: "rinses", 535: "not_running", 534: "smoothing", 536: "not_running", 537: "not_running", 538: "slightly_dry", 539: "safety_cooling", 65535: "not_running", } STATE_PROGRAM_PHASE_DISHWASHER = { 1792: "not_running", 1793: "reactivating", 1794: "pre_dishwash", 1795: "main_dishwash", 1796: "rinse", 1797: "interim_rinse", 1798: "final_rinse", 1799: "drying", 1800: "finished", 1801: "pre_dishwash", 65535: "not_running", } STATE_PROGRAM_PHASE_OVEN = { 0: "not_running", 3073: "heating_up", 3074: "process_running", 3078: "process_finished", 3084: "energy_save", 65535: "not_running", } STATE_PROGRAM_PHASE_WARMING_DRAWER = { 0: "not_running", 3073: "heating_up", 3075: "door_open", 3094: "keeping_warm", 3088: "cooling_down", 65535: "not_running", } STATE_PROGRAM_PHASE_MICROWAVE = { 0: "not_running", 3329: "heating", 3330: "process_running", 3334: "process_finished", 3340: "energy_save", 65535: "not_running", } STATE_PROGRAM_PHASE_COFFEE_SYSTEM = { # Coffee system 3073: "heating_up", 4352: "not_running", 4353: "espresso", 4355: "milk_foam", 4361: "dispensing", 4369: "pre_brewing", 4377: "grinding", 4401: "2nd_grinding", 4354: "hot_milk", 4393: "2nd_pre_brewing", 4385: "2nd_espresso", 4404: "dispensing", 4405: "rinse", 65535: "not_running", } STATE_PROGRAM_PHASE_ROBOT_VACUUM_CLEANER = { 0: "not_running", 5889: "vacuum_cleaning", 5890: "returning", 5891: "vacuum_cleaning_paused", 5892: "going_to_target_area", 5893: "wheel_lifted", # F1 5894: "dirty_sensors", # F2 5895: "dust_box_missing", # F3 5896: "blocked_drive_wheels", # F4 5897: "blocked_brushes", # F5 5898: "motor_overload", # F6 5899: "internal_fault", # F7 5900: "blocked_front_wheel", # F8 5903: "docked", 5904: "docked", 5910: "remote_controlled", 65535: "not_running", } STATE_PROGRAM_PHASE_MICROWAVE_OVEN_COMBO = { 0: "not_running", 3863: "steam_reduction", 7938: "process_running", 7939: "waiting_for_start", 7940: "heating_up_phase", 7942: "process_finished", 65535: "not_running", } STATE_PROGRAM_PHASE: dict[int, dict[int, str]] = { MieleAppliance.WASHING_MACHINE: STATE_PROGRAM_PHASE_WASHING_MACHINE, MieleAppliance.WASHING_MACHINE_SEMI_PROFESSIONAL: STATE_PROGRAM_PHASE_WASHING_MACHINE, MieleAppliance.WASHING_MACHINE_PROFESSIONAL: STATE_PROGRAM_PHASE_WASHING_MACHINE, MieleAppliance.TUMBLE_DRYER: STATE_PROGRAM_PHASE_TUMBLE_DRYER, MieleAppliance.DRYER_PROFESSIONAL: STATE_PROGRAM_PHASE_TUMBLE_DRYER, MieleAppliance.TUMBLE_DRYER_SEMI_PROFESSIONAL: STATE_PROGRAM_PHASE_TUMBLE_DRYER, MieleAppliance.DISHWASHER: STATE_PROGRAM_PHASE_DISHWASHER, MieleAppliance.DISHWASHER_SEMI_PROFESSIONAL: STATE_PROGRAM_PHASE_DISHWASHER, MieleAppliance.DISHWASHER_PROFESSIONAL: STATE_PROGRAM_PHASE_DISHWASHER, MieleAppliance.OVEN: STATE_PROGRAM_PHASE_OVEN, MieleAppliance.OVEN_MICROWAVE: STATE_PROGRAM_PHASE_MICROWAVE_OVEN_COMBO, MieleAppliance.STEAM_OVEN: STATE_PROGRAM_PHASE_OVEN, MieleAppliance.DIALOG_OVEN: STATE_PROGRAM_PHASE_OVEN, MieleAppliance.MICROWAVE: STATE_PROGRAM_PHASE_MICROWAVE, MieleAppliance.COFFEE_SYSTEM: STATE_PROGRAM_PHASE_COFFEE_SYSTEM, MieleAppliance.ROBOT_VACUUM_CLEANER: STATE_PROGRAM_PHASE_ROBOT_VACUUM_CLEANER, } class StateProgramType(MieleEnum): """Defines program types.""" normal_operation_mode = 0 own_program = 1 automatic_program = 2 cleaning_care_program = 3 maintenance_program = 4 unknown = -9999 WASHING_MACHINE_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Extrapolated from other device types. 0: "no_program", # Returned by the API when no program is selected. 1: "cottons", 3: "minimum_iron", 4: "delicates", 8: "woollens", 9: "silks", 17: "starch", 18: "rinse", 21: "drain_spin", 22: "curtains", 23: "shirts", 24: "denim", 27: "proofing", 29: "sportswear", 31: "automatic_plus", 37: "outerwear", 39: "pillows", 45: "cool_air", # washer-dryer 46: "warm_air", # washer-dryer 48: "rinse_out_lint", # washer-dryer 50: "dark_garments", 52: "separate_rinse_starch", 53: "first_wash", 69: "cottons_hygiene", 75: "steam_care", # washer-dryer 76: "freshen_up", # washer-dryer 77: "trainers", 91: "clean_machine", 95: "down_duvets", 122: "express_20", 123: "denim", 129: "down_filled_items", 133: "cottons_eco", 146: "quick_power_wash", 190: "eco_40_60", } DISHWASHER_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Sometimes returned by the API when the machine is switched off entirely, in conjunection with program phase 65535. 0: "no_program", # Returned by the API when the machine is switched off entirely. 1: "intensive", 2: "maintenance", 3: "eco", 6: "automatic", 7: "automatic", 9: "solar_save", 10: "gentle", 11: "extra_quiet", 12: "hygiene", 13: "quick_power_wash", 14: "pasta_paela", 17: "tall_items", 19: "glasses_warm", 26: "intensive", 27: "maintenance", # or maintenance_program? 28: "eco", 30: "normal", 31: "automatic", 32: "automatic", # sources disagree on ID 34: "solar_save", 35: "gentle", 36: "extra_quiet", 37: "hygiene", 38: "quick_power_wash", 42: "tall_items", 44: "power_wash", } TUMBLE_DRYER_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Extrapolated from other device types. 0: "no_program", # Extrapolated from other device types 2: "cottons", 3: "minimum_iron", 4: "woollens_handcare", 5: "delicates", 6: "warm_air", 8: "express", 10: "automatic_plus", 20: "cottons", 23: "cottons_hygiene", 30: "minimum_iron", 31: "bed_linen", 40: "woollens_handcare", 50: "delicates", 60: "warm_air", 66: "eco", 70: "cool_air", 80: "express", 90: "cottons", 100: "gentle_smoothing", 120: "proofing", 130: "denim", 131: "gentle_denim", 150: "sportswear", 160: "outerwear", 170: "silks_handcare", 190: "standard_pillows", 220: "basket_program", 240: "smoothing", 99001: "steam_smoothing", 99002: "bed_linen", 99003: "cottons_eco", 99004: "shirts", 99005: "large_pillows", } OVEN_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Extrapolated from other device types. 0: "no_program", # Extrapolated from other device types 1: "defrost", 6: "eco_fan_heat", 7: "auto_roast", 10: "full_grill", 11: "economy_grill", 13: "fan_plus", 14: "intensive_bake", 19: "microwave", 24: "conventional_heat", 25: "top_heat", 29: "fan_grill", 31: "bottom_heat", 35: "moisture_plus_auto_roast", 40: "moisture_plus_fan_plus", 48: "moisture_plus_auto_roast", 49: "moisture_plus_fan_plus", 50: "moisture_plus_intensive_bake", 51: "moisture_plus_conventional_heat", 74: "moisture_plus_intensive_bake", 76: "moisture_plus_conventional_heat", 323: "pyrolytic", 326: "descale", 335: "shabbat_program", 336: "yom_tov", 356: "defrost", 357: "drying", 358: "heat_crockery", 360: "low_temperature_cooking", 361: "steam_cooking", 362: "keeping_warm", 512: "1_tray", 513: "2_trays", 529: "baking_tray", 554: "baiser_one_large", 555: "baiser_several_small", 556: "lemon_meringue_pie", 557: "viennese_apple_strudel", 621: "prove_15_min", 622: "prove_30_min", 623: "prove_45_min", 99001: "steam_bake", 17003: "no_program", } DISH_WARMER_PROGRAM_ID: dict[int, str] = { -1: "no_program", 0: "no_program", 1: "warm_cups_glasses", 2: "warm_dishes_plates", 3: "keep_warm", 4: "slow_roasting", } ROBOT_VACUUM_CLEANER_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Extrapolated from other device types 0: "no_program", # Extrapolated from other device types 1: "auto", 2: "spot", 3: "turbo", 4: "silent", } COFFEE_SYSTEM_PROGRAM_ID: dict[int, str] = { -1: "no_program", # Extrapolated from other device types 0: "no_program", # Extrapolated from other device types 16016: "appliance_settings", # display brightness 16018: "appliance_settings", # volume 16019: "appliance_settings", # buttons volume 16020: "appliance_settings", # child lock 16021: "appliance_settings", # water hardness 16027: "appliance_settings", # welcome sound 16033: "appliance_settings", # connection status 16035: "appliance_settings", # remote control 16037: "appliance_settings", # remote update 17004: "check_appliance", # profile 1 24000: "ristretto", 24001: "espresso", 24002: "coffee", 24003: "long_coffee", 24004: "cappuccino", 24005: "cappuccino_italiano", 24006: "latte_macchiato", 24007: "espresso_macchiato", 24008: "cafe_au_lait", 24009: "caffe_latte", 24012: "flat_white", 24013: "very_hot_water", 24014: "hot_water", 24015: "hot_milk", 24016: "milk_foam", 24017: "black_tea", 24018: "herbal_tea", 24019: "fruit_tea", 24020: "green_tea", 24021: "white_tea", 24022: "japanese_tea", # profile 2 24032: "ristretto", 24033: "espresso", 24034: "coffee", 24035: "long_coffee", 24036: "cappuccino", 24037: "cappuccino_italiano", 24038: "latte_macchiato", 24039: "espresso_macchiato", 24040: "cafe_au_lait", 24041: "caffe_latte", 24044: "flat_white", 24045: "very_hot_water", 24046: "hot_water", 24047: "hot_milk", 24048: "milk_foam", 24049: "black_tea", 24050: "herbal_tea", 24051: "fruit_tea", 24052: "green_tea", 24053: "white_tea", 24054: "japanese_tea", # profile 3 24064: "ristretto", 24065: "espresso", 24066: "coffee", 24067: "long_coffee", 24068: "cappuccino", 24069: "cappuccino_italiano", 24070: "latte_macchiato", 24071: "espresso_macchiato", 24072: "cafe_au_lait", 24073: "caffe_latte", 24076: "flat_white", 24077: "very_hot_water", 24078: "hot_water", 24079: "hot_milk", 24080: "milk_foam", 24081: "black_tea", 24082: "herbal_tea", 24083: "fruit_tea", 24084: "green_tea", 24085: "white_tea", 24086: "japanese_tea", # profile 4 24096: "ristretto", 24097: "espresso", 24098: "coffee", 24099: "long_coffee", 24100: "cappuccino", 24101: "cappuccino_italiano", 24102: "latte_macchiato", 24103: "espresso_macchiato", 24104: "cafe_au_lait", 24105: "caffe_latte", 24108: "flat_white", 24109: "very_hot_water", 24110: "hot_water", 24111: "hot_milk", 24112: "milk_foam", 24113: "black_tea", 24114: "herbal_tea", 24115: "fruit_tea", 24116: "green_tea", 24117: "white_tea", 24118: "japanese_tea", # profile 5 24128: "ristretto", 24129: "espresso", 24130: "coffee", 24131: "long_coffee", 24132: "cappuccino", 24133: "cappuccino_italiano", 24134: "latte_macchiato", 24135: "espresso_macchiato", 24136: "cafe_au_lait", 24137: "caffe_latte", 24140: "flat_white", 24141: "very_hot_water", 24142: "hot_water", 24143: "hot_milk", 24144: "milk_foam", 24145: "black_tea", 24146: "herbal_tea", 24147: "fruit_tea", 24148: "green_tea", 24149: "white_tea", 24150: "japanese_tea", # special programs 24400: "coffee_pot", 24407: "barista_assistant", # machine settings menu 24500: "appliance_settings", # total dispensed 24502: "appliance_settings", # lights appliance on 24503: "appliance_settings", # lights appliance off 24504: "appliance_settings", # turn off lights after 24506: "appliance_settings", # altitude 24513: "appliance_settings", # performance mode 24516: "appliance_settings", # turn off after 24537: "appliance_settings", # advanced mode 24542: "appliance_settings", # tea timer 24549: "appliance_settings", # total coffee dispensed 24550: "appliance_settings", # total tea dispensed 24551: "appliance_settings", # total ristretto 24552: "appliance_settings", # total cappuccino 24553: "appliance_settings", # total espresso 24554: "appliance_settings", # total coffee 24555: "appliance_settings", # total long coffee 24556: "appliance_settings", # total italian cappuccino 24557: "appliance_settings", # total latte macchiato 24558: "appliance_settings", # total caffe latte 24560: "appliance_settings", # total espresso macchiato 24562: "appliance_settings", # total flat white 24563: "appliance_settings", # total coffee with milk 24564: "appliance_settings", # total black tea 24565: "appliance_settings", # total herbal tea 24566: "appliance_settings", # total fruit tea 24567: "appliance_settings", # total green tea 24568: "appliance_settings", # total white tea 24569: "appliance_settings", # total japanese tea 24571: "appliance_settings", # total milk foam 24572: "appliance_settings", # total hot milk 24573: "appliance_settings", # total hot water 24574: "appliance_settings", # total very hot water 24575: "appliance_settings", # counter to descaling 24576: "appliance_settings", # counter to brewing unit degreasing # maintenance 24750: "appliance_rinse", 24751: "descaling", 24753: "brewing_unit_degrease", 24754: "milk_pipework_rinse", 24759: "appliance_rinse", 24773: "appliance_rinse", 24787: "appliance_rinse", 24788: "appliance_rinse", 24789: "milk_pipework_clean", # profiles settings menu 24800: "appliance_settings", # add profile 24801: "appliance_settings", # ask profile settings 24813: "appliance_settings", # modify profile name } STEAM_OVEN_MICRO_PROGRAM_ID: dict[int, str] = { 8: "steam_cooking", 19: "microwave", 53: "popcorn", 54: "quick_mw", 72: "sous_vide", 75: "eco_steam_cooking", 77: "rapid_steam_cooking", 326: "descale", 330: "menu_cooking", 2018: "reheating_with_steam", 2019: "defrosting_with_steam", 2020: "blanching", 2021: "bottling", 2022: "sterilize_crockery", 2023: "prove_dough", 2027: "soak", 2029: "reheating_with_microwave", 2030: "defrosting_with_microwave", 2031: "artichokes_small", 2032: "artichokes_medium", 2033: "artichokes_large", 2034: "eggplant_sliced", 2035: "eggplant_diced", 2036: "cauliflower_whole_small", 2039: "cauliflower_whole_medium", 2042: "cauliflower_whole_large", 2046: "cauliflower_florets_small", 2048: "cauliflower_florets_medium", 2049: "cauliflower_florets_large", 2051: "green_beans_whole", 2052: "green_beans_cut", 2053: "yellow_beans_whole", 2054: "yellow_beans_cut", 2055: "broad_beans", 2056: "common_beans", 2057: "runner_beans_whole", 2058: "runner_beans_pieces", 2059: "runner_beans_sliced", 2060: "broccoli_whole_small", 2061: "broccoli_whole_medium", 2062: "broccoli_whole_large", 2064: "broccoli_florets_small", 2066: "broccoli_florets_medium", 2068: "broccoli_florets_large", 2069: "endive_halved", 2070: "endive_quartered", 2071: "endive_strips", 2072: "chinese_cabbage_cut", 2073: "peas", 2074: "fennel_halved", 2075: "fennel_quartered", 2076: "fennel_strips", 2077: "kale_cut", 2080: "potatoes_in_the_skin_waxy_small_steam_cooking", 2081: "potatoes_in_the_skin_waxy_small_rapid_steam_cooking", 2083: "potatoes_in_the_skin_waxy_medium_steam_cooking", 2084: "potatoes_in_the_skin_waxy_medium_rapid_steam_cooking", 2086: "potatoes_in_the_skin_waxy_large_steam_cooking", 2087: "potatoes_in_the_skin_waxy_large_rapid_steam_cooking", 2088: "potatoes_in_the_skin_floury_small", 2091: "potatoes_in_the_skin_floury_medium", 2094: "potatoes_in_the_skin_floury_large", 2097: "potatoes_in_the_skin_mainly_waxy_small", 2100: "potatoes_in_the_skin_mainly_waxy_medium", 2103: "potatoes_in_the_skin_mainly_waxy_large", 2106: "potatoes_waxy_whole_small", 2109: "potatoes_waxy_whole_medium", 2112: "potatoes_waxy_whole_large", 2115: "potatoes_waxy_halved", 2116: "potatoes_waxy_quartered", 2117: "potatoes_waxy_diced", 2118: "potatoes_mainly_waxy_small", 2119: "potatoes_mainly_waxy_medium", 2120: "potatoes_mainly_waxy_large", 2121: "potatoes_mainly_waxy_halved", 2122: "potatoes_mainly_waxy_quartered", 2123: "potatoes_mainly_waxy_diced", 2124: "potatoes_floury_whole_small", 2125: "potatoes_floury_whole_medium", 2126: "potatoes_floury_whole_large", 2127: "potatoes_floury_halved", 2128: "potatoes_floury_quartered", 2129: "potatoes_floury_diced", 2130: "german_turnip_sliced", 2131: "german_turnip_cut_into_batons", 2132: "german_turnip_diced", 2133: "pumpkin_diced", 2134: "corn_on_the_cob", 2135: "mangel_cut", 2136: "bunched_carrots_whole_small", 2137: "bunched_carrots_whole_medium", 2138: "bunched_carrots_whole_large", 2139: "bunched_carrots_halved", 2140: "bunched_carrots_quartered", 2141: "bunched_carrots_diced", 2142: "bunched_carrots_cut_into_batons", 2143: "bunched_carrots_sliced", 2144: "parisian_carrots_small", 2145: "parisian_carrots_medium", 2146: "parisian_carrots_large", 2147: "carrots_whole_small", 2148: "carrots_whole_medium", 2149: "carrots_whole_large", 2150: "carrots_halved", 2151: "carrots_quartered", 2152: "carrots_diced", 2153: "carrots_cut_into_batons", 2155: "carrots_sliced", 2156: "pepper_halved", 2157: "pepper_quartered", 2158: "pepper_strips", 2159: "pepper_diced", 2160: "parsnip_sliced", 2161: "parsnip_diced", 2162: "parsnip_cut_into_batons", 2163: "parsley_root_sliced", 2164: "parsley_root_diced", 2165: "parsley_root_cut_into_batons", 2166: "leek_pieces", 2167: "leek_rings", 2168: "romanesco_whole_small", 2169: "romanesco_whole_medium", 2170: "romanesco_whole_large", 2171: "romanesco_florets_small", 2172: "romanesco_florets_medium", 2173: "romanesco_florets_large", 2175: "brussels_sprout", 2176: "beetroot_whole_small", 2177: "beetroot_whole_medium", 2178: "beetroot_whole_large", 2179: "red_cabbage_cut", 2180: "black_salsify_thin", 2181: "black_salsify_medium", 2182: "black_salsify_thick", 2183: "celery_pieces", 2184: "celery_sliced", 2185: "celeriac_sliced", 2186: "celeriac_cut_into_batons", 2187: "celeriac_diced", 2188: "white_asparagus_thin", 2189: "white_asparagus_medium", 2190: "white_asparagus_thick", 2192: "green_asparagus_thin", 2194: "green_asparagus_medium", 2196: "green_asparagus_thick", 2197: "spinach", 2198: "pointed_cabbage_cut", 2199: "yam_halved", 2200: "yam_quartered", 2201: "yam_strips", 2202: "swede_diced", 2203: "swede_cut_into_batons", 2204: "teltow_turnip_sliced", 2205: "teltow_turnip_diced", 2206: "jerusalem_artichoke_sliced", 2207: "jerusalem_artichoke_diced", 2208: "green_cabbage_cut", 2209: "savoy_cabbage_cut", 2210: "courgette_sliced", 2211: "courgette_diced", 2212: "snow_pea", 2214: "perch_whole", 2215: "perch_fillet_2_cm", 2216: "perch_fillet_3_cm", 2217: "gilt_head_bream_whole", 2220: "gilt_head_bream_fillet", 2221: "codfish_piece", 2222: "codfish_fillet", 2224: "trout", 2225: "pike_fillet", 2226: "pike_piece", 2227: "halibut_fillet_2_cm", 2230: "halibut_fillet_3_cm", 2231: "codfish_fillet", 2232: "codfish_piece", 2233: "carp", 2234: "salmon_fillet_2_cm", 2235: "salmon_fillet_3_cm", 2238: "salmon_steak_2_cm", 2239: "salmon_steak_3_cm", 2240: "salmon_piece", 2241: "salmon_trout", 2244: "iridescent_shark_fillet", 2245: "red_snapper_fillet_2_cm", 2248: "red_snapper_fillet_3_cm", 2249: "redfish_fillet_2_cm", 2250: "redfish_fillet_3_cm", 2251: "redfish_piece", 2252: "char", 2253: "plaice_whole_2_cm", 2254: "plaice_whole_3_cm", 2255: "plaice_whole_4_cm", 2256: "plaice_fillet_1_cm", 2259: "plaice_fillet_2_cm", 2260: "coalfish_fillet_2_cm", 2261: "coalfish_fillet_3_cm", 2262: "coalfish_piece", 2263: "sea_devil_fillet_3_cm", 2266: "sea_devil_fillet_4_cm", 2267: "common_sole_fillet_1_cm", 2270: "common_sole_fillet_2_cm", 2271: "atlantic_catfish_fillet_1_cm", 2272: "atlantic_catfish_fillet_2_cm", 2273: "turbot_fillet_2_cm", 2276: "turbot_fillet_3_cm", 2277: "tuna_steak", 2278: "tuna_fillet_2_cm", 2279: "tuna_fillet_3_cm", 2280: "tilapia_fillet_1_cm", 2281: "tilapia_fillet_2_cm", 2282: "nile_perch_fillet_2_cm", 2283: "nile_perch_fillet_3_cm", 2285: "zander_fillet", 2288: "soup_hen", 2291: "poularde_whole", 2292: "poularde_breast", 2294: "turkey_breast", 2302: "chicken_tikka_masala_with_rice", 2312: "veal_fillet_whole", 2313: "veal_fillet_medaillons_1_cm", 2315: "veal_fillet_medaillons_2_cm", 2317: "veal_fillet_medaillons_3_cm", 2324: "goulash_soup", 2327: "dutch_hash", 2328: "stuffed_cabbage", 2330: "beef_tenderloin", 2333: "beef_tenderloin_medaillons_1_cm_steam_cooking", 2334: "beef_tenderloin_medaillons_2_cm_steam_cooking", 2335: "beef_tenderloin_medaillons_3_cm_steam_cooking", 2339: "silverside_5_cm", 2342: "silverside_7_5_cm", 2345: "silverside_10_cm", 2348: "meat_for_soup_back_or_top_rib", 2349: "meat_for_soup_leg_steak", 2350: "meat_for_soup_brisket", 2353: "viennese_silverside", 2354: "whole_ham_steam_cooking", 2355: "whole_ham_reheating", 2359: "kasseler_piece", 2361: "kasseler_slice", 2363: "knuckle_of_pork_fresh", 2364: "knuckle_of_pork_cured", 2367: "pork_tenderloin_medaillons_3_cm", 2368: "pork_tenderloin_medaillons_4_cm", 2369: "pork_tenderloin_medaillons_5_cm", 2429: "pumpkin_soup", 2430: "meat_with_rice", 2431: "beef_casserole", 2450: "risotto", 2451: "risotto", 2453: "rice_pudding_steam_cooking", 2454: "rice_pudding_rapid_steam_cooking", 2461: "amaranth", 2462: "bulgur", 2463: "spelt_whole", 2464: "spelt_cracked", 2465: "green_spelt_whole", 2466: "green_spelt_cracked", 2467: "oats_whole", 2468: "oats_cracked", 2469: "millet", 2470: "quinoa", 2471: "polenta_swiss_style_fine_polenta", 2472: "polenta_swiss_style_medium_polenta", 2473: "polenta_swiss_style_coarse_polenta", 2474: "polenta", 2475: "rye_whole", 2476: "rye_cracked", 2477: "wheat_whole", 2478: "wheat_cracked", 2480: "gnocchi_fresh", 2481: "yeast_dumplings_fresh", 2482: "potato_dumplings_raw_boil_in_bag", 2483: "potato_dumplings_raw_deep_frozen", 2484: "potato_dumplings_half_half_boil_in_bag", 2485: "potato_dumplings_half_half_deep_frozen", 2486: "bread_dumplings_boil_in_the_bag", 2487: "bread_dumplings_fresh", 2488: "ravioli_fresh", 2489: "spaetzle_fresh", 2490: "tagliatelli_fresh", 2491: "schupfnudeln_potato_noodels", 2492: "tortellini_fresh", 2493: "red_lentils", 2494: "brown_lentils", 2495: "beluga_lentils", 2496: "green_split_peas", 2497: "yellow_split_peas", 2498: "chick_peas", 2499: "white_beans", 2500: "pinto_beans", 2501: "red_beans", 2502: "black_beans", 2503: "hens_eggs_size_s_soft", 2504: "hens_eggs_size_s_medium", 2505: "hens_eggs_size_s_hard", 2506: "hens_eggs_size_m_soft", 2507: "hens_eggs_size_m_medium", 2508: "hens_eggs_size_m_hard", 2509: "hens_eggs_size_l_soft", 2510: "hens_eggs_size_l_medium", 2511: "hens_eggs_size_l_hard", 2512: "hens_eggs_size_xl_soft", 2513: "hens_eggs_size_xl_medium", 2514: "hens_eggs_size_xl_hard", 2515: "swiss_toffee_cream_100_ml", 2516: "swiss_toffee_cream_150_ml", 2518: "toffee_date_dessert_several_small", 2520: "cheesecake_several_small", 2521: "cheesecake_one_large", 2522: "christmas_pudding_cooking", 2523: "christmas_pudding_heating", 2524: "treacle_sponge_pudding_several_small", 2525: "treacle_sponge_pudding_one_large", 2526: "sweet_cheese_dumplings", 2527: "apples_whole", 2528: "apples_halved", 2529: "apples_quartered", 2530: "apples_sliced", 2531: "apples_diced", 2532: "apricots_halved_steam_cooking", 2533: "apricots_halved_skinning", 2534: "apricots_quartered", 2535: "apricots_wedges", 2536: "pears_halved", 2537: "pears_quartered", 2538: "pears_wedges", 2539: "sweet_cherries", 2540: "sour_cherries", 2541: "pears_to_cook_small_whole", 2542: "pears_to_cook_small_halved", 2543: "pears_to_cook_small_quartered", 2544: "pears_to_cook_medium_whole", 2545: "pears_to_cook_medium_halved", 2546: "pears_to_cook_medium_quartered", 2547: "pears_to_cook_large_whole", 2548: "pears_to_cook_large_halved", 2549: "pears_to_cook_large_quartered", 2550: "mirabelles", 2551: "nectarines_peaches_halved_steam_cooking", 2552: "nectarines_peaches_halved_skinning", 2553: "nectarines_peaches_quartered", 2554: "nectarines_peaches_wedges", 2555: "plums_whole", 2556: "plums_halved", 2557: "cranberries", 2558: "quinces_diced", 2559: "greenage_plums", 2560: "rhubarb_chunks", 2561: "gooseberries", 2562: "mushrooms_whole", 2563: "mushrooms_halved", 2564: "mushrooms_sliced", 2565: "mushrooms_quartered", 2566: "mushrooms_diced", 2567: "cep", 2568: "chanterelle", 2569: "oyster_mushroom_whole", 2570: "oyster_mushroom_strips", 2571: "oyster_mushroom_diced", 2572: "saucisson", 2573: "bruehwurst_sausages", 2574: "bologna_sausage", 2575: "veal_sausages", 2577: "crevettes", 2579: "prawns", 2581: "king_prawns", 2583: "small_shrimps", 2585: "large_shrimps", 2587: "mussels", 2589: "scallops", 2591: "venus_clams", 2592: "goose_barnacles", 2593: "cockles", 2594: "razor_clams_small", 2595: "razor_clams_medium", 2596: "razor_clams_large", 2597: "mussels_in_sauce", 2598: "bottling_soft", 2599: "bottling_medium", 2600: "bottling_hard", 2601: "melt_chocolate", 2602: "dissolve_gelatine", 2603: "sweat_onions", 2604: "cook_bacon", 2605: "heating_damp_flannels", 2606: "decrystallise_honey", 2607: "make_yoghurt", 2687: "toffee_date_dessert_one_large", 2694: "beef_tenderloin_medaillons_1_cm_low_temperature_cooking", 2695: "beef_tenderloin_medaillons_2_cm_low_temperature_cooking", 2696: "beef_tenderloin_medaillons_3_cm_low_temperature_cooking", 3373: "wild_rice", 3376: "wholegrain_rice", 3380: "parboiled_rice_steam_cooking", 3381: "parboiled_rice_rapid_steam_cooking", 3383: "basmati_rice_steam_cooking", 3384: "basmati_rice_rapid_steam_cooking", 3386: "jasmine_rice_steam_cooking", 3387: "jasmine_rice_rapid_steam_cooking", 3389: "huanghuanian_steam_cooking", 3390: "huanghuanian_rapid_steam_cooking", 3392: "simiao_steam_cooking", 3393: "simiao_rapid_steam_cooking", 3395: "long_grain_rice_general_steam_cooking", 3396: "long_grain_rice_general_rapid_steam_cooking", 3398: "chongming_steam_cooking", 3399: "chongming_rapid_steam_cooking", 3401: "wuchang_steam_cooking", 3402: "wuchang_rapid_steam_cooking", 3404: "uonumma_koshihikari_steam_cooking", 3405: "uonumma_koshihikari_rapid_steam_cooking", 3407: "sheyang_steam_cooking", 3408: "sheyang_rapid_steam_cooking", 3410: "round_grain_rice_general_steam_cooking", 3411: "round_grain_rice_general_rapid_steam_cooking", } STATE_PROGRAM_ID: dict[int, dict[int, str]] = { MieleAppliance.WASHING_MACHINE: WASHING_MACHINE_PROGRAM_ID, MieleAppliance.TUMBLE_DRYER: TUMBLE_DRYER_PROGRAM_ID, MieleAppliance.DISHWASHER: DISHWASHER_PROGRAM_ID, MieleAppliance.DISH_WARMER: DISH_WARMER_PROGRAM_ID, MieleAppliance.OVEN: OVEN_PROGRAM_ID, MieleAppliance.OVEN_MICROWAVE: OVEN_PROGRAM_ID, MieleAppliance.STEAM_OVEN_MK2: OVEN_PROGRAM_ID, MieleAppliance.STEAM_OVEN: OVEN_PROGRAM_ID, MieleAppliance.STEAM_OVEN_COMBI: OVEN_PROGRAM_ID, MieleAppliance.STEAM_OVEN_MICRO: STEAM_OVEN_MICRO_PROGRAM_ID, MieleAppliance.WASHER_DRYER: WASHING_MACHINE_PROGRAM_ID, MieleAppliance.ROBOT_VACUUM_CLEANER: ROBOT_VACUUM_CLEANER_PROGRAM_ID, MieleAppliance.COFFEE_SYSTEM: COFFEE_SYSTEM_PROGRAM_ID, }